main.cpp
1 /* ************************************************************************** */ 2 /* */ 3 /* ::: :::::::: */ 4 /* main.cpp :+: :+: :+: */ 5 /* +:+ +:+ +:+ */ 6 /* By: gychoi <gychoi@student.42seoul.kr> +#+ +:+ +#+ */ 7 /* +#+#+#+#+#+ +#+ */ 8 /* Created: 2023/08/02 17:45:27 by gychoi #+# #+# */ 9 /* Updated: 2023/08/04 17:56:27 by gychoi ### ########.fr */ 10 /* */ 11 /* ************************************************************************** */ 12 13 #include <string> 14 #include "Fixed.hpp" 15 16 static void _testArithmetic(void) 17 { 18 Fixed c(42.4242f); 19 Fixed d(42); 20 21 std::cout << "c: " << c << "(42.4242f)" << ", d: " << d << "(42)" << std::endl; 22 std::cout << "c > d : " << (c > d) << std::endl; 23 std::cout << "c < d : " << (c < d) << std::endl; 24 std::cout << "c >= d : " << (c >= d) << std::endl; 25 std::cout << "c <= d : " << (c <= d) << std::endl; 26 std::cout << "c == d : " << (c == d) << std::endl; 27 std::cout << "c != d : " << (c != d) << '\n' << std::endl; 28 29 Fixed e(c + d); 30 std::cout << "e = c + d : " << e << std::endl; 31 Fixed f(c - d); 32 std::cout << "f = c - d : " << f << std::endl; 33 Fixed g(c * d); 34 std::cout << "g = c * d : " << g << std::endl; 35 Fixed h(c / d); 36 std::cout << "h = c / d : " << h << '\n' << std::endl; 37 38 std::cout << "min(e, f) : " << Fixed::min(e, f) << std::endl; 39 std::cout << "max(g, h) : " << Fixed::max(g, h) << '\n' << std::endl; 40 41 Fixed const i(-42); 42 Fixed const j(-42.4242f); 43 44 std::cout << "const i: " << i << "(-42)" << std::endl; 45 std::cout << "const j: " << j << "(-42.4242f)" << std::endl; 46 std::cout << "i + j : " << i + j << std::endl; 47 std::cout << "i - j : " << i - j << std::endl; 48 std::cout << "i * j : " << i * j << std::endl; 49 std::cout << "i / j : " << i / j << '\n' << std::endl; 50 std::cout << "min(i, j) : " << Fixed::min(i, j) << std::endl; 51 std::cout << "max(i, j) : " << Fixed::max(i, j) << '\n' << std::endl; 52 53 Fixed k(42424); 54 Fixed l(42.4242f); 55 56 std::cout << "k: " << k << "(42424)" << ", l: " << l << "(42.4242f)" << std::endl; 57 std::cout << "k * l : " << k * l << std::endl; 58 std::cout << "k / l : " << k / l << std::endl; 59 60 Fixed tmp(k * l); 61 std::cout << "tmp(k * l) : " << tmp << std::endl; 62 std::cout << "tmp / l : " << tmp / l << '\n' << std::endl; 63 64 Fixed m(42); 65 Fixed n(0); 66 std::cout << "m: " << m << "(42)" << ", n: " << n << "(0)" << std::endl; 67 std::cout << "m * n : " << m * n << std::endl; 68 std::cout << "m / n : Be aware of Division by zero" << std::endl; 69 // std::cout << "m / n : " << m / n << std::endl; 70 std::cout << "++m : " << ++m << std::endl; 71 std::cout << "++(++m) : " << ++(++m) << std::endl; 72 std::cout << "m++, m : " << m++ << ", " << m << std::endl; 73 std::cout << "(m++)++ : You can not duplicate post-increment/post-decrement" << std::endl; 74 // std::cout << (m++)++ << std::endl; 75 } 76 77 static bool _testFixedNumber(int argc, char* argv[]) 78 { 79 if (argc > 2) 80 { 81 std::cout << "Usage: " << argv[0] << " test" << std::endl; 82 return (false); 83 } 84 85 std::string input = argv[1]; 86 87 if (input == "test") 88 _testArithmetic(); 89 else 90 { 91 std::cout << "Invalid Option: you can use only 'test' option, sorry." << std::endl; 92 return (false); 93 } 94 return (true); 95 } 96 97 int main(int argc, char* argv[]) 98 { 99 if (argc >= 2) 100 return (_testFixedNumber(argc, argv)); 101 102 Fixed a; 103 Fixed const b( Fixed( 5.05f ) * Fixed ( 2 ) ); 104 105 std::cout << a << std::endl; 106 std::cout << ++a << std::endl; 107 std::cout << a << std::endl; 108 std::cout << a++ << std::endl; 109 std::cout << a << std::endl; 110 111 std::cout << b << std::endl; 112 113 std::cout << Fixed::max( a, b ) << std::endl; 114 115 return 0; 116 }