main.cpp
  1  /* ************************************************************************** */
  2  /*                                                                            */
  3  /*                                                        :::      ::::::::   */
  4  /*   main.cpp                                           :+:      :+:    :+:   */
  5  /*                                                    +:+ +:+         +:+     */
  6  /*   By: gychoi <gychoi@student.42seoul.kr>         +#+  +:+       +#+        */
  7  /*                                                +#+#+#+#+#+   +#+           */
  8  /*   Created: 2023/12/31 00:47:45 by gychoi            #+#    #+#             */
  9  /*   Updated: 2023/12/31 03:10:24 by gychoi           ###   ########.fr       */
 10  /*                                                                            */
 11  /* ************************************************************************** */
 12  
 13  #include <list>
 14  #include <iostream>
 15  #include "MutantStack.hpp"
 16  
 17  void	test_more()
 18  {
 19  	std::cout << "\nMore Tests" << std::endl;
 20  
 21  	MutantStack<int>	mstack;
 22  
 23  	mstack.push(1);
 24  	mstack.push(2);
 25  	mstack.push(3);
 26  
 27  	std::cout << "Testing Iterator... w/ value increment\n";
 28  	for (MutantStack<int>::iterator it = mstack.begin();
 29  		 it != mstack.end(); it++)
 30  	{
 31  		std::cout << *it << '\n';
 32  		*it = *it + 1;
 33  	}
 34  
 35  	std::cout << "Testing Const Iterator...\n";
 36  	for (MutantStack<int>::const_iterator cit = mstack.begin();
 37  		 cit != mstack.end(); cit++)
 38  	{
 39  		std::cout << *cit << '\n';
 40  	}
 41  
 42  	std::cout << "Testing Reverse Iterator...\n";
 43  	for (MutantStack<int>::reverse_iterator rit = mstack.rbegin();
 44  		 rit != mstack.rend(); rit++)
 45  	{
 46  		std::cout << *rit << '\n';
 47  	}
 48  
 49  	std::cout << "Testing Const Reverse Iterator...\n";
 50  	for (MutantStack<int>::const_reverse_iterator crit = mstack.rbegin();
 51  		 crit != mstack.rend(); crit++)
 52  	{
 53  		std::cout << *crit << '\n';
 54  	}
 55  
 56  	std::cout << std::endl;
 57  
 58  	std::cout << "MutantStack Copy Test\n";
 59  	std::cout << "Creating const MutantStack : cstack...\n";
 60  	std::cout << "Copying mstack to cstack w/ copy constructor...\n";
 61  	MutantStack<int> const	cstack(mstack);
 62  
 63  	std::cout << "Const iterating cstack...\n";
 64  	for (MutantStack<int>::const_iterator cit = cstack.begin();
 65  		 cit != cstack.end(); cit++)
 66  	{
 67  		std::cout << *cit << '\n';
 68  	}
 69  	std::cout << "Const reverse iterating cstack...\n";
 70  	for (MutantStack<int>::const_reverse_iterator crit = cstack.rbegin();
 71  		 crit != cstack.rend(); crit++)
 72  	{
 73  		std::cout << *crit << '\n';
 74  	}
 75  
 76  	std::cout << "Copying mstack to nstack with assignment operation...\n";
 77  	MutantStack<int>	nstack;
 78  	nstack = cstack;
 79  
 80  	std::cout << "Iterating nstack...\n";
 81  	for (MutantStack<int>::iterator it = nstack.begin();
 82  		 it != nstack.end(); it++)
 83  	{
 84  		std::cout << *it << '\n';
 85  	}
 86  }
 87  
 88  void	test_list()
 89  {
 90  	std::cout << "\nList output\n";
 91  
 92  	std::list<int>	lst;
 93  
 94  	lst.push_back(5);
 95  	lst.push_back(17);
 96  
 97  	std::cout << lst.back() << std::endl;
 98  
 99  	lst.pop_back();
100  
101  	std::cout << lst.size() << std::endl;
102  
103  	lst.push_back(3);
104  	lst.push_back(5);
105  	lst.push_back(737);
106  	//[...]
107  	lst.push_back(0);
108  
109  	std::list<int>::iterator	it = lst.begin();
110  	std::list<int>::iterator	ite = lst.end();
111  
112  	++it;
113  	--it;
114  	while (it != ite)
115  	{
116  		std::cout << *it << std::endl;
117  		++it;
118  	}
119  	std::list<int>	s(lst);
120  }
121  
122  int	main()
123  {
124  	MutantStack<int>	mstack;
125  
126  	mstack.push(5);
127  	mstack.push(17);
128  
129  	std::cout << mstack.top() << std::endl;
130  
131  	mstack.pop();
132  
133  	std::cout << mstack.size() << std::endl;
134  
135  	mstack.push(3);
136  	mstack.push(5);
137  	mstack.push(737);
138  	//[...]
139  	mstack.push(0);
140  
141  	MutantStack<int>::iterator	it = mstack.begin();
142  	MutantStack<int>::iterator	ite = mstack.end();
143  
144  	++it;
145  	--it;
146  	while (it != ite)
147  	{
148  		std::cout << *it << std::endl;
149  		++it;
150  	}
151  	std::stack<int>	s(mstack);
152  
153  	test_list();
154  	test_more();
155  	return 0;
156  }