Index: tests/CodexTest.cpp |
diff --git a/tests/CodexTest.cpp b/tests/CodexTest.cpp |
index 32968fdb7a91b06ce62066e4dec51e9d6a2a86bf..f4682055a42d8a67f17a578781774b6536d7e5cb 100644 |
--- a/tests/CodexTest.cpp |
+++ b/tests/CodexTest.cpp |
@@ -28,6 +28,19 @@ static void md5(const SkBitmap& bm, SkMD5::Digest* digest) { |
md5.finish(*digest); |
} |
+/** |
+ * Compute the digest for bm and compare it to a known good digest. |
+ * @param r Reporter to assert that bm's digest matches goodDigest. |
+ * @param goodDigest The known good digest to compare to. |
+ * @param bm The bitmap to test. |
+ */ |
+static void compare_to_good_digest(skiatest::Reporter* r, const SkMD5::Digest& goodDigest, |
+ const SkBitmap& bm) { |
+ SkMD5::Digest digest; |
+ md5(bm, &digest); |
+ REPORTER_ASSERT(r, digest == goodDigest); |
+} |
+ |
static void check(skiatest::Reporter* r, |
const char path[], |
SkISize size, |
@@ -56,8 +69,8 @@ static void check(skiatest::Reporter* r, |
codec->getPixels(info, bm.getPixels(), bm.rowBytes(), NULL, NULL, NULL); |
REPORTER_ASSERT(r, result == SkCodec::kSuccess); |
- SkMD5::Digest digest1, digest2; |
- md5(bm, &digest1); |
+ SkMD5::Digest digest; |
+ md5(bm, &digest); |
bm.eraseColor(SK_ColorYELLOW); |
@@ -66,25 +79,26 @@ static void check(skiatest::Reporter* r, |
REPORTER_ASSERT(r, result == SkCodec::kSuccess); |
// verify that re-decoding gives the same result. |
- md5(bm, &digest2); |
- REPORTER_ASSERT(r, digest1 == digest2); |
+ compare_to_good_digest(r, digest, bm); |
- SkScanlineDecoder* scanlineDecoder = codec->getScanlineDecoder(info); |
+ SkAutoTDelete<SkScanlineDecoder> scanlineDecoder(codec->getScanlineDecoder(info)); |
if (supportsScanlineDecoding) { |
bm.eraseColor(SK_ColorYELLOW); |
REPORTER_ASSERT(r, scanlineDecoder); |
- // Regular decodes should be disabled after creating a scanline decoder |
+ // Regular decodes should not be affected by creating a scanline decoder |
result = codec->getPixels(info, bm.getPixels(), bm.rowBytes(), NULL, NULL, NULL); |
- REPORTER_ASSERT(r, SkCodec::kInvalidParameters == result); |
+ REPORTER_ASSERT(r, SkCodec::kSuccess == result); |
+ compare_to_good_digest(r, digest, bm); |
+ |
+ bm.eraseColor(SK_ColorYELLOW); |
+ |
for (int y = 0; y < info.height(); y++) { |
result = scanlineDecoder->getScanlines(bm.getAddr(0, y), 1, 0); |
REPORTER_ASSERT(r, result == SkCodec::kSuccess); |
} |
// verify that scanline decoding gives the same result. |
- SkMD5::Digest digest3; |
- md5(bm, &digest3); |
- REPORTER_ASSERT(r, digest3 == digest1); |
+ compare_to_good_digest(r, digest, bm); |
} else { |
REPORTER_ASSERT(r, !scanlineDecoder); |
} |