From 4c09d5cd4b9e6f0be1352f62288efdedc1bc3de3 Mon Sep 17 00:00:00 2001 From: "reed@google.com" Date: Tue, 22 Feb 2011 13:16:38 +0000 Subject: rename SkDeque::Iter to SkDeque::F2BIter, since it runs front-to-back (in preparation for another iter that runs back-to-front (B2FIter). add unittest for Deque git-svn-id: http://skia.googlecode.com/svn/trunk@821 2bbb7eff-a529-9590-31e7-b0007b416f81 --- tests/DequeTest.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 tests/DequeTest.cpp (limited to 'tests/DequeTest.cpp') diff --git a/tests/DequeTest.cpp b/tests/DequeTest.cpp new file mode 100644 index 0000000000..3b8991adda --- /dev/null +++ b/tests/DequeTest.cpp @@ -0,0 +1,62 @@ +#include "Test.h" +#include "SkDeque.h" + +static void assert_count(skiatest::Reporter* reporter, const SkDeque& deq, int count) { + if (0 == count) { + REPORTER_ASSERT(reporter, deq.empty()); + REPORTER_ASSERT(reporter, 0 == deq.count()); + REPORTER_ASSERT(reporter, sizeof(int) == deq.elemSize()); + REPORTER_ASSERT(reporter, NULL == deq.front()); + REPORTER_ASSERT(reporter, NULL == deq.back()); + } else { + REPORTER_ASSERT(reporter, !deq.empty()); + REPORTER_ASSERT(reporter, count == deq.count()); + REPORTER_ASSERT(reporter, sizeof(int) == deq.elemSize()); + REPORTER_ASSERT(reporter, NULL != deq.front()); + REPORTER_ASSERT(reporter, NULL != deq.back()); + if (1 == count) { + REPORTER_ASSERT(reporter, deq.back() == deq.front()); + } else { + REPORTER_ASSERT(reporter, deq.back() != deq.front()); + } + } +} + +static void assert_f2biter(skiatest::Reporter* reporter, const SkDeque& deq, + int max, int min) { + SkDeque::F2BIter iter(deq); + void* ptr; + + int value = max; + while ((ptr = iter.next()) != NULL) { + REPORTER_ASSERT(reporter, value == *(int*)ptr); + value -= 1; + } + REPORTER_ASSERT(reporter, value+1 == min); +} + +static void TestDeque(skiatest::Reporter* reporter) { + SkDeque deq(sizeof(int)); + int i; + + assert_count(reporter, deq, 0); + for (i = 1; i <= 10; i++) { + *(int*)deq.push_front() = i; + } + assert_count(reporter, deq, 10); + assert_f2biter(reporter, deq, 10, 1); + + for (i = 0; i < 5; i++) { + deq.pop_front(); + } + assert_count(reporter, deq, 5); + assert_f2biter(reporter, deq, 5, 1); + + for (i = 0; i < 5; i++) { + deq.pop_front(); + } + assert_count(reporter, deq, 0); +} + +#include "TestClassDef.h" +DEFINE_TESTCLASS("Deque", TestDequeClass, TestDeque) -- cgit v1.2.3