#include "include/test.hpp" #include "../src/include/execute.hpp" #include "../src/include/utils.hpp" int execute(string s) { Memory memory; return get(execute(split_string(s, '\n'), memory)); } int main() { _TEST_PRESENTATION("Expressions Arithmétiques"); _TEST_ASSERT( _TEST_NO_EXCEPTION(execute("10 + 3 * (7 - 2);") == 25), "Priorités", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(execute("12 - 4 - 20;") == -12), "Parenthésage", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(execute("-7 + 13 + -6;") == 0), "Opérateurs unaires", true ); _TEST_ASSERT( _TEST_IS_EXCEPTION(execute("1 / 0;"), ErrorType::DivisionByZero), "Division par 0", true ); _TEST_ASSERT( _TEST_IS_EXCEPTION(execute("1 % 0;"), ErrorType::ModuloByZero), "Modulo par 0", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(execute("int a = 27; ++a;") == 28), "Incrémentation par la gauche", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(execute("int a = 27; a--;") == 27), "Décrémentation par la droite", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(execute("int a = 27; -(+-++a);") == 28), "Incrémentation et opérations unaires", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(execute("1 < 2;") == 1), "Inférieur strict", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(execute("2 > 3;") == 0), "Supérieur strict", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(execute("2 <= 1;") == 0), "Inférieur ou égal", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(execute("2 >= 1;") == 1), "Supérieur ou égal", true ); return 0; }