diff options
author | Max Horn | 2009-01-21 02:23:09 +0000 |
---|---|---|
committer | Max Horn | 2009-01-21 02:23:09 +0000 |
commit | 53cd1361c503fded70b9d1636c8dc4d6e54834e0 (patch) | |
tree | 7d729476ec683aa1da41291ea0f2cae954aa03c8 /test | |
parent | b7f7a8c660a0a16addb84101f2b594eb4a0ac6e1 (diff) | |
download | scummvm-rg350-53cd1361c503fded70b9d1636c8dc4d6e54834e0.tar.gz scummvm-rg350-53cd1361c503fded70b9d1636c8dc4d6e54834e0.tar.bz2 scummvm-rg350-53cd1361c503fded70b9d1636c8dc4d6e54834e0.zip |
Made Common::Stack return refs, thus ensuring that it matches exactly the behavior of FixedStack; added unit tests
svn-id: r35974
Diffstat (limited to 'test')
-rw-r--r-- | test/common/fixedstack.h | 82 | ||||
-rw-r--r-- | test/common/queue.h | 2 | ||||
-rw-r--r-- | test/common/stack.h | 82 |
3 files changed, 166 insertions, 0 deletions
diff --git a/test/common/fixedstack.h b/test/common/fixedstack.h new file mode 100644 index 0000000000..62e536d5fa --- /dev/null +++ b/test/common/fixedstack.h @@ -0,0 +1,82 @@ +#include <cxxtest/TestSuite.h> + +#include "common/stack.h" + +class FixedStackTestSuite : public CxxTest::TestSuite { +public: + void test_empty_clear() { + Common::FixedStack<int> stack; + TS_ASSERT(stack.empty()); + + stack.push(1); + stack.push(2); + TS_ASSERT(!stack.empty()); + + stack.clear(); + + TS_ASSERT(stack.empty()); + } + + void test_size() { + Common::FixedStack<int> stack; + TS_ASSERT_EQUALS(stack.size(), 0); + + stack.push(5); + TS_ASSERT_EQUALS(stack.size(), 1); + + stack.push(9); + stack.push(0); + TS_ASSERT_EQUALS(stack.size(), 3); + + stack.pop(); + TS_ASSERT_EQUALS(stack.size(), 2); + } + + void test_top_pop() { + Common::FixedStack<int> stack; + + stack.push( 42); + stack.push(-23); + + TS_ASSERT_EQUALS(stack[0], 42); + TS_ASSERT_EQUALS(stack.top(), -23); + + stack[0] = -23; + stack.top() = 42; + TS_ASSERT_EQUALS(stack[0], -23); + TS_ASSERT_EQUALS(stack.top(), 42); + + stack.pop(); + TS_ASSERT_EQUALS(stack[0], -23); + } + + void test_assign() { + Common::FixedStack<int> q1, q2; + + for (int i = 0; i <= 4; ++i) { + q1.push(4-i); + q2.push(i); + } + + Common::FixedStack<int> q3(q1); + + for (int i = 0; i < 5; ++i) { + TS_ASSERT_EQUALS(q3.top(), i); + q3.pop(); + } + + TS_ASSERT(q3.empty()); + + q3 = q2; + + for (int i = 4; i >= 0; --i) { + TS_ASSERT_EQUALS(q3.top(), i); + q3.pop(); + } + + TS_ASSERT(q3.empty()); + TS_ASSERT(!q1.empty()); + TS_ASSERT(!q2.empty()); + } +}; + diff --git a/test/common/queue.h b/test/common/queue.h index e3c0cb0a19..505e056722 100644 --- a/test/common/queue.h +++ b/test/common/queue.h @@ -75,6 +75,8 @@ public: } TS_ASSERT(q3.empty()); + TS_ASSERT(!q1.empty()); + TS_ASSERT(!q2.empty()); } }; diff --git a/test/common/stack.h b/test/common/stack.h new file mode 100644 index 0000000000..66ba5f5e2b --- /dev/null +++ b/test/common/stack.h @@ -0,0 +1,82 @@ +#include <cxxtest/TestSuite.h> + +#include "common/stack.h" + +class StackTestSuite : public CxxTest::TestSuite { +public: + void test_empty_clear() { + Common::Stack<int> stack; + TS_ASSERT(stack.empty()); + + stack.push(1); + stack.push(2); + TS_ASSERT(!stack.empty()); + + stack.clear(); + + TS_ASSERT(stack.empty()); + } + + void test_size() { + Common::Stack<int> stack; + TS_ASSERT_EQUALS(stack.size(), 0); + + stack.push(5); + TS_ASSERT_EQUALS(stack.size(), 1); + + stack.push(9); + stack.push(0); + TS_ASSERT_EQUALS(stack.size(), 3); + + stack.pop(); + TS_ASSERT_EQUALS(stack.size(), 2); + } + + void test_top_pop() { + Common::Stack<int> stack; + + stack.push( 42); + stack.push(-23); + + TS_ASSERT_EQUALS(stack[0], 42); + TS_ASSERT_EQUALS(stack.top(), -23); + + stack[0] = -23; + stack.top() = 42; + TS_ASSERT_EQUALS(stack[0], -23); + TS_ASSERT_EQUALS(stack.top(), 42); + + stack.pop(); + TS_ASSERT_EQUALS(stack[0], -23); + } + + void test_assign() { + Common::Stack<int> q1, q2; + + for (int i = 0; i <= 4; ++i) { + q1.push(4-i); + q2.push(i); + } + + Common::Stack<int> q3(q1); + + for (int i = 0; i < 5; ++i) { + TS_ASSERT_EQUALS(q3.top(), i); + q3.pop(); + } + + TS_ASSERT(q3.empty()); + + q3 = q2; + + for (int i = 4; i >= 0; --i) { + TS_ASSERT_EQUALS(q3.top(), i); + q3.pop(); + } + + TS_ASSERT(q3.empty()); + TS_ASSERT(!q1.empty()); + TS_ASSERT(!q2.empty()); + } +}; + |