Better testing of SkCodec to 565
If getPixels returns an unexpected result, do not create a digest
and compare it to digests for premul and unpremul.
Print a better error message, including the name of the image and
string versions of the SkCodec::Result.
Change-Id: Ie98e350a1ef91c0745fe9de0855192e5793e033c
Reviewed-on: https://skia-review.googlesource.com/c/176582
Auto-Submit: Leon Scroggins <scroggo@google.com>
Reviewed-by: Nigel Tao <nigeltao@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
diff --git a/tests/CodecTest.cpp b/tests/CodecTest.cpp
index 4656d87..bd988f6 100644
--- a/tests/CodecTest.cpp
+++ b/tests/CodecTest.cpp
@@ -169,9 +169,9 @@
}
template<typename Codec>
-static void test_codec(skiatest::Reporter* r, Codec* codec, SkBitmap& bm, const SkImageInfo& info,
- const SkISize& size, SkCodec::Result expectedResult, SkMD5::Digest* digest,
- const SkMD5::Digest* goodDigest) {
+static void test_codec(skiatest::Reporter* r, const char* path, Codec* codec, SkBitmap& bm,
+ const SkImageInfo& info, const SkISize& size, SkCodec::Result expectedResult,
+ SkMD5::Digest* digest, const SkMD5::Digest* goodDigest) {
REPORTER_ASSERT(r, info.dimensions() == size);
bm.allocPixels(info);
@@ -195,16 +195,21 @@
// This will allow comparison even if the image is incomplete.
bm565.eraseColor(SK_ColorBLACK);
- REPORTER_ASSERT(r, expectedResult == codec->getPixels(info565,
- bm565.getPixels(), bm565.rowBytes()));
+ auto actualResult = codec->getPixels(info565, bm565.getPixels(), bm565.rowBytes());
+ if (actualResult == expectedResult) {
+ SkMD5::Digest digest565;
+ md5(bm565, &digest565);
- SkMD5::Digest digest565;
- md5(bm565, &digest565);
-
- // A dumb client's request for non-opaque should also succeed.
- for (auto alpha : { kPremul_SkAlphaType, kUnpremul_SkAlphaType }) {
- info565 = info565.makeAlphaType(alpha);
- test_info(r, codec, info565, expectedResult, &digest565);
+ // A request for non-opaque should also succeed.
+ for (auto alpha : { kPremul_SkAlphaType, kUnpremul_SkAlphaType }) {
+ info565 = info565.makeAlphaType(alpha);
+ test_info(r, codec, info565, expectedResult, &digest565);
+ }
+ } else {
+ ERRORF(r, "Decoding %s to 565 failed with result \"%s\"\n\t\t\t\texpected:\"%s\"",
+ path,
+ SkCodec::ResultToString(actualResult),
+ SkCodec::ResultToString(expectedResult));
}
} else {
test_info(r, codec, info565, SkCodec::kInvalidConversion, nullptr);
@@ -310,7 +315,7 @@
SkBitmap bm;
SkCodec::Result expectedResult =
supportsIncomplete ? SkCodec::kIncompleteInput : SkCodec::kSuccess;
- test_codec(r, codec.get(), bm, info, size, expectedResult, &codecDigest, nullptr);
+ test_codec(r, path, codec.get(), bm, info, size, expectedResult, &codecDigest, nullptr);
// Scanline decoding follows.
@@ -436,7 +441,7 @@
SkBitmap bm;
SkMD5::Digest androidCodecDigest;
- test_codec(r, androidCodec.get(), bm, info, size, expectedResult, &androidCodecDigest,
+ test_codec(r, path, androidCodec.get(), bm, info, size, expectedResult, &androidCodecDigest,
&codecDigest);
}