1bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org/* 2bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org * Copyright 2010 Google Inc. 3bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org * 4bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org * Use of this source code is governed by a BSD-style license that can be 5bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org * found in the LICENSE file. 6bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org */ 7bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org 8bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org// This is a GPU-backend specific test 9bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org#if SK_SUPPORT_GPU 10bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org 11744998e666073166307d2522847b2536000a7619bsalomon#include "GrMurmur3HashKey.h" 12bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org#include "GrBinHashKey.h" 13bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org 14bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org#include "Test.h" 15bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org 163d533ac917eaadf2fb3561f57d7266d8c0e665fdrobertphillipstemplate<typename KeyType> static void TestHash(skiatest::Reporter* reporter) { 17bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org const char* testStringA_ = "abcdABCD"; 18bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org const char* testStringB_ = "abcdBBCD"; 19bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org const uint32_t* testStringA = reinterpret_cast<const uint32_t*>(testStringA_); 20bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org const uint32_t* testStringB = reinterpret_cast<const uint32_t*>(testStringB_); 21bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org 223d533ac917eaadf2fb3561f57d7266d8c0e665fdrobertphillips KeyType keyA; 23bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org keyA.setKeyData(testStringA); 24bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org // test copy constructor and comparison 253d533ac917eaadf2fb3561f57d7266d8c0e665fdrobertphillips KeyType keyA2(keyA); 26bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org REPORTER_ASSERT(reporter, keyA == keyA2); 27bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org REPORTER_ASSERT(reporter, keyA.getHash() == keyA2.getHash()); 28bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org // test re-init 29bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org keyA2.setKeyData(testStringA); 30bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org REPORTER_ASSERT(reporter, keyA == keyA2); 31bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org REPORTER_ASSERT(reporter, keyA.getHash() == keyA2.getHash()); 32bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org // test sorting 333d533ac917eaadf2fb3561f57d7266d8c0e665fdrobertphillips KeyType keyB; 34bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org keyB.setKeyData(testStringB); 35bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org REPORTER_ASSERT(reporter, keyA.getHash() != keyB.getHash()); 36bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org} 37bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org 383d533ac917eaadf2fb3561f57d7266d8c0e665fdrobertphillips 393d533ac917eaadf2fb3561f57d7266d8c0e665fdrobertphillipsDEF_TEST(GrBinHashKey, reporter) { 403d533ac917eaadf2fb3561f57d7266d8c0e665fdrobertphillips enum { 413d533ac917eaadf2fb3561f57d7266d8c0e665fdrobertphillips kDataLenUsedForKey = 8 423d533ac917eaadf2fb3561f57d7266d8c0e665fdrobertphillips }; 433d533ac917eaadf2fb3561f57d7266d8c0e665fdrobertphillips 443d533ac917eaadf2fb3561f57d7266d8c0e665fdrobertphillips TestHash<GrBinHashKey<kDataLenUsedForKey> >(reporter); 453d533ac917eaadf2fb3561f57d7266d8c0e665fdrobertphillips TestHash<GrMurmur3HashKey<kDataLenUsedForKey> >(reporter); 463d533ac917eaadf2fb3561f57d7266d8c0e665fdrobertphillips} 473d533ac917eaadf2fb3561f57d7266d8c0e665fdrobertphillips 48bbff20855ff28d377e9ca2e76bd35810ea46994dtfarina@chromium.org#endif 49