diff options
author | mike@reedtribe.org <mike@reedtribe.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-07-09 01:53:07 +0000 |
---|---|---|
committer | mike@reedtribe.org <mike@reedtribe.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-07-09 01:53:07 +0000 |
commit | e60b9106ba4405fc499ac9f66ae7379327f0ff86 (patch) | |
tree | 032864d52809210dacfee0cd584aa9b0a58d9d45 /tests | |
parent | 9ef23a3e055fb331621d870aff1931f2ac6c4a78 (diff) |
add test for SkChecksum
git-svn-id: http://skia.googlecode.com/svn/trunk@4462 2bbb7eff-a529-9590-31e7-b0007b416f81
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 |