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 }