1908f5836626d792c5e33ad93f44c6a418a0cc8f5epoger@google.com/* 2908f5836626d792c5e33ad93f44c6a418a0cc8f5epoger@google.com * Copyright 2013 Google Inc. 3908f5836626d792c5e33ad93f44c6a418a0cc8f5epoger@google.com * 4908f5836626d792c5e33ad93f44c6a418a0cc8f5epoger@google.com * Use of this source code is governed by a BSD-style license that can be 5908f5836626d792c5e33ad93f44c6a418a0cc8f5epoger@google.com * found in the LICENSE file. 6908f5836626d792c5e33ad93f44c6a418a0cc8f5epoger@google.com */ 7908f5836626d792c5e33ad93f44c6a418a0cc8f5epoger@google.com 8908f5836626d792c5e33ad93f44c6a418a0cc8f5epoger@google.com#include "SkBitmapHasher.h" 9452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org 10452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org#include "SkBitmap.h" 11908f5836626d792c5e33ad93f44c6a418a0cc8f5epoger@google.com#include "SkColor.h" 12452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org#include "Test.h" 13908f5836626d792c5e33ad93f44c6a418a0cc8f5epoger@google.com 14908f5836626d792c5e33ad93f44c6a418a0cc8f5epoger@google.com// Word size that is large enough to hold results of any checksum type. 15908f5836626d792c5e33ad93f44c6a418a0cc8f5epoger@google.comtypedef uint64_t checksum_result; 16908f5836626d792c5e33ad93f44c6a418a0cc8f5epoger@google.com 17452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org// Fill in bitmap with test data. 188ef51b975c2bdb8fa332f091863e5410c18576c7commit-bot@chromium.orgstatic void CreateTestBitmap(SkBitmap* bitmap, int width, int height, 19452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org SkColor color, skiatest::Reporter* reporter) { 208ef51b975c2bdb8fa332f091863e5410c18576c7commit-bot@chromium.org SkImageInfo info = SkImageInfo::MakeN32(width, height, kOpaque_SkAlphaType); 218ef51b975c2bdb8fa332f091863e5410c18576c7commit-bot@chromium.org REPORTER_ASSERT(reporter, bitmap->allocPixels(info)); 228ef51b975c2bdb8fa332f091863e5410c18576c7commit-bot@chromium.org bitmap->eraseColor(color); 23452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org} 24908f5836626d792c5e33ad93f44c6a418a0cc8f5epoger@google.com 25452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.orgDEF_TEST(BitmapHasher, reporter) { 26452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org // Test SkBitmapHasher 27452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org SkBitmap bitmap; 28452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org uint64_t digest; 29452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org // initial test case 308ef51b975c2bdb8fa332f091863e5410c18576c7commit-bot@chromium.org CreateTestBitmap(&bitmap, 333, 555, SK_ColorBLUE, reporter); 31452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org REPORTER_ASSERT(reporter, SkBitmapHasher::ComputeDigest(bitmap, &digest)); 32452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org REPORTER_ASSERT(reporter, digest == 0xfb2903562766ef87ULL); 33452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org // same pixel data but different dimensions should yield a different checksum 348ef51b975c2bdb8fa332f091863e5410c18576c7commit-bot@chromium.org CreateTestBitmap(&bitmap, 555, 333, SK_ColorBLUE, reporter); 35452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org REPORTER_ASSERT(reporter, SkBitmapHasher::ComputeDigest(bitmap, &digest)); 36452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org REPORTER_ASSERT(reporter, digest == 0xfe04023fb97d0f61ULL); 37452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org // same dimensions but different color should yield a different checksum 388ef51b975c2bdb8fa332f091863e5410c18576c7commit-bot@chromium.org CreateTestBitmap(&bitmap, 555, 333, SK_ColorGREEN, reporter); 39452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org REPORTER_ASSERT(reporter, SkBitmapHasher::ComputeDigest(bitmap, &digest)); 40452eecb4436f27e057d4d2df26e3a70020a817b6tfarina@chromium.org REPORTER_ASSERT(reporter, digest == 0x2423c51cad6d1edcULL); 41908f5836626d792c5e33ad93f44c6a418a0cc8f5epoger@google.com} 42