00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <lestes/common.hh>
00029 #include <lestes/std/stack.hh>
00030 #include <lestes/std/vector.hh>
00031
00032 using namespace ::lestes;
00033 using namespace ::lestes::std;
00034
00035 int main()
00036 {
00037 ptr < stack < int > > q0 = stack < int > :: create();
00038 lassert(q0->empty());
00039 q0->push(1);
00040 lassert(q0->top() == 1);
00041 lassert(!q0->empty());
00042 q0->push(2);
00043 lassert(q0->top() == 2);
00044 q0->push(3);
00045 lassert(q0->top() == 3);
00046 q0->pop();
00047 lassert(q0->top() == 2);
00048 q0->push(4);
00049 lassert(q0->top() == 4);
00050 q0->push(5);
00051 lassert(q0->top() == 5);
00052 q0->push(6);
00053 lassert(q0->top() == 6);
00054 q0->pop();
00055 lassert(q0->top() == 5);
00056 q0->pop();
00057 lassert(q0->top() == 4);
00058 q0->pop();
00059 lassert(q0->top() == 2);
00060 q0->pop();
00061 lassert(q0->top() == 1);
00062 q0->pop();
00063 lassert(q0->empty());
00064
00065 #if vector_is_manhandled_to_be_usable_in_stack
00066 ptr < stack < int, vector < int > > > q1 = stack < int, vector < int > > :: create();
00067 lassert(q1->empty());
00068 q1->push(1);
00069 lassert(q1->top() == 1);
00070 lassert(!q1->empty());
00071 q1->push(2);
00072 lassert(q1->top() == 2);
00073 q1->push(3);
00074 lassert(q1->top() == 3);
00075 q1->pop();
00076 lassert(q1->top() == 2);
00077 q1->push(4);
00078 lassert(q1->top() == 4);
00079 q1->push(5);
00080 lassert(q1->top() == 5);
00081 q1->push(6);
00082 lassert(q1->top() == 6);
00083 q1->pop();
00084 lassert(q1->top() == 5);
00085 q1->pop();
00086 lassert(q1->top() == 4);
00087 q1->pop();
00088 lassert(q1->top() == 2);
00089 q1->pop();
00090 lassert(q1->top() == 1);
00091 q1->pop();
00092 lassert(q1->empty());
00093 #else
00094 ptr < object > q1 = stack < srp < object > > :: create();
00095 #endif
00096
00097 ptr < stack < srp < object > > > q2 = stack < srp < object > > :: create();
00098 lassert(q2->empty());
00099 q2->push(q0);
00100 lassert(q2->top() == q0);
00101 lassert(!q2->empty());
00102 q2->push(q1);
00103 lassert(q2->top() != q0);
00104 lassert(q2->top() == q1);
00105 lassert(!q2->empty());
00106 q2->pop();
00107 lassert(q2->top() == q0);
00108 lassert(!q2->empty());
00109 q2->push(q2);
00110 lassert(q2->top() == q2);
00111 q2->pop();
00112 lassert(q2->top() == q0);
00113 q2->pop();
00114 lassert(q2->empty());
00115
00116
00117 }