Add image export roundtrip automation

This commit is contained in:
2026-06-02 10:41:34 +02:00
parent 9d05d193a7
commit 9c6b52eb8e
8 changed files with 303 additions and 6 deletions

View File

@@ -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();
}