main.cpp
1 /* ************************************************************************** */ 2 /* */ 3 /* ::: :::::::: */ 4 /* main.cpp :+: :+: :+: */ 5 /* +:+ +:+ +:+ */ 6 /* By: gychoi <gychoi@student.42seoul.kr> +#+ +:+ +#+ */ 7 /* +#+#+#+#+#+ +#+ */ 8 /* Created: 2023/12/26 00:11:49 by gychoi #+# #+# */ 9 /* Updated: 2023/12/31 01:03:25 by gychoi ### ########.fr */ 10 /* */ 11 /* ************************************************************************** */ 12 13 #include <ctime> 14 #include <cstdlib> 15 #include <iostream> 16 #include "Span.hpp" 17 18 void test() 19 { 20 std::cout << "\nTest 0 : Copy span\n"; 21 try 22 { 23 std::cout << "Creating Span(3): sp1...\n"; 24 Span sp1 = Span(3); 25 std::cout << "Insert element 1 to sp1...\n"; 26 sp1.addNumber(1); 27 std::cout << "Insert element 2 to sp1...\n"; 28 sp1.addNumber(2); 29 std::cout << "Insert element 3 to sp1...\n"; 30 sp1.addNumber(3); 31 std::cout << "Get shortest span in sp1..." << std::endl; 32 std::cout << sp1.shortestSpan() << std::endl; 33 std::cout << "Get longest span in sp1..." << std::endl; 34 std::cout << sp1.longestSpan() << std::endl; 35 36 std::cout << "Creating Span(5): sp2...\n"; 37 Span sp2 = Span(5); 38 std::cout << "Insert element 100 to sp2...\n"; 39 sp2.addNumber(100); 40 std::cout << "Insert element 200 to sp2...\n"; 41 sp2.addNumber(200); 42 std::cout << "Insert element 300 to sp3...\n"; 43 sp2.addNumber(300); 44 std::cout << "Insert element 50 to sp3...\n"; 45 sp2.addNumber(50); 46 std::cout << "Insert element 100 to sp3...\n"; 47 sp2.addNumber(100); 48 std::cout << "Copy sp2 to sp1...\n"; 49 sp1 = sp2; 50 std::cout << "Get shortest span in sp1..." << std::endl; 51 std::cout << sp1.shortestSpan() << std::endl; 52 std::cout << "Get longest span in sp1..." << std::endl; 53 std::cout << sp1.longestSpan() << std::endl; 54 55 std::cout << "Creating Span Using Copy Constructor: sp3...\n"; 56 std::cout << "Copy sp1 to sp3...\n"; 57 Span sp3 = Span(sp1); 58 std::cout << "Get shortest span in sp3..." << std::endl; 59 std::cout << sp3.shortestSpan() << std::endl; 60 std::cout << "Get longest span in sp3..." << std::endl; 61 std::cout << sp3.longestSpan() << std::endl; 62 } 63 catch (std::exception& e) 64 { 65 std::cout << "ERROR: " << e.what() << std::endl; 66 } 67 68 std::cout << "\nTest 1 : Invalid initialize\n"; 69 try 70 { 71 std::cout << "Crating Span(-1)..." << std::endl; 72 Span sp = Span(-1); 73 std::cout << sp.shortestSpan() << std::endl; // unreachable 74 } 75 catch (std::exception& e) 76 { 77 std::cout << "ERROR: " << e.what() << std::endl; 78 } 79 80 std::cout << "\nTest 2 : Insert element to full Span\n"; 81 try 82 { 83 std::cout << "Creating Span(3)...\n"; 84 Span sp = Span(3); 85 std::cout << "Insert element 1...\n"; 86 sp.addNumber(1); 87 std::cout << "Insert element 2...\n"; 88 sp.addNumber(2); 89 std::cout << "Insert element 3...\n"; 90 sp.addNumber(3); 91 std::cout << "Insert element 42..." << std::endl; 92 sp.addNumber(42); 93 } 94 catch (std::exception& e) 95 { 96 std::cout << "ERROR: " << e.what() << std::endl; 97 } 98 99 std::cout << "\nTest 3 : Lack of numbers to calculate span\n"; 100 try 101 { 102 std::cout << "Creating Empty Span...\n"; 103 Span sp; 104 std::cout << "Get longest span..." << std::endl; 105 std::cout << sp.longestSpan() << std::endl; 106 } 107 catch (std::exception& e) 108 { 109 std::cout << "ERROR: " << e.what() << std::endl; 110 } 111 try 112 { 113 std::cout << "Creating Span(1)...\n"; 114 Span sp = Span(1); 115 std::cout << "Insert element 1...\n"; 116 sp.addNumber(1); 117 std::cout << "Get shortest span..." << std::endl; 118 std::cout << sp.shortestSpan() << std::endl; 119 } 120 catch (std::exception& e) 121 { 122 std::cout << "ERROR: " << e.what() << std::endl; 123 } 124 125 std::cout << "\nTest 4 : Normal span test\n"; 126 try 127 { 128 std::cout << "Creating Span(42)...\n"; 129 Span sp = Span(42); 130 std::cout << "Insert element 0...\n"; 131 sp.addNumber(0); 132 std::cout << "Insert element -999...\n"; 133 sp.addNumber(-999); 134 std::cout << "Insert clement 4242...\n"; 135 sp.addNumber(4242); 136 std::cout << "Insert element -999...\n"; 137 sp.addNumber(-999); 138 std::cout << "Insert element -888...\n"; 139 sp.addNumber(-888); 140 std::cout << "Insert element 0...\n"; 141 sp.addNumber(0); 142 std::cout << "Insert element 4242...\n"; 143 sp.addNumber(4242); 144 std::cout << "Insert element 0...\n"; 145 sp.addNumber(0); 146 std::cout << "Get shortest span...\n"; 147 std::cout << sp.shortestSpan() << '\n'; 148 std::cout << "Get longest span...\n"; 149 std::cout << sp.longestSpan() << std::endl; 150 } 151 catch (std::exception& e) 152 { 153 std::cout << "ERROR: " << e.what() << std::endl; 154 } 155 156 std::cout << "\nTest 5 : 10000 nums\n"; 157 try 158 { 159 std::cout << "Generating random seeds...\n"; 160 std::srand(std::time(0)); 161 std::cout << "Creating Span(10000)...\n"; 162 Span sp = Span(10000); 163 std::cout << "Insert 10000 random elements...\n"; 164 for (size_t i = 0; i < 10000; i++) 165 { 166 sp.addNumber(std::rand()); 167 } 168 std::cout << "Get shortest span...\n"; 169 std::cout << sp.shortestSpan() << '\n'; 170 std::cout << "Get longest span...\n"; 171 std::cout << sp.longestSpan() << std::endl; 172 } 173 catch (std::exception& e) 174 { 175 std::cout << "ERROR: " << e.what() << std::endl; 176 } 177 178 std::cout << "\nTest 6 : add numbers at once\n"; 179 try 180 { 181 std::cout << "Creating Span(10000)...\n"; 182 Span sp = Span(10000); 183 std::cout << "Generating random seeds...\n"; 184 std::srand(std::time(0)); 185 std::cout << "Generating random vector(10000)...\n"; 186 std::vector<int> randVec; 187 randVec.reserve(10000); 188 for (size_t i = 0; i < 10000; i++) 189 { 190 randVec.push_back(std::rand()); 191 } 192 std::cout << "Store random vector numbers to span at once...\n"; 193 sp.addNumbers(randVec.begin(), randVec.end()); 194 std::cout << "Get shortest span...\n"; 195 std::cout << sp.shortestSpan() << '\n'; 196 std::cout << "Get longest span...\n"; 197 std::cout << sp.longestSpan() << std::endl; 198 } 199 catch (std::exception& e) 200 { 201 std::cout << "ERROR: " << e.what() << std::endl; 202 } 203 204 std::cout << "\nTest 7 : Store range check\n"; 205 try 206 { 207 std::cout << "Creating Span(10)...\n"; 208 Span sp = Span(10); 209 std::cout << "Insert element 0...\n"; 210 sp.addNumber(0); 211 std::cout << "Insert element 0...\n"; 212 sp.addNumber(0); 213 std::cout << "Creating all-zero vector(9)...\n"; 214 std::vector<int> zeroVec(9, 0); 215 std::cout << "Store all-zero vector numbers to span at once...\n"; 216 sp.addNumbers(zeroVec.begin(), zeroVec.end()); 217 std::cout << "Get shortest span...\n"; 218 std::cout << sp.shortestSpan() << '\n'; 219 std::cout << "Get longest span...\n"; 220 std::cout << sp.longestSpan() << std::endl; 221 } 222 catch (std::exception& e) 223 { 224 std::cout << "ERROR: " << e.what() << std::endl; 225 } 226 } 227 228 int main() 229 { 230 Span sp = Span(5); 231 232 sp.addNumber(6); 233 sp.addNumber(3); 234 sp.addNumber(17); 235 sp.addNumber(9); 236 sp.addNumber(11); 237 238 std::cout << sp.shortestSpan() << std::endl; 239 std::cout << sp.longestSpan() << std::endl; 240 241 test(); 242 243 return 0; 244 }