aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar mike@reedtribe.org <mike@reedtribe.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-07-09 01:53:07 +0000
committerGravatar mike@reedtribe.org <mike@reedtribe.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-07-09 01:53:07 +0000
commite60b9106ba4405fc499ac9f66ae7379327f0ff86 (patch)
tree032864d52809210dacfee0cd584aa9b0a58d9d45 /tests
parent9ef23a3e055fb331621d870aff1931f2ac6c4a78 (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.cpp28
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