1 #include <algorithm>
2 #include <list>
3 #include <queue>
4 #include <deque>
5 #include <stack>
6 
7 #include "cppunit/cppunit_proxy.h"
8 
9 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
10 using namespace std;
11 #endif
12 
13 //
14 // TestCase class
15 //
16 class StackTest : public CPPUNIT_NS::TestCase
17 {
18   CPPUNIT_TEST_SUITE(StackTest);
19   CPPUNIT_TEST(stack1);
20   CPPUNIT_TEST(stack2);
21   CPPUNIT_TEST_SUITE_END();
22 
23 protected:
24   void stack1();
25   void stack2();
26 };
27 
28 CPPUNIT_TEST_SUITE_REGISTRATION(StackTest);
29 
30 //
31 // tests implementation
32 //
33 void StackTest::stack1()
34 {
35   stack<int, deque<int> > s;
36   s.push(42);
37   s.push(101);
38   s.push(69);
39   CPPUNIT_ASSERT(s.top()==69);
40   s.pop();
41   CPPUNIT_ASSERT(s.top()==101);
42   s.pop();
43   CPPUNIT_ASSERT(s.top()==42);
44   s.pop();
45   CPPUNIT_ASSERT(s.empty());
46 }
47 void StackTest::stack2()
48 {
49   stack<int, list<int> > s;
50   s.push(42);
51   s.push(101);
52   s.push(69);
53   CPPUNIT_ASSERT(s.top()==69);
54   s.pop();
55   CPPUNIT_ASSERT(s.top()==101);
56   s.pop();
57   CPPUNIT_ASSERT(s.top()==42);
58   s.pop();
59   CPPUNIT_ASSERT(s.empty());
60 }
61