diff options
author | 2011-01-25 23:36:05 +0000 | |
---|---|---|
committer | 2011-01-25 23:36:05 +0000 | |
commit | 0e190d0e126991cfba4bc7415c1911761d7be87b (patch) | |
tree | 93cee043ffa6c09206bd63ff523d0bd17f8e31f4 /tests | |
parent | 02cc5aa736086320649d8a932515691ae18a0dd5 (diff) |
add refdict class, for holding a dictionary of reference-counted objects
-- experimental
git-svn-id: http://skia.googlecode.com/svn/trunk@730 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tests')
-rw-r--r-- | tests/RefDictTest.cpp | 52 | ||||
-rw-r--r-- | tests/tests_files.mk | 1 |
2 files changed, 53 insertions, 0 deletions
diff --git a/tests/RefDictTest.cpp b/tests/RefDictTest.cpp new file mode 100644 index 0000000000..61f64e9a2c --- /dev/null +++ b/tests/RefDictTest.cpp @@ -0,0 +1,52 @@ +#include "Test.h" +#include "SkRefDict.h" + +class TestRC : public SkRefCnt { +}; + +static void TestRefDict(skiatest::Reporter* reporter) { + TestRC data0, data1; + SkRefDict dict; + + REPORTER_ASSERT(reporter, NULL == dict.find(NULL)); + REPORTER_ASSERT(reporter, NULL == dict.find("foo")); + REPORTER_ASSERT(reporter, NULL == dict.find("bar")); + + dict.set("foo", &data0); + REPORTER_ASSERT(reporter, &data0 == dict.find("foo")); + REPORTER_ASSERT(reporter, 2 == data0.getRefCnt()); + + dict.set("foo", &data0); + REPORTER_ASSERT(reporter, &data0 == dict.find("foo")); + REPORTER_ASSERT(reporter, 2 == data0.getRefCnt()); + + dict.set("foo", &data1); + REPORTER_ASSERT(reporter, &data1 == dict.find("foo")); + REPORTER_ASSERT(reporter, 1 == data0.getRefCnt()); + REPORTER_ASSERT(reporter, 2 == data1.getRefCnt()); + + dict.set("foo", NULL); + REPORTER_ASSERT(reporter, NULL == dict.find("foo")); + REPORTER_ASSERT(reporter, 1 == data0.getRefCnt()); + REPORTER_ASSERT(reporter, 1 == data1.getRefCnt()); + + dict.set("foo", &data0); + dict.set("bar", &data1); + REPORTER_ASSERT(reporter, &data0 == dict.find("foo")); + REPORTER_ASSERT(reporter, &data1 == dict.find("bar")); + REPORTER_ASSERT(reporter, 2 == data0.getRefCnt()); + REPORTER_ASSERT(reporter, 2 == data1.getRefCnt()); + + dict.set("foo", &data1); + REPORTER_ASSERT(reporter, &data1 == dict.find("foo")); + REPORTER_ASSERT(reporter, &data1 == dict.find("bar")); + REPORTER_ASSERT(reporter, 1 == data0.getRefCnt()); + REPORTER_ASSERT(reporter, 3 == data1.getRefCnt()); + + dict.removeAll(); + REPORTER_ASSERT(reporter, NULL == dict.find("foo")); + REPORTER_ASSERT(reporter, NULL == dict.find("bar")); +} + +#include "TestClassDef.h" +DEFINE_TESTCLASS("RefDict", RefDictTestClass, TestRefDict) diff --git a/tests/tests_files.mk b/tests/tests_files.mk index 0911c3f009..cc21c7c6f7 100644 --- a/tests/tests_files.mk +++ b/tests/tests_files.mk @@ -13,6 +13,7 @@ SOURCE := \ ParsePathTest.cpp \ PathMeasureTest.cpp \ PathTest.cpp \ + RefDictTest.cpp \ RegionTest.cpp \ Sk64Test.cpp \ skia_test.cpp \ |