Line data Source code
1 : #include "../../inc/parsingAnalysis/builder.h"
2 : #include <catch2/catch_test_macros.hpp>
3 : #include <memory>
4 :
5 : using namespace nicole;
6 :
7 18 : TEST_CASE("AST class methods", "[AST]") {
8 18 : Location loc{"file", 0, 0};
9 18 : Token token{TokenType::OPERATOR_ADD, "+", loc};
10 18 : auto ast = *Builder::createBool(SourceLocation{token, token}, true);
11 :
12 18 : SECTION("Constructor and accessors") {
13 9 : REQUIRE(ast->type() == AST_TYPE::BOOL);
14 9 : }
15 :
16 18 : SECTION("Father management") {
17 9 : ast->setFather(ast);
18 9 : REQUIRE(ast->father() == ast);
19 9 : }
20 18 : }
21 :
22 9 : TEST_CASE("AST_BOOL class methods", "[AST_BOOL]") {
23 9 : Location loc{"file", 0, 0};
24 9 : Token token{TokenType::OPERATOR_ADD, "+", loc};
25 9 : AST_BOOL astBool{0, SourceLocation{token, token}, true};
26 :
27 9 : REQUIRE(astBool.type() == AST_TYPE::BOOL);
28 9 : REQUIRE(astBool.value() == true);
29 9 : }
30 :
31 9 : TEST_CASE("AST_CHAR class methods", "[AST_CHAR]") {
32 9 : Location loc{"file", 0, 0};
33 9 : Token token{TokenType::OPERATOR_ADD, "+", loc};
34 9 : AST_CHAR astChar{0, SourceLocation{token, token}, 'a'};
35 :
36 9 : REQUIRE(astChar.type() == AST_TYPE::CHAR);
37 9 : REQUIRE(astChar.value() == 'a');
38 9 : }
39 :
40 9 : TEST_CASE("AST_DOUBLE class methods", "[AST_DOUBLE]") {
41 9 : Location loc{"file", 0, 0};
42 9 : Token token{TokenType::OPERATOR_ADD, "+", loc};
43 9 : AST_DOUBLE astDouble{0, SourceLocation{token, token}, 3.14};
44 :
45 9 : REQUIRE(astDouble.type() == AST_TYPE::DOUBLE);
46 9 : REQUIRE(astDouble.value() == 3.14);
47 9 : }
48 :
49 9 : TEST_CASE("AST_FLOAT class methods", "[AST_FLOAT]") {
50 9 : Location loc{"file", 0, 0};
51 9 : Token token{TokenType::OPERATOR_ADD, "+", loc};
52 9 : AST_FLOAT astFloat{0, SourceLocation{token, token}, 2.71f};
53 :
54 9 : REQUIRE(astFloat.type() == AST_TYPE::FLOAT);
55 9 : REQUIRE(astFloat.value() == 2.71f);
56 9 : }
57 :
58 9 : TEST_CASE("AST_INT class methods", "[AST_INT]") {
59 9 : Location loc{"file", 0, 0};
60 9 : Token token{TokenType::OPERATOR_ADD, "+", loc};
61 9 : AST_INT astInt{0, SourceLocation{token, token}, 42};
62 :
63 9 : REQUIRE(astInt.type() == AST_TYPE::INT);
64 9 : REQUIRE(astInt.value() == 42);
65 9 : }
66 :
67 9 : TEST_CASE("AST_NULL class methods", "[AST_NULL]") {
68 9 : Location loc{"file", 0, 0};
69 9 : Token token{TokenType::OPERATOR_ADD, "+", loc};
70 9 : AST_NULL astNull{0, SourceLocation{token, token}};
71 :
72 9 : REQUIRE(astNull.type() == AST_TYPE::NULLPTR);
73 9 : }
74 :
75 9 : TEST_CASE("AST_STRING class methods", "[AST_STRING]") {
76 9 : Location loc{"file", 0, 0};
77 9 : Token token{TokenType::OPERATOR_ADD, "+", loc};
78 9 : AST_STRING astString{0, SourceLocation{token, token}, "hello"};
79 :
80 9 : REQUIRE(astString.type() == AST_TYPE::STRING);
81 9 : REQUIRE(astString.value() == "hello");
82 9 : }
|