Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <lexer.h>
- #include <list.h>
- #include <check.h>
- START_TEST(split_empty_empty)
- {
- List *tokens = List_new();
- int status = Lexer_splitTokens("", tokens);
- ck_assert_int_eq(status, 0);
- ck_assert_int_eq(List_count(tokens), 0);
- List_free(tokens);
- }
- END_TEST
- START_TEST(split_oneNumber_oneNumberToken)
- {
- List *tokens = List_new();
- int status = Lexer_splitTokens("13", tokens);
- ck_assert_int_eq(status, 0);
- ck_assert_int_eq(List_count(tokens), 1);
- Token *firstToken = (Token *)List_at(tokens, 0);
- Token *testToken = Token_new(TokenType_NUMBER, "13");
- ck_assert(Token_equals(firstToken, testToken));
- Lexer_clearTokens(tokens);
- List_free(tokens);
- }
- END_TEST
- START_TEST(split_oneDouble_oneDoubleToken)
- {
- List *tokens = List_new();
- int status = Lexer_splitTokens("1.3", tokens);
- ck_assert_int_eq(status, 0);
- ck_assert_int_eq(List_count(tokens), 1);
- Token *firstToken = (Token *)List_at(tokens, 0);
- Token *testToken = Token_new(TokenType_DOUBLE, "1.3");
- ck_assert(Token_equals(firstToken, testToken));
- Lexer_clearTokens(tokens);
- List_free(tokens);
- }
- END_TEST
- START_TEST(split_oneID_oneIDToken)
- {
- List *tokens = List_new();
- int status = Lexer_splitTokens("var", tokens);
- ck_assert_int_eq(status, 0);
- ck_assert_int_eq(List_count(tokens), 1);
- Token *firstToken = (Token *)List_at(tokens, 0);
- Token *testToken = Token_new(TokenType_INIT, "var");
- ck_assert(Token_equals(firstToken, testToken));
- Lexer_clearTokens(tokens);
- List_free(tokens);
- }
- END_TEST
- START_TEST(split_mathOperator_mathOperatorToken)
- {
- List *tokens = List_new();
- int status = Lexer_splitTokens("+", tokens);
- ck_assert_int_eq(status, 0);
- ck_assert_int_eq(List_count(tokens), 1);
- Token *firstToken = (Token *)List_at(tokens, 0);
- Token *testToken = Token_new(TokenType_PLUS, "+");
- ck_assert(Token_equals(firstToken, testToken));
- Lexer_clearTokens(tokens);
- List_free(tokens);
- }
- END_TEST
- START_TEST(split_string_stringToken)
- {
- List *tokens = List_new();
- int status = Lexer_splitTokens("\" This is string \"", tokens);
- ck_assert_int_eq(status, 0);
- ck_assert_int_eq(List_count(tokens), 1);
- Token *firstToken = (Token *)List_at(tokens, 0);
- Token *testToken = Token_new(TokenType_STRING, "\" This is string \"");
- ck_assert(Token_equals(firstToken, testToken));
- Lexer_clearTokens(tokens);
- List_free(tokens);
- }
- END_TEST
- START_TEST(split_function_functionToken)
- {
- List *tokens = List_new();
- int status = Lexer_splitTokens("print", tokens);
- ck_assert_int_eq(status, 0);
- ck_assert_int_eq(List_count(tokens), 1);
- Token *firstToken = (Token *)List_at(tokens, 0);
- Token *testToken = Token_new(TokenType_PRINT, "print");
- ck_assert(Token_equals(firstToken, testToken));
- Lexer_clearTokens(tokens);
- List_free(tokens);
- }
- END_TEST
- START_TEST(split_logicOperation_logicOperationToken)
- {
- List *tokens = List_new();
- int status = Lexer_splitTokens("&&", tokens);
- ck_assert_int_eq(status, 0);
- ck_assert_int_eq(List_count(tokens), 1);
- Token *firstToken = (Token *)List_at(tokens, 0);
- Token *testToken = Token_new(TokenType_LOG_AND, "&&");
- ck_assert(Token_equals(firstToken, testToken));
- Lexer_clearTokens(tokens);
- List_free(tokens);
- }
- END_TEST
- START_TEST(split_conditional_conditionalToken)
- {
- List *tokens = List_new();
- int status = Lexer_splitTokens("else_if", tokens);
- ck_assert_int_eq(status, 0);
- ck_assert_int_eq(List_count(tokens), 1);
- Token *firstToken = (Token *)List_at(tokens, 0);
- Token *testToken = Token_new(TokenType_ELSE_IF, "else_if");
- ck_assert(Token_equals(firstToken, testToken));
- Lexer_clearTokens(tokens);
- List_free(tokens);
- }
- END_TEST
- START_TEST(split_stringWithQuot_stringToken)
- {
- List *tokens = List_new();
- int status = Lexer_splitTokens(" \"Hello, \\\"world\\\" ^\" ", tokens);
- ck_assert_int_eq(status, 0);
- ck_assert_int_eq(List_count(tokens), 1);
- Token *firstToken = (Token *)List_at(tokens, 0);
- Token *testToken = Token_new(TokenType_STRING, "\"Hello, \\\"world\\\" ^\"");
- ck_assert(Token_equals(firstToken, testToken));
- Lexer_clearTokens(tokens);
- List_free(tokens);
- }
- END_TEST
- START_TEST(split_wrongChar_empty)
- {
- List *tokens = List_new();
- int status = Lexer_splitTokens("&", tokens);
- ck_assert_int_eq(status, 1);
- ck_assert_int_eq(List_count(tokens), 0);
- List_free(tokens);
- }
- END_TEST
- START_TEST(split_variableName_variableToken)
- {
- List *tokens = List_new();
- int status = Lexer_splitTokens("_variable1", tokens);
- ck_assert_int_eq(status, 0);
- ck_assert_int_eq(List_count(tokens), 1);
- Token *firstToken = (Token *)List_at(tokens, 0);
- Token *testToken = Token_new(TokenType_VAR, "_variable1");
- ck_assert(Token_equals(firstToken, testToken));
- Lexer_clearTokens(tokens);
- List_free(tokens);
- }
- END_TEST
- START_TEST(split_mathOperation_mathTokens)
- {
- List *tokens = List_new();
- int status = Lexer_splitTokens("var x = 2*2 + 7", tokens);
- ck_assert_int_eq(status, 0);
- ck_assert_int_eq(List_count(tokens), 8);
- Token *firstToken = (Token *)List_at(tokens, 0);
- Token *secondToken = (Token *)List_at(tokens, 1);
- Token *thirdToken = (Token *)List_at(tokens, 2);
- Token *fourthToken = (Token *)List_at(tokens, 3);
- Token *fifthToken = (Token *)List_at(tokens, 4);
- Token *sixthToken = (Token *)List_at(tokens, 5);
- Token *seventhToken = (Token *)List_at(tokens, 6);
- Token *eighthToken = (Token *)List_at(tokens, 7);
- Token *testToken1 = Token_new(TokenType_INIT, "var");
- Token *testToken2 = Token_new(TokenType_VAR, "x");
- Token *testToken3 = Token_new(TokenType_APROP, "=");
- Token *testToken4 = Token_new(TokenType_NUMBER, "2");
- Token *testToken5 = Token_new(TokenType_MULT, "*");
- Token *testToken6 = Token_new(TokenType_NUMBER, "2");
- Token *testToken7 = Token_new(TokenType_PLUS, "+");
- Token *testToken8 = Token_new(TokenType_NUMBER, "7");
- ck_assert(Token_equals(firstToken, testToken1));
- ck_assert(Token_equals(secondToken, testToken2));
- ck_assert(Token_equals(thirdToken, testToken3));
- ck_assert(Token_equals(fourthToken, testToken4));
- ck_assert(Token_equals(fifthToken, testToken5));
- ck_assert(Token_equals(sixthToken, testToken6));
- ck_assert(Token_equals(seventhToken, testToken7));
- ck_assert(Token_equals(eighthToken, testToken8));
- Lexer_clearTokens(tokens);
- List_free(tokens);
- }
- END_TEST
- Suite *test_suite(void);
- int main(int argc, char const *argv[])
- {
- Suite *s = test_suite();
- SRunner *sr = srunner_create(s);
- srunner_set_fork_status(sr, CK_NOFORK); // important for debugging!
- srunner_run_all(sr, CK_VERBOSE);
- int num_tests_failed = srunner_ntests_failed(sr);
- srunner_free(sr);
- return num_tests_failed;
- }
- Suite *test_suite(void)
- {
- Suite *s = suite_create("Module");
- TCase *tc_sample;
- tc_sample = tcase_create("TestCase");
- tcase_add_test(tc_sample, split_empty_empty);
- tcase_add_test(tc_sample, split_oneNumber_oneNumberToken);
- tcase_add_test(tc_sample, split_oneID_oneIDToken);
- tcase_add_test(tc_sample, split_mathOperator_mathOperatorToken);
- tcase_add_test(tc_sample,split_oneDouble_oneDoubleToken);
- tcase_add_test(tc_sample,split_string_stringToken);
- tcase_add_test(tc_sample,split_function_functionToken);
- tcase_add_test(tc_sample, split_logicOperation_logicOperationToken);
- tcase_add_test(tc_sample,split_conditional_conditionalToken);
- tcase_add_test(tc_sample,split_stringWithQuot_stringToken);
- tcase_add_test(tc_sample,split_wrongChar_empty);
- tcase_add_test(tc_sample,split_variableName_variableToken);
- tcase_add_test(tc_sample,split_mathOperation_mathTokens);
- suite_add_tcase(s, tc_sample);
- return s;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement