1 /* 2 * Copyright 2013 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #include "SkBitmapHasher.h" 9 10 #include "SkBitmap.h" 11 #include "SkColor.h" 12 #include "Test.h" 13 14 // Word size that is large enough to hold results of any checksum type. 15 typedef uint64_t checksum_result; 16 17 // Fill in bitmap with test data. 18 static void CreateTestBitmap(SkBitmap* bitmap, int width, int height, 19 SkColor color, skiatest::Reporter* reporter) { 20 SkImageInfo info = SkImageInfo::MakeN32(width, height, kOpaque_SkAlphaType); 21 REPORTER_ASSERT(reporter, bitmap->allocPixels(info)); 22 bitmap->eraseColor(color); 23 } 24 25 DEF_TEST(BitmapHasher, reporter) { 26 // Test SkBitmapHasher 27 SkBitmap bitmap; 28 uint64_t digest; 29 // initial test case 30 CreateTestBitmap(&bitmap, 333, 555, SK_ColorBLUE, reporter); 31 REPORTER_ASSERT(reporter, SkBitmapHasher::ComputeDigest(bitmap, &digest)); 32 REPORTER_ASSERT(reporter, digest == 0xfb2903562766ef87ULL); 33 // same pixel data but different dimensions should yield a different checksum 34 CreateTestBitmap(&bitmap, 555, 333, SK_ColorBLUE, reporter); 35 REPORTER_ASSERT(reporter, SkBitmapHasher::ComputeDigest(bitmap, &digest)); 36 REPORTER_ASSERT(reporter, digest == 0xfe04023fb97d0f61ULL); 37 // same dimensions but different color should yield a different checksum 38 CreateTestBitmap(&bitmap, 555, 333, SK_ColorGREEN, reporter); 39 REPORTER_ASSERT(reporter, SkBitmapHasher::ComputeDigest(bitmap, &digest)); 40 REPORTER_ASSERT(reporter, digest == 0x2423c51cad6d1edcULL); 41 } 42