Tidying up main function. Moving tests.
parent
9b28dfa8dd
commit
442d8c640f
|
@ -18,14 +18,27 @@ TestASTInspector::~TestASTInspector() {
|
|||
|
||||
std::string TestASTInspector::test_inspecting_basic_expression()
|
||||
{
|
||||
|
||||
std::string test_report = "";
|
||||
|
||||
|
||||
BasicExpression * be = build_basic_expression("+", SenchaObject(9), SenchaObject(122));
|
||||
be->accept(&inspector);
|
||||
std::string assert_report = "Report: " + inspector.inspection_report;
|
||||
muu_assert("dd", inspector.inspection_report == "tralala");
|
||||
|
||||
return test_report;
|
||||
|
||||
|
||||
}
|
||||
|
||||
virtual std::string TestASTInspector::all_tests()
|
||||
{
|
||||
std::string test_report = "";
|
||||
|
||||
mu_run_test(test_inspecting_basic_expression);
|
||||
|
||||
return test_report;
|
||||
}
|
||||
|
||||
BasicExpression * TestASTInspector::build_basic_expression(std::string oper, SenchaObject arg1, SenchaObject arg2)
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
/*
|
||||
* tests.h
|
||||
*
|
||||
* Created on: Dec 18, 2012
|
||||
* Author: att
|
||||
*/
|
||||
|
||||
#ifndef TESTS_H_
|
||||
#define TESTS_H_
|
||||
#include <string>
|
||||
#include "Lexer.h"
|
||||
#include "Parser.h"
|
||||
|
||||
|
||||
using namespace std;
|
||||
|
||||
void test_lexer()
|
||||
{
|
||||
string test_line = "dupa";
|
||||
string test_line2 = "def how_many_trees = 1; how_many_trees + 3 == 2; num cut_tree( num how_many) {return how_many -1; != <=}";
|
||||
Lexer lexer;
|
||||
vector<Token> tokens = lexer.parse_line(test_line);
|
||||
|
||||
|
||||
for(unsigned int i=0; i< tokens.size(); i++)
|
||||
{
|
||||
cout << tokens[i].get_value() << " type: " << tokens[i].get_type() << endl;
|
||||
}
|
||||
|
||||
|
||||
tokens = lexer.parse_line(test_line2);
|
||||
|
||||
}
|
||||
|
||||
void test_parser()
|
||||
{
|
||||
vector<string> lines;
|
||||
lines.push_back("def i; bulb; i + 3; string banan = \"kartofel\"; banan = \"banan\"; string kaboom(num how_many_times) { def z; }");
|
||||
lines.push_back("num pun");
|
||||
lines.push_back("def how_many_trees = 1; how_many_trees + 3 == 2; num cut_tree(num how_many) {return how_many -1}");
|
||||
Lexer lexer;
|
||||
Context context;
|
||||
vector<Token> tokens;
|
||||
|
||||
for(unsigned int i=0; i<lines.size(); i++)
|
||||
{
|
||||
tokens = lexer.parse_line(lines[i]);
|
||||
Parser parser(&context);
|
||||
parser.add_tokens(tokens);
|
||||
parser.interpret();
|
||||
cout << "<<<Parsing number: " << i << " >>>" << endl;
|
||||
cout << "Instructions: " << endl ;
|
||||
cout << lines[i] << endl << endl;
|
||||
cout << parser.report_message;
|
||||
cout << parser.error_message << endl;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void run_test_suites()
|
||||
{
|
||||
TestLexer test_l;
|
||||
test_l.run_tests();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
void run_tests()
|
||||
{
|
||||
run_test_suites();
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif /* TESTS_H_ */
|
|
@ -7,7 +7,7 @@
|
|||
#include "Parser.h"
|
||||
#include "Tests/TestLexer.h"
|
||||
#include "Context.h"
|
||||
|
||||
#include "Tests/tests.h"
|
||||
using namespace std;
|
||||
|
||||
|
||||
|
@ -97,49 +97,8 @@ SenchaObject s_tan(vector<ASTExpression *> arguments)
|
|||
return result;
|
||||
}
|
||||
|
||||
void test_lexer()
|
||||
{
|
||||
string test_line = "dupa";
|
||||
string test_line2 = "def how_many_trees = 1; how_many_trees + 3 == 2; num cut_tree( num how_many) {return how_many -1; != <=}";
|
||||
Lexer lexer;
|
||||
vector<Token> tokens = lexer.parse_line(test_line);
|
||||
|
||||
|
||||
for(unsigned int i=0; i< tokens.size(); i++)
|
||||
{
|
||||
cout << tokens[i].get_value() << " type: " << tokens[i].get_type() << endl;
|
||||
}
|
||||
|
||||
|
||||
tokens = lexer.parse_line(test_line2);
|
||||
|
||||
}
|
||||
|
||||
void test_parser()
|
||||
{
|
||||
vector<string> lines;
|
||||
lines.push_back("def i; bulb; i + 3; string banan = \"kartofel\"; banan = \"banan\"; string kaboom(num how_many_times) { def z; }");
|
||||
lines.push_back("num pun");
|
||||
lines.push_back("def how_many_trees = 1; how_many_trees + 3 == 2; num cut_tree(num how_many) {return how_many -1}");
|
||||
Lexer lexer;
|
||||
Context context;
|
||||
vector<Token> tokens;
|
||||
|
||||
for(unsigned int i=0; i<lines.size(); i++)
|
||||
{
|
||||
tokens = lexer.parse_line(lines[i]);
|
||||
Parser parser(&context);
|
||||
parser.add_tokens(tokens);
|
||||
parser.interpret();
|
||||
cout << "<<<Parsing number: " << i << " >>>" << endl;
|
||||
cout << "Instructions: " << endl ;
|
||||
cout << lines[i] << endl << endl;
|
||||
cout << parser.report_message;
|
||||
cout << parser.error_message << endl;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int how_depth_change(vector<Token> tokens)
|
||||
{
|
||||
int change = 0;
|
||||
|
@ -208,17 +167,14 @@ int main(int argc, char *argv[])
|
|||
{
|
||||
if(argc <= 1)
|
||||
{
|
||||
//TestLexer test_l;
|
||||
//test_l.run_tests();
|
||||
|
||||
|
||||
//test_parser();
|
||||
//test_lexer();
|
||||
cout << "Sencha-lang interpreter, version 0.12" << endl;
|
||||
interactive();
|
||||
}
|
||||
else
|
||||
else if(argv[1] == "--test")
|
||||
{
|
||||
run_tests();
|
||||
}
|
||||
else {
|
||||
auto name = argv[1];
|
||||
Lexer lexer;
|
||||
Context context;
|
||||
|
|
Loading…
Reference in New Issue