#include "Fixed.hpp" void ft_test(bool test, std::string text) { if (test) std::cout << "test: " + text + ", bool: \033[1;32mTrue\033[0m" << std::endl; else std::cout << "test: " + text + ", bool: \033[1;31mFalse\033[0m" << std::endl; } void bool_test(Fixed nbr1, Fixed nbr2, std::string name1, std::string name2) { ft_test(nbr1 == nbr2, name1 + " == " + name2); ft_test(nbr1 != nbr2, name1 + " != " + name2); ft_test(nbr1 <= nbr2, name1 + " <= " + name2); ft_test(nbr1 >= nbr2, name1 + " >= " + name2); ft_test(nbr1 < nbr2, name1 + " < " + name2); ft_test(nbr1 > nbr2, name1 + " > " + name2); } void operator_test(Fixed nbr1, Fixed nbr2, std::string name1, std::string name2) { std::cout << "result: " << nbr1 * nbr2 << " waiting: " << nbr1.toFloat() * nbr2.toFloat() << std::endl; ft_test(nbr1 * nbr2 == nbr1.toFloat() * nbr2.toFloat(), name1 + " * " + name2); std::cout << "result: " << nbr1 / nbr2 << " waiting: " << nbr1.toFloat() / nbr2.toFloat() << std::endl; ft_test(nbr1 / nbr2 == nbr1.toFloat() / nbr2.toFloat(), name1 + " / " + name2); std::cout << "result: " << nbr1 + nbr2 << " waiting: " << nbr1.toFloat() + nbr2.toFloat() << std::endl; ft_test(nbr1 + nbr2 == nbr1.toFloat() + nbr2.toFloat(), name1 + " + " + name2); std::cout << "result: " << nbr1 - nbr2 << " waiting: " << nbr1.toFloat() - nbr2.toFloat() << std::endl; ft_test(nbr1 - nbr2 == nbr1.toFloat() - nbr2.toFloat(), name1 + " - " + name2); } int main( void ) { /* BOOL */ { std::cout << "\n--BOOL TEST--" << std::endl; Fixed a(10); Fixed b(10.1f); Fixed c(9.9f); std::cout << "a:" << a << std::endl; std::cout << "b:" << b << std::endl; std::cout << "c:" << c << std::endl; std::cout << "\n-------------------------------\n" << std::endl; bool_test(a, b, "a", "b"); std::cout << "\n-------------------------------\n" << std::endl; bool_test(a, c, "a", "c"); std::cout << "\n-------------------------------\n"<< std::endl; bool_test(b, c, "b", "c"); } /* OPERATOR */ { std::cout << "\n--OPERATOR TEST--" << std::endl; Fixed a(2); Fixed b(41.1f); Fixed c(-2.9f); std::cout << "a:" << a << std::endl; std::cout << "b:" << b << std::endl; std::cout << "c:" << c << std::endl; std::cout << "\n-------------------------------\n" << std::endl; operator_test(a, b, "a", "b"); std::cout << "\n-------------------------------\n" << std::endl; operator_test(a, c, "a", "c"); std::cout << "\n-------------------------------\n"<< std::endl; operator_test(b, c, "b", "c"); } std::cout << "\n-------------------------------\n" << std::endl; /* OTHER */ { Fixed a; Fixed const b( Fixed( 5.05f ) * Fixed( 2 ) ); std::cout << "a:" << a << std::endl; std::cout << "++a:" << ++a << std::endl; std::cout << "a:" << a << std::endl; std::cout << "a++:" << a++ << std::endl; std::cout << "a:" << a << std::endl; std::cout << "b:" << b << std::endl; std::cout << "max(a,b):" << Fixed::max( a, b ) << std::endl; std::cout << "min(a,b):" << Fixed::min( a, b ) << std::endl; } return 0; }