From 70aebb35a6d4d5aaca6c40fb0ea7d6f973c35b99 Mon Sep 17 00:00:00 2001 From: ala89 Date: Wed, 3 Jan 2024 16:20:42 +0100 Subject: [PATCH] Refactor test execute functions --- ...{expr_arithmetiques.cpp => airthmetic.cpp} | 15 ++----- test/bool_logic.cpp | 14 ++----- test/functions.cpp | 16 ++----- test/operators.cpp | 14 ++----- test/repl.cpp | 42 +++++++++++++++++++ test/statements.cpp | 14 ++----- test/variables.cpp | 16 ++----- 7 files changed, 66 insertions(+), 65 deletions(-) rename test/{expr_arithmetiques.cpp => airthmetic.cpp} (83%) create mode 100644 test/repl.cpp diff --git a/test/expr_arithmetiques.cpp b/test/airthmetic.cpp similarity index 83% rename from test/expr_arithmetiques.cpp rename to test/airthmetic.cpp index c664c48..acf20f5 100644 --- a/test/expr_arithmetiques.cpp +++ b/test/airthmetic.cpp @@ -1,18 +1,11 @@ #include "include/test.h" -#include "../src/include/errors.h" -#include "../src/include/memory.h" -#include "../src/include/parser.h" -#include "../src/include/tokenize.h" -#include "../src/include/interpreter.h" +#include "../src/include/execute.h" +#include "../src/include/utils.h" int execute(string s) { - Memory memory;; - vector tokens = tokenize({ s }); - Node ast = parse(tokens); - EvalResult res = eval(ast, memory); - - return get(res); + Memory memory; + return get(execute(split_string(s, '\n'), memory)); } int main() { diff --git a/test/bool_logic.cpp b/test/bool_logic.cpp index 1b6f716..db2ec12 100644 --- a/test/bool_logic.cpp +++ b/test/bool_logic.cpp @@ -1,17 +1,11 @@ #include "include/test.h" -#include "../src/include/memory.h" -#include "../src/include/tokenize.h" -#include "../src/include/parser.h" -#include "../src/include/interpreter.h" +#include "../src/include/execute.h" +#include "../src/include/utils.h" int execute(string s) { - Memory memory;; - vector tokens = tokenize({ s }); - Node ast = parse(tokens); - EvalResult res = eval(ast, memory); - - return get(res); + Memory memory; + return get(execute(split_string(s, '\n'), memory)); } int main() { diff --git a/test/functions.cpp b/test/functions.cpp index aaf29ec..3342589 100644 --- a/test/functions.cpp +++ b/test/functions.cpp @@ -1,19 +1,11 @@ #include "include/test.h" -#include "../src/include/memory.h" -#include "../src/include/tokenize.h" -#include "../src/include/parser.h" -#include "../src/include/analysis.h" -#include "../src/include/interpreter.h" +#include "../src/include/execute.h" +#include "../src/include/utils.h" EvalResult execute(string s) { - Memory memory;; - vector tokens = tokenize({ s }); - Node ast = parse(tokens); - analyze(ast, memory); - EvalResult res = eval(ast, memory); - - return res; + Memory memory; + return execute(split_string(s, '\n'), memory); } int main() { diff --git a/test/operators.cpp b/test/operators.cpp index 3f5c74d..c5fbbe5 100644 --- a/test/operators.cpp +++ b/test/operators.cpp @@ -1,17 +1,11 @@ #include "include/test.h" -#include "../src/include/memory.h" -#include "../src/include/tokenize.h" -#include "../src/include/parser.h" -#include "../src/include/interpreter.h" +#include "../src/include/execute.h" +#include "../src/include/utils.h" int execute(string s) { - Memory memory;; - vector tokens = tokenize({ s }); - Node ast = parse(tokens); - EvalResult res = eval(ast, memory); - - return get(res); + Memory memory; + return get(execute(split_string(s, '\n'), memory)); } int main() { diff --git a/test/repl.cpp b/test/repl.cpp new file mode 100644 index 0000000..50b2d56 --- /dev/null +++ b/test/repl.cpp @@ -0,0 +1,42 @@ +#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("Repl"); + + Memory mem1; + + _TEST_ASSERT( + _TEST_NO_EXCEPTION(get(execute("int x = 1;", mem1)) == 1), + "Déclaration d'une variable globale", + false + ); + + _TEST_ASSERT( + _TEST_NO_EXCEPTION(get(execute("x;", mem1)) == 1), + "Persistance de variable", + true + ); + + Memory mem2; + + _TEST_ASSERT( + _TEST_IS_EXCEPTION(execute("{ int x = 1; 1 / 0; }", mem2), ErrorType::DivisionByZero), + "Déclaration d'une scope avec erreur au runtime", + false + ); + + _TEST_ASSERT( + _TEST_IS_EXCEPTION(execute("x;", mem2), ErrorType::UnknownIdentifier), + "Destruction des scopes en cas d'erreur", + true + ); + + return 0; +} \ No newline at end of file diff --git a/test/statements.cpp b/test/statements.cpp index c972214..c1604bc 100644 --- a/test/statements.cpp +++ b/test/statements.cpp @@ -1,17 +1,11 @@ #include "include/test.h" -#include "../src/include/memory.h" -#include "../src/include/tokenize.h" -#include "../src/include/parser.h" -#include "../src/include/interpreter.h" +#include "../src/include/execute.h" +#include "../src/include/utils.h" EvalResult execute(string s) { - Memory memory;; - vector tokens = tokenize({ s }); - Node ast = parse(tokens); - EvalResult res = eval(ast, memory); - - return res; + Memory memory; + return execute(split_string(s, '\n'), memory); } int main() { diff --git a/test/variables.cpp b/test/variables.cpp index 05aabc0..b55ccdc 100644 --- a/test/variables.cpp +++ b/test/variables.cpp @@ -1,19 +1,11 @@ #include "include/test.h" -#include "../src/include/memory.h" -#include "../src/include/tokenize.h" -#include "../src/include/parser.h" -#include "../src/include/analysis.h" -#include "../src/include/interpreter.h" +#include "../src/include/execute.h" +#include "../src/include/utils.h" EvalResult execute(string s) { - Memory memory;; - vector tokens = tokenize({ s }); - Node ast = parse(tokens); - analyze(ast, memory); - EvalResult res = eval(ast, memory); - - return res; + Memory memory; + return execute(split_string(s, '\n'), memory); } int main() {