Index: tests/LListTest.cpp |
diff --git a/tests/LListTest.cpp b/tests/LListTest.cpp |
index 6b373e33aca9e1b456bda8d29da1a970403db8a6..4709982d3c63c3c69bf660765441eaf0d1a31de3 100644 |
--- a/tests/LListTest.cpp |
+++ b/tests/LListTest.cpp |
@@ -23,9 +23,12 @@ public: |
int fID; |
+ SK_DECLARE_NAMED_INTERNAL_LLIST_INTERFACE(ListElement, NamedList); |
private: |
SK_DECLARE_INST_COUNT_ROOT(ListElement); |
SK_DECLARE_INTERNAL_LLIST_INTERFACE(ListElement); |
+ |
+ SK_DECLARE_NAMED_INTERNAL_LLIST_INTERFACE_DATA(ListElement, NamedList); |
}; |
SK_DEFINE_INST_COUNT(ListElement); |
@@ -121,6 +124,60 @@ static void TestTInternalLList(skiatest::Reporter* reporter) { |
} |
} |
+static void TestNamedTInternalLList(skiatest::Reporter* reporter) { |
+ SK_DECLARE_NAMED_INTERNAL_LLIST(ListElement, NamedList, list); |
+ ListElement elements[4] = { |
+ ListElement(0), |
+ ListElement(1), |
+ ListElement(2), |
+ ListElement(3), |
+ }; |
+ list.addToHead(&elements[0]); |
+ list.addToHead(&elements[1]); |
+ list.addToHead(&elements[2]); |
+ list.addToHead(&elements[3]); |
+ |
+ |
+ NamedListInternalLListType::Iter iter; |
+ ListElement* e = iter.init(list, NamedListInternalLListType::Iter::kTail_IterStart); |
+ REPORTER_ASSERT(reporter, e == &elements[0]); |
+ REPORTER_ASSERT(reporter, iter.prev() == &elements[1]); |
+ REPORTER_ASSERT(reporter, iter.prev() == &elements[2]); |
+ REPORTER_ASSERT(reporter, iter.prev() == &elements[3]); |
+ REPORTER_ASSERT(reporter, iter.prev() == NULL); |
+} |
+ |
+struct ElementFinder { |
+ ElementFinder(int id) |
+ : fID(id) { |
+ } |
+ |
+ bool operator()(const ListElement* element) const { |
+ return element->fID == fID; |
+ } |
+ |
+ int fID; |
+}; |
+ |
+ |
+static void TestTInternalLListFind(skiatest::Reporter* reporter) { |
+ SK_DECLARE_NAMED_INTERNAL_LLIST(ListElement, NamedList, list); |
+ ListElement elements[4] = { |
+ ListElement(0), |
+ ListElement(1), |
+ ListElement(2), |
+ ListElement(3), |
+ }; |
+ list.addToHead(&elements[0]); |
+ list.addToHead(&elements[1]); |
+ list.addToHead(&elements[2]); |
+ list.addToHead(&elements[3]); |
+ |
+ for (size_t i = 0; i < SK_ARRAY_COUNT(elements); ++i) { |
+ REPORTER_ASSERT(reporter, &elements[i] == list.find(ElementFinder(elements[i].fID))); |
+ } |
+} |
+ |
static void TestTLList(skiatest::Reporter* reporter) { |
typedef SkTLList<ListElement> ElList; |
typedef ElList::Iter Iter; |
@@ -314,7 +371,10 @@ static void TestTLList(skiatest::Reporter* reporter) { |
static void test_llists(skiatest::Reporter* reporter) { |
TestTInternalLList(reporter); |
+ TestNamedTInternalLList(reporter); |
+ TestTInternalLListFind(reporter); |
TestTLList(reporter); |
+ |
} |
#include "TestClassDef.h" |