aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/DynamicHashTest.cpp
diff options
context:
space:
mode:
authorGravatar robertphillips <robertphillips@google.com>2014-07-20 09:40:00 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2014-07-20 09:40:00 -0700
commit3d533ac917eaadf2fb3561f57d7266d8c0e665fd (patch)
treee1a710cf8756032da254ec484a4bb6128e61086d /tests/DynamicHashTest.cpp
parent249171e7d29b5559f3eefe9dbd437030bfad3fda (diff)
Replace GrTHash with SkTDynamicHash
Mike: SkTDynamicHash changes Brian: Ganesh changes This removes three instances of GrTHash leaving the ones in GrTextStrike.h R=mtklein@google.com, bsalomon@google.com Author: robertphillips@google.com Review URL: https://codereview.chromium.org/402693003
Diffstat (limited to 'tests/DynamicHashTest.cpp')
-rw-r--r--tests/DynamicHashTest.cpp53
1 files changed, 48 insertions, 5 deletions
diff --git a/tests/DynamicHashTest.cpp b/tests/DynamicHashTest.cpp
index b2da6f3888..4a5bb850f8 100644
--- a/tests/DynamicHashTest.cpp
+++ b/tests/DynamicHashTest.cpp
@@ -136,12 +136,12 @@ DEF_TEST(DynamicHash_remove, reporter) {
ASSERT(hash.find(5)->value == 3.0);
}
-DEF_TEST(DynamicHash_iterator, reporter) {
+template<typename T> static void TestIter(skiatest::Reporter* reporter) {
Hash hash;
int count = 0;
// this should fall out of loop immediately
- for (Hash::Iter iter(&hash); !iter.done(); ++iter) {
+ for (T iter(&hash); !iter.done(); ++iter) {
++count;
}
ASSERT(0 == count);
@@ -158,7 +158,7 @@ DEF_TEST(DynamicHash_iterator, reporter) {
// should see all 3 unique keys when iterating over hash
count = 0;
int keys[3] = {0, 0, 0};
- for (Hash::Iter iter(&hash); !iter.done(); ++iter) {
+ for (T iter(&hash); !iter.done(); ++iter) {
int key = (*iter).key;
keys[count] = key;
ASSERT(hash.find(key) != NULL);
@@ -172,8 +172,8 @@ DEF_TEST(DynamicHash_iterator, reporter) {
// should see 2 unique keys when iterating over hash that aren't 1
hash.remove(1);
count = 0;
- memset(keys,0,sizeof(keys));
- for (Hash::Iter iter(&hash); !iter.done(); ++iter) {
+ memset(keys, 0, sizeof(keys));
+ for (T iter(&hash); !iter.done(); ++iter) {
int key = (*iter).key;
keys[count] = key;
ASSERT(key != 1);
@@ -183,3 +183,46 @@ DEF_TEST(DynamicHash_iterator, reporter) {
ASSERT(2 == count);
ASSERT(keys[0] != keys[1]);
}
+
+DEF_TEST(DynamicHash_iterator, reporter) {
+ TestIter<Hash::Iter>(reporter);
+ TestIter<Hash::ConstIter>(reporter);
+}
+
+static void TestResetOrRewind(skiatest::Reporter* reporter, bool testReset) {
+ Hash hash;
+ Entry a = { 1, 2.0 };
+ Entry b = { 2, 3.0 };
+
+ ASSERT(hash.capacity() == 0);
+ hash.add(&a);
+ hash.add(&b);
+ ASSERT(hash.count() == 2);
+ ASSERT(hash.capacity() == 4);
+
+ if (testReset) {
+ hash.reset();
+ ASSERT(hash.capacity() == 0);
+ } else {
+ hash.rewind();
+ ASSERT(hash.capacity() == 4);
+ }
+ ASSERT(hash.count() == 0);
+
+ // make sure things still work
+ hash.add(&a);
+ hash.add(&b);
+ ASSERT(hash.count() == 2);
+ ASSERT(hash.capacity() == 4);
+
+ ASSERT(hash.find(1) != NULL);
+ ASSERT(hash.find(2) != NULL);
+}
+
+DEF_TEST(DynamicHash_reset, reporter) {
+ TestResetOrRewind(reporter, true);
+}
+
+DEF_TEST(DynamicHash_rewind, reporter) {
+ TestResetOrRewind(reporter, false);
+}