diff --git a/tests/SortTest.cpp b/tests/SortTest.cpp
index 4a5631d..2ca8f2f 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 @@
     if (false) { // avoid bit rot, suppress warning
         compare_int(array, array);
     }
+    
+    test_checksum(reporter);
 }
 
 // need tests for SkStrSearch
