1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
#include "stack.hpp"

Stack foo()
{
    Stack stack;

    stack.push(42);
    stack.push(666);
    stack.push(13);
    return stack;
}

int main()
{
    Stack stack;

    stack.push(1.1);
    stack.push(2.2);
    stack.push(1.3);

    stack.print("stack:");


    Stack stack2 = stack;

    Stack stack3, stack4;

    stack3 = stack4 = stack2;

    std::cout << "stack2.pop(): " << stack2.pop() << std::endl;
    std::cout << "stack2.push(3)" << std::endl; stack2.push(3);

    stack2.print("stack2:");
    stack3.print("stack3:");
    stack4.print("stack4:");

    std::cout << "Test underflow:" << std::endl;
    stack4.pop(); stack4.print("stack4:");
    stack4.pop(); stack4.print("stack4:");
    stack4.pop(); stack4.print("stack4:");
    stack4.pop(); stack4.print("stack4:");
    stack4.pop(); stack4.print("stack4:");
    stack4.pop(); stack4.print("stack4:");
    stack4.pop(); stack4.print("stack4:");

    Stack stack5;

    stack5 = foo();

    stack5.print("stack5");
}