#include "include/test.h" #include "../src/include/memory.h" #include "../src/include/tokenize.h" #include "../src/include/parser.h" #include "../src/include/interpreter.h" EvalResult execute(string s) { Memory memory;; vector tokens = tokenize({ s }); Node ast = parse(tokens); EvalResult res = eval(ast, memory); return res; } int main() { _TEST_PRESENTATION("Statements"); _TEST_ASSERT( _TEST_NO_EXCEPTION(get(execute("int x = 0; if (1) x++; x;")) == 1), "If vérifié", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(get(execute("int x = 0; if (0) x++; x;")) == 0), "If pas vérifié", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(get(execute("int x = 1; if (0) x++; else x--; x;")) == 0), "If else pas vérifié", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(get(execute("int i = 0; while (i < 100) i++; i;")) == 100), "While", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(get(execute("int i = 0; for (int j = 0; j < 100; j++) { i++; } i;")) == 100), "For", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(get(execute("int x; for (int i=0; i < 30; i++) { x=i; if (i==20) break; }; x;")) == 20), "For break", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(get(execute("int x; int i=0; while (i < 30) { x=i; if (i==20) break; i++; }; x;")) == 20), "While break", true ); return 0; }