diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/SortTest.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/SortTest.cpp b/tests/SortTest.cpp index 4a5631daef..2ca8f2f614 100644 --- a/tests/SortTest.cpp +++ b/tests/SortTest.cpp @@ -7,8 +7,34 @@ */ #include "Test.h" #include "SkRandom.h" +#include "SkChecksum.h" #include "SkTSort.h" +// assert that as we change values (from 0 to non-zero) in our buffer, we +// get a different value +static void test_checksum(skiatest::Reporter* reporter, size_t size) { + SkAutoMalloc storage(size); + uint32_t* ptr = (uint32_t*)storage.get(); + char* cptr = (char*)ptr; + + sk_bzero(ptr, size); + uint32_t prev = 0; + for (size_t i = 0; i < size; ++i) { + cptr[i] = 0x5B; // just need some non-zero value here + uint32_t curr = SkChecksum::Compute(ptr, size); + REPORTER_ASSERT(reporter, prev != curr); + prev = curr; + } +} + +static void test_checksum(skiatest::Reporter* reporter) { + REPORTER_ASSERT(reporter, SkChecksum::Compute(NULL, 0) == 0); + + for (size_t size = 4; size <= 1000; size += 4) { + test_checksum(reporter, size); + } +} + extern "C" { static int compare_int(const void* a, const void* b) { return *(const int*)a - *(const int*)b; @@ -47,6 +73,8 @@ static void TestSort(skiatest::Reporter* reporter) { if (false) { // avoid bit rot, suppress warning compare_int(array, array); } + + test_checksum(reporter); } // need tests for SkStrSearch |