aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/ChecksumTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ChecksumTest.cpp')
-rw-r--r--tests/ChecksumTest.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/ChecksumTest.cpp b/tests/ChecksumTest.cpp
index e8a2f253b0..03194907f5 100644
--- a/tests/ChecksumTest.cpp
+++ b/tests/ChecksumTest.cpp
@@ -6,8 +6,12 @@
* found in the LICENSE file.
*/
#include "Test.h"
+
+#include "SkBitmap.h"
+#include "SkBitmapChecksummer.h"
#include "SkChecksum.h"
#include "SkCityHash.h"
+#include "SkColor.h"
// Word size that is large enough to hold results of any checksum type.
typedef uint64_t checksum_result;
@@ -103,6 +107,15 @@ namespace skiatest {
return result;
}
+ // Fill in bitmap with test data.
+ void CreateTestBitmap(SkBitmap &bitmap, SkBitmap::Config config, int width, int height,
+ SkColor color) {
+ bitmap.setConfig(config, width, height);
+ REPORTER_ASSERT(fReporter, bitmap.allocPixels());
+ bitmap.setIsOpaque(true);
+ bitmap.eraseColor(color);
+ }
+
void RunTest() {
// Test self-consistency of checksum algorithms.
fWhichAlgorithm = kSkChecksum;
@@ -143,6 +156,25 @@ namespace skiatest {
GetTestDataChecksum(128) == GetTestDataChecksum(256));
REPORTER_ASSERT(fReporter,
GetTestDataChecksum(132) == GetTestDataChecksum(260));
+
+ // Test SkBitmapChecksummer
+ SkBitmap bitmap;
+ // initial test case
+ CreateTestBitmap(bitmap, SkBitmap::kARGB_8888_Config, 333, 555, SK_ColorBLUE);
+ REPORTER_ASSERT(fReporter,
+ SkBitmapChecksummer::Compute64(bitmap) == 0x18f9df68b1b02f38ULL);
+ // same pixel data but different dimensions should yield a different checksum
+ CreateTestBitmap(bitmap, SkBitmap::kARGB_8888_Config, 555, 333, SK_ColorBLUE);
+ REPORTER_ASSERT(fReporter,
+ SkBitmapChecksummer::Compute64(bitmap) == 0x6b0298183f786c8eULL);
+ // same dimensions but different color should yield a different checksum
+ CreateTestBitmap(bitmap, SkBitmap::kARGB_8888_Config, 555, 333, SK_ColorGREEN);
+ REPORTER_ASSERT(fReporter,
+ SkBitmapChecksummer::Compute64(bitmap) == 0xc6b4b3f6fadaaf37ULL);
+ // same pixel colors in a different config should yield the same checksum
+ CreateTestBitmap(bitmap, SkBitmap::kARGB_4444_Config, 555, 333, SK_ColorGREEN);
+ REPORTER_ASSERT(fReporter,
+ SkBitmapChecksummer::Compute64(bitmap) == 0xc6b4b3f6fadaaf37ULL);
}
Reporter* fReporter;