Line data Source code
1 : #include "../../inc/parsingAnalysis/builder.h"
2 : #include <catch2/catch_test_macros.hpp>
3 : #include <memory>
4 : #include <vector>
5 :
6 : using namespace nicole;
7 :
8 9 : TEST_CASE("AST_BODY class methods", "[AST_BODY]") {
9 9 : Location loc{"file", 0, 0};
10 9 : Token token{TokenType::OPERATOR_ADD, "+", loc};
11 9 : auto astBool1 = *Builder::createStatement(
12 9 : SourceLocation{token, token},
13 9 : *Builder::createBool(SourceLocation{token, token}, true));
14 9 : auto astBool2 = *Builder::createStatement(
15 9 : SourceLocation{token, token},
16 9 : *Builder::createBool(SourceLocation{token, token}, false));
17 9 : std::vector<std::shared_ptr<AST_STATEMENT>> body{astBool1, astBool2};
18 :
19 9 : AST_BODY astBody{0, SourceLocation{token, token}, body};
20 :
21 9 : REQUIRE(astBody.body().size() == 2);
22 9 : REQUIRE(astBody.body()[0] == astBool1);
23 9 : REQUIRE(astBody.body()[1] == astBool2);
24 9 : }
25 :
26 9 : TEST_CASE("AST_STATEMENT class methods", "[AST_STATEMENT]") {
27 9 : Location loc{"file", 0, 0};
28 9 : Token token{TokenType::OPERATOR_ADD, "+", loc};
29 9 : auto astBool = *Builder::createBool(SourceLocation{token, token}, true);
30 :
31 9 : AST_STATEMENT astStatement{0, SourceLocation{token, token}, astBool};
32 :
33 9 : REQUIRE(astStatement.expression() == astBool);
34 9 : REQUIRE(
35 9 : std::dynamic_pointer_cast<AST_BOOL>(astStatement.expression())->value() ==
36 9 : true);
37 9 : }
|