c-repl/test/statements.cpp
2023-11-22 15:31:30 +01:00

39 lines
892 B
C++

#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 = Memory();
vector<Token> 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<int>(execute("int x = 0; if (1) x++; x;")) == 1),
"If vérifié",
true
);
_TEST_ASSERT(
_TEST_NO_EXCEPTION(get<int>(execute("int x = 0; if (0) x++; x;")) == 0),
"If pas vérifié",
true
);
_TEST_ASSERT(
_TEST_NO_EXCEPTION(get<int>(execute("int x = 1; if (0) x++; else x--; x;")) == 0),
"If else pas vérifié",
true
);
return 0;
}