75 lines
1.7 KiB
C++
75 lines
1.7 KiB
C++
/*
|
|
* TestLexer.cpp
|
|
*
|
|
* Created on: Nov 4, 2012
|
|
* Author: attero
|
|
*/
|
|
|
|
#include "TestLexer.h"
|
|
|
|
|
|
TestLexer::TestLexer() {
|
|
//Do nothing
|
|
|
|
}
|
|
|
|
TestLexer::~TestLexer() {
|
|
// Do nothing
|
|
}
|
|
|
|
std::string TestLexer::all_tests()
|
|
{
|
|
std::string test_report = "";
|
|
|
|
mu_run_test(test_searching_keyword_for_not_keyword);
|
|
mu_run_test(test_fake);
|
|
mu_run_test(test_searching_keyword);
|
|
mu_run_test(test_parsing_simple_token);
|
|
mu_run_test(test_parsing_tricky_token);
|
|
|
|
return test_report;
|
|
}
|
|
|
|
std::string TestLexer::test_fake()
|
|
{
|
|
mu_assert("1 == 1", 1 == 1);
|
|
return "";
|
|
}
|
|
|
|
std::string TestLexer::test_searching_keyword_for_not_keyword()
|
|
{
|
|
mu_assert("Balloon is treated as a keyword.", !lexer.is_keyword("Balloon"));
|
|
return "";
|
|
}
|
|
|
|
std::string TestLexer::test_searching_keyword()
|
|
{
|
|
mu_assert("\"while\" isn't treated as keyword.", lexer.is_keyword("while"));
|
|
return "";
|
|
}
|
|
|
|
std::string TestLexer::test_parsing_simple_token()
|
|
{
|
|
std::string test_report = "";
|
|
Token token = lexer.parse_token("buttocks^^").second;
|
|
muu_assert(" buttocks isn't symbol token", token.type == t_symbol);
|
|
muu_assert(" value isn't buttocks", token.value == "buttocks");
|
|
return test_report;
|
|
}
|
|
|
|
std::string TestLexer::test_parsing_tricky_token()
|
|
{
|
|
std::string test_report = "";
|
|
Token token = lexer.parse_token("while_trhe#").second;
|
|
muu_assert("while_trhe# not a symbol", token.type == t_symbol);
|
|
muu_assert("value isn't while_trhe", token.value == "while_trhe");
|
|
|
|
token = lexer.parse_token("1if").second;
|
|
std::string rest_of_string = lexer.parse_token("1if").first;
|
|
|
|
muu_assert("Isn\'t a number", token.type == t_invalid_token);
|
|
muu_assert("Isn\'t equal 1if but ", token.value == "1if");
|
|
muu_assert("Rest of string is crap", rest_of_string == "" );
|
|
|
|
return test_report;
|
|
}
|