#include "test-tools.hpp" #include "parser.hpp" #include "syntaxer.hpp" #include "expression.hpp" TEST(parser_proper_test_1) { auto o = Parser::tokenize_input("(1+2-c)"); Parser::print_math_vector(o); std::vector r; r.push_back(Expression::Token(Expression::Token::OPA)); r.push_back(Expression::Token(1)); r.push_back(Expression::Token(Expression::Token::ADD)); r.push_back(Expression::Token(2)); r.push_back(Expression::Token(Expression::Token::SUB)); r.push_back(Expression::Token("c")); r.push_back(Expression::Token(Expression::Token::CPA)); CHECK(Parser::assert_same(o, r)); return 0; } TEST(parser_proper_test_2) { auto o = Parser::tokenize_input("(1**5,-snake+marble*34*(35 / 63.2))"); Parser::print_math_vector(o); std::vector r; r.push_back(Expression::Token(Expression::Token::OPA)); r.push_back(Expression::Token(1)); r.push_back(Expression::Token(Expression::Token::POW)); r.push_back(Expression::Token(5)); r.push_back(Expression::Token(Expression::Token::SUB)); r.push_back(Expression::Token("snake")); r.push_back(Expression::Token(Expression::Token::ADD)); r.push_back(Expression::Token("marble")); r.push_back(Expression::Token(Expression::Token::MUL)); r.push_back(Expression::Token(34)); r.push_back(Expression::Token(Expression::Token::MUL)); r.push_back(Expression::Token(Expression::Token::OPA)); r.push_back(Expression::Token(35)); r.push_back(Expression::Token(Expression::Token::DIV)); r.push_back(Expression::Token(63.2)); r.push_back(Expression::Token(Expression::Token::CPA)); r.push_back(Expression::Token(Expression::Token::CPA)); CHECK(Parser::assert_same(o, r)); return 0; } TEST(parser_proper_test_3) { auto o = Parser::tokenize_input(")))25.4,, 33..4 35 37 39 41 // +-*/***()()()"); Parser::print_math_vector(o); std::vector r; r.push_back(Expression::Token(Expression::Token::CPA)); r.push_back(Expression::Token(Expression::Token::CPA)); r.push_back(Expression::Token(Expression::Token::CPA)); r.push_back(Expression::Token(25.4)); r.push_back(Expression::Token(35)); r.push_back(Expression::Token(37)); r.push_back(Expression::Token(39)); r.push_back(Expression::Token(41)); r.push_back(Expression::Token(Expression::Token::DIV)); r.push_back(Expression::Token(Expression::Token::DIV)); r.push_back(Expression::Token(Expression::Token::ADD)); r.push_back(Expression::Token(Expression::Token::SUB)); r.push_back(Expression::Token(Expression::Token::MUL)); r.push_back(Expression::Token(Expression::Token::DIV)); r.push_back(Expression::Token(Expression::Token::POW)); r.push_back(Expression::Token(Expression::Token::MUL)); r.push_back(Expression::Token(Expression::Token::OPA)); r.push_back(Expression::Token(Expression::Token::CPA)); r.push_back(Expression::Token(Expression::Token::OPA)); r.push_back(Expression::Token(Expression::Token::CPA)); r.push_back(Expression::Token(Expression::Token::OPA)); r.push_back(Expression::Token(Expression::Token::CPA)); CHECK(Parser::assert_same(o, r)); return 0; } TEST(tree_proper_test_1) { std::vector o = Parser::tokenize_input("(1**5 * (1 - 2 - (3 + 4) - ((5 + 6) + (7 + 8))))"); std::vector ov = Syntax::build_op_vector(o); return 0; } TEST(tree_proper_test_2) { std::vector o = Parser::tokenize_input("(1**5 * (1-2-3-4-5-6-7-8))"); if (Syntax::prepare_token_vector(o)) { return 1; } std::vector ov = Syntax::build_op_vector(o); return 0; } void register_tests(void) { REGISTER(parser_proper_test_1); REGISTER(parser_proper_test_2); REGISTER(parser_proper_test_3); REGISTER(tree_proper_test_1); REGISTER(tree_proper_test_2); }