Add image export roundtrip automation
This commit is contained in:
@@ -5,8 +5,10 @@
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <span>
|
||||
#include <vector>
|
||||
|
||||
using pp::assets::decode_png_rgba8;
|
||||
using pp::assets::encode_png_rgba8;
|
||||
using pp::foundation::StatusCode;
|
||||
|
||||
namespace {
|
||||
@@ -56,6 +58,36 @@ void rejects_corrupt_png_payload(pp::tests::Harness& h)
|
||||
PP_EXPECT(h, image.status().code == StatusCode::invalid_argument);
|
||||
}
|
||||
|
||||
void encodes_rgba8_pixels_to_decodable_png(pp::tests::Harness& h)
|
||||
{
|
||||
const std::vector<std::uint8_t> pixels {
|
||||
255, 0, 0, 255,
|
||||
0, 255, 0, 128,
|
||||
};
|
||||
|
||||
const auto encoded = encode_png_rgba8(2, 1, pixels);
|
||||
|
||||
PP_EXPECT(h, encoded.ok());
|
||||
const auto decoded = decode_png_rgba8(encoded.value());
|
||||
PP_EXPECT(h, decoded.ok());
|
||||
PP_EXPECT(h, decoded.value().width == 2U);
|
||||
PP_EXPECT(h, decoded.value().height == 1U);
|
||||
PP_EXPECT(h, decoded.value().pixels == pixels);
|
||||
}
|
||||
|
||||
void rejects_invalid_png_encode_inputs(pp::tests::Harness& h)
|
||||
{
|
||||
const std::vector<std::uint8_t> pixels { 0, 0, 0, 0 };
|
||||
|
||||
const auto no_size = encode_png_rgba8(0, 1, pixels);
|
||||
const auto wrong_payload_size = encode_png_rgba8(2, 1, pixels);
|
||||
|
||||
PP_EXPECT(h, !no_size.ok());
|
||||
PP_EXPECT(h, no_size.status().code == StatusCode::invalid_argument);
|
||||
PP_EXPECT(h, !wrong_payload_size.ok());
|
||||
PP_EXPECT(h, wrong_payload_size.status().code == StatusCode::invalid_argument);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int main()
|
||||
@@ -63,5 +95,7 @@ int main()
|
||||
pp::tests::Harness harness;
|
||||
harness.run("decodes_png_to_rgba8_pixels", decodes_png_to_rgba8_pixels);
|
||||
harness.run("rejects_corrupt_png_payload", rejects_corrupt_png_payload);
|
||||
harness.run("encodes_rgba8_pixels_to_decodable_png", encodes_rgba8_pixels_to_decodable_png);
|
||||
harness.run("rejects_invalid_png_encode_inputs", rejects_invalid_png_encode_inputs);
|
||||
return harness.finish();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user