Home | History | Annotate | Download | only in tests
      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