#include "stack.h"
#include <iostream>


template<typename T>
void swap(T& var1, T& var2){
  T tmp = var1;
  var1 = var2;
  var2 = tmp;
}

int main() {

  Stack<int> stackDeCheval;

  if(stackDeCheval.empty()){
    std::cout << "empty" << std::endl;
  }

  std::cout << stackDeCheval.size() << std::endl;
  stackDeCheval.push(15);
  std::cout << stackDeCheval.size() << std::endl;
  std::cout << stackDeCheval.peek() << std::endl;
  stackDeCheval.push(13);

  if(stackDeCheval.empty()){
    std::cout << "empty" << std::endl;
  }

  std::cout << stackDeCheval.size() << std::endl;
  std::cout <<  stackDeCheval.pop() << std::endl;
  std::cout << stackDeCheval.size() << std::endl;

  int a=5;
  int b=3;
  std::cout << "a = "<<a<<"; b = " <<b<< std::endl;
  swap(a,b);
  std::cout << "a = "<<a<<"; b = " <<b<< std::endl;

  Stack<int> s2;

  if(stackDeCheval.empty()){
    std::cout << "stack de cheval empty" << std::endl;
  }else{
    std::cout << "pas vide stack de cheval" << std::endl;
  }

  if(s2.empty()){
    std::cout << "stack 2 empty" << std::endl;
  }else{
    std::cout << "stack 2 pas empty" << std::endl;
  }


  swap(stackDeCheval,s2);

  if(stackDeCheval.empty()){
    std::cout << "stack de cheval empty" << std::endl;
  }else{
    std::cout << "pas vide stack de cheval" << std::endl;
  }

  if(s2.empty()){
    std::cout << "stack 2 empty" << std::endl;
  }else{
    std::cout << "stack 2 pas empty" << std::endl;
  }

  return 0;
}
