aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMax Horn2009-01-21 02:23:09 +0000
committerMax Horn2009-01-21 02:23:09 +0000
commit53cd1361c503fded70b9d1636c8dc4d6e54834e0 (patch)
tree7d729476ec683aa1da41291ea0f2cae954aa03c8 /test
parentb7f7a8c660a0a16addb84101f2b594eb4a0ac6e1 (diff)
downloadscummvm-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.h82
-rw-r--r--test/common/queue.h2
-rw-r--r--test/common/stack.h82
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());
+ }
+};
+