#include "include/test.h" #include "../src/include/execute.h" #include "../src/include/utils.h" EvalResult execute(string s) { Memory memory; return execute(split_string(s, '\n'), memory); } int main() { _TEST_PRESENTATION("Variables"); _TEST_ASSERT( _TEST_NO_EXCEPTION(get(execute("int uneVariableFarfelue__ = 12;")) == 12), "Déclaration avec assignement", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(get(execute("int x = 5; x = x + 3;")) == 8), "Déclaration puis assignement", true ); _TEST_ASSERT( _TEST_IS_EXCEPTION(execute("1 + x;"), ErrorType::UnknownIdentifier), "Identifieur indéfini", true ); _TEST_ASSERT( _TEST_IS_EXCEPTION(execute("int x; int x;"), ErrorType::AlreadyDeclaredIdentifier), "Identifieur déjà défini", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(holds_alternative(execute("int x; { int x; }"))), "Identifieur déjà défini dans une autre scope", true ); _TEST_ASSERT( _TEST_NO_EXCEPTION(get(execute("int x = 1; int y; { int x = 2; y = x + 2; }; y;")) == 4), "Shadowing", true ); return 0; }