#include "stack.h" #include "test.h" //#include "msfix.h" #include using namespace std; class StackTest : public Test { enum {SIZE = 5}; Stack stk; public: StackTest() : stk(SIZE) {} void run() { testUnderflow(); testPopulate(); testOverflow(); testPop(); testBadSize(); } void testBadSize() { try { Stack s(0); _fail("Bad Size"); } catch (StackError&) { _succeed(); } } void testUnderflow() { _test(stk.size() == 0); try { stk.top(); _fail("Underflow"); } catch (StackError&) { _succeed(); } try { stk.pop(); _fail("Underflow"); } catch (StackError&) { _succeed(); } } void testPopulate() { try { for (int i = 0; i < SIZE; ++i) stk.push(i); _succeed(); } catch (StackError&) { _fail("Populate"); } _test(stk.size() == SIZE); _test(stk.top() == SIZE-1); } void testOverflow() { try { stk.push(SIZE); _fail("Overflow"); } catch (StackError&) { _succeed(); } } void testPop() { for (int i = 0; i < SIZE; ++i) _test(stk.pop() == SIZE-i-1); _test(stk.size() == 0); } }; int main() { StackTest t; t.setStream(&cout); t.run(); t.report(); }