aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
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