Structures
125 строк · 2.7 Кб
1#include <QtTest>
2#include <QCoreApplication>
3
4#include "../../src/stack.hpp"
5
6using namespace stt;
7
8class TestStack : public QObject
9{
10Q_OBJECT
11Stack<double> d_stack;
12Stack<int> i_stack;
13Stack<char> c_stack;
14
15QVector<double> d_case;
16QVector<int> i_case;
17QVector<char> c_case;
18
19public:
20TestStack();
21~TestStack();
22
23private slots:
24void initTestCase();
25void cleanupTestCase();
26void testCaseConstructors();
27void testCasePushItem();
28void testCaseFrontBackItem();
29void testCaseFlip();
30void testCasePopItem();
31void testCaseOperatorPlusEqual();
32};
33
34TestStack::TestStack()
35{
36
37}
38
39TestStack::~TestStack() {}
40
41void TestStack::initTestCase()
42{
43d_case = {9.0, 10.0, 13.0, 14.4, 15.6};
44i_case = {9, 10, 13, 14, 15};
45c_case = {'A', 'B', 'C', 'D', 'F'};
46}
47
48void TestStack::testCaseConstructors()
49{
50Stack<double> d2_stack(9.0, 10.0, 13.0, 14.4, 15.6);
51foreach(auto d, d_case)
52QCOMPARE(d2_stack.pop(), d);
53}
54
55void TestStack::testCasePushItem()
56{
57foreach(auto d, d_case)
58d_stack.push(d);
59foreach(auto i, i_case)
60i_stack.push(i);
61foreach(auto c, c_case)
62c_stack.push(c);
63}
64
65void TestStack::testCaseFrontBackItem()
66{
67QCOMPARE(d_stack.front(), d_case.last());
68QCOMPARE(d_stack.back(), d_case.first());
69QCOMPARE(i_stack.front(), i_case.last());
70QCOMPARE(i_stack.back(), i_case.first());
71QCOMPARE(c_stack.front(), c_case.last());
72QCOMPARE(c_stack.back(), c_case.first());
73}
74
75void TestStack::testCaseFlip()
76{
77Stack<double> d2_stack = d_stack;
78d2_stack.flip();
79foreach(auto d, d_case)
80QCOMPARE(d2_stack.pop(), d);
81}
82
83void TestStack::testCasePopItem()
84{
85for(int i = d_case.size() - 1; i >= 0; i--)
86QCOMPARE(d_stack.pop(), d_case[i]);
87for(int i = i_case.size() - 1; i >= 0; i--)
88QCOMPARE(i_stack.pop(), i_case[i]);
89for(int i = c_case.size() - 1; i >= 0; i--)
90QCOMPARE(c_stack.pop(), c_case[i]);
91}
92
93void TestStack::testCaseOperatorPlusEqual()
94{
95d_stack.push(9.0);
96d_stack.push(1.0);
97d_stack = d_stack + d_stack;
98QCOMPARE(d_stack.pop(), 1.0);
99QCOMPARE(d_stack.pop(), 9.0);
100QCOMPARE(d_stack.pop(), 1.0);
101QCOMPARE(d_stack.pop(), 9.0);
102
103d_stack.push(9.0);
104d_stack.push(1.0);
105d_stack += d_stack;
106QCOMPARE(d_stack.pop(), 1.0);
107QCOMPARE(d_stack.pop(), 9.0);
108QCOMPARE(d_stack.pop(), 1.0);
109QCOMPARE(d_stack.pop(), 9.0);
110}
111
112
113void TestStack::cleanupTestCase()
114{
115d_stack.clear();
116i_stack.clear();
117c_stack.clear();
118QCOMPARE(d_stack.empty(), true);
119QCOMPARE(i_stack.empty(), true);
120QCOMPARE(c_stack.empty(), true);
121}
122
123QTEST_APPLESS_MAIN(TestStack)
124
125#include "tst_teststack.moc"
126