Advertisement
Guest User

Untitled

a guest
Feb 25th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.64 KB | None | 0 0
  1. #include <lexer.h>
  2. #include <list.h>
  3. #include <check.h>
  4.  
  5. START_TEST(split_empty_empty)
  6. {
  7. List *tokens = List_new();
  8. int status = Lexer_splitTokens("", tokens);
  9. ck_assert_int_eq(status, 0);
  10. ck_assert_int_eq(List_count(tokens), 0);
  11. List_free(tokens);
  12. }
  13. END_TEST
  14.  
  15. START_TEST(split_oneNumber_oneNumberToken)
  16. {
  17. List *tokens = List_new();
  18. int status = Lexer_splitTokens("13", tokens);
  19. ck_assert_int_eq(status, 0);
  20. ck_assert_int_eq(List_count(tokens), 1);
  21. Token *firstToken = (Token *)List_at(tokens, 0);
  22. Token *testToken = Token_new(TokenType_NUMBER, "13");
  23. ck_assert(Token_equals(firstToken, testToken));
  24. Lexer_clearTokens(tokens);
  25. List_free(tokens);
  26. }
  27. END_TEST
  28.  
  29. START_TEST(split_oneDouble_oneDoubleToken)
  30. {
  31. List *tokens = List_new();
  32. int status = Lexer_splitTokens("1.3", tokens);
  33. ck_assert_int_eq(status, 0);
  34. ck_assert_int_eq(List_count(tokens), 1);
  35. Token *firstToken = (Token *)List_at(tokens, 0);
  36. Token *testToken = Token_new(TokenType_DOUBLE, "1.3");
  37. ck_assert(Token_equals(firstToken, testToken));
  38. Lexer_clearTokens(tokens);
  39. List_free(tokens);
  40. }
  41. END_TEST
  42.  
  43. START_TEST(split_oneID_oneIDToken)
  44. {
  45. List *tokens = List_new();
  46. int status = Lexer_splitTokens("var", tokens);
  47. ck_assert_int_eq(status, 0);
  48. ck_assert_int_eq(List_count(tokens), 1);
  49. Token *firstToken = (Token *)List_at(tokens, 0);
  50. Token *testToken = Token_new(TokenType_INIT, "var");
  51. ck_assert(Token_equals(firstToken, testToken));
  52. Lexer_clearTokens(tokens);
  53. List_free(tokens);
  54. }
  55. END_TEST
  56.  
  57. START_TEST(split_mathOperator_mathOperatorToken)
  58. {
  59. List *tokens = List_new();
  60. int status = Lexer_splitTokens("+", tokens);
  61. ck_assert_int_eq(status, 0);
  62. ck_assert_int_eq(List_count(tokens), 1);
  63. Token *firstToken = (Token *)List_at(tokens, 0);
  64. Token *testToken = Token_new(TokenType_PLUS, "+");
  65. ck_assert(Token_equals(firstToken, testToken));
  66. Lexer_clearTokens(tokens);
  67. List_free(tokens);
  68. }
  69. END_TEST
  70.  
  71. START_TEST(split_string_stringToken)
  72. {
  73. List *tokens = List_new();
  74. int status = Lexer_splitTokens("\" This is string \"", tokens);
  75. ck_assert_int_eq(status, 0);
  76. ck_assert_int_eq(List_count(tokens), 1);
  77. Token *firstToken = (Token *)List_at(tokens, 0);
  78. Token *testToken = Token_new(TokenType_STRING, "\" This is string \"");
  79. ck_assert(Token_equals(firstToken, testToken));
  80. Lexer_clearTokens(tokens);
  81. List_free(tokens);
  82. }
  83. END_TEST
  84.  
  85. START_TEST(split_function_functionToken)
  86. {
  87. List *tokens = List_new();
  88. int status = Lexer_splitTokens("print", tokens);
  89. ck_assert_int_eq(status, 0);
  90. ck_assert_int_eq(List_count(tokens), 1);
  91. Token *firstToken = (Token *)List_at(tokens, 0);
  92. Token *testToken = Token_new(TokenType_PRINT, "print");
  93. ck_assert(Token_equals(firstToken, testToken));
  94. Lexer_clearTokens(tokens);
  95. List_free(tokens);
  96. }
  97. END_TEST
  98.  
  99. START_TEST(split_logicOperation_logicOperationToken)
  100. {
  101. List *tokens = List_new();
  102. int status = Lexer_splitTokens("&&", tokens);
  103. ck_assert_int_eq(status, 0);
  104. ck_assert_int_eq(List_count(tokens), 1);
  105. Token *firstToken = (Token *)List_at(tokens, 0);
  106. Token *testToken = Token_new(TokenType_LOG_AND, "&&");
  107. ck_assert(Token_equals(firstToken, testToken));
  108. Lexer_clearTokens(tokens);
  109. List_free(tokens);
  110. }
  111. END_TEST
  112.  
  113. START_TEST(split_conditional_conditionalToken)
  114. {
  115. List *tokens = List_new();
  116. int status = Lexer_splitTokens("else_if", tokens);
  117. ck_assert_int_eq(status, 0);
  118. ck_assert_int_eq(List_count(tokens), 1);
  119. Token *firstToken = (Token *)List_at(tokens, 0);
  120. Token *testToken = Token_new(TokenType_ELSE_IF, "else_if");
  121. ck_assert(Token_equals(firstToken, testToken));
  122. Lexer_clearTokens(tokens);
  123. List_free(tokens);
  124. }
  125. END_TEST
  126.  
  127. START_TEST(split_stringWithQuot_stringToken)
  128. {
  129. List *tokens = List_new();
  130. int status = Lexer_splitTokens(" \"Hello, \\\"world\\\" ^\" ", tokens);
  131. ck_assert_int_eq(status, 0);
  132. ck_assert_int_eq(List_count(tokens), 1);
  133. Token *firstToken = (Token *)List_at(tokens, 0);
  134. Token *testToken = Token_new(TokenType_STRING, "\"Hello, \\\"world\\\" ^\"");
  135. ck_assert(Token_equals(firstToken, testToken));
  136. Lexer_clearTokens(tokens);
  137. List_free(tokens);
  138. }
  139. END_TEST
  140.  
  141. START_TEST(split_wrongChar_empty)
  142. {
  143. List *tokens = List_new();
  144. int status = Lexer_splitTokens("&", tokens);
  145. ck_assert_int_eq(status, 1);
  146. ck_assert_int_eq(List_count(tokens), 0);
  147. List_free(tokens);
  148. }
  149. END_TEST
  150.  
  151. START_TEST(split_variableName_variableToken)
  152. {
  153. List *tokens = List_new();
  154. int status = Lexer_splitTokens("_variable1", tokens);
  155. ck_assert_int_eq(status, 0);
  156. ck_assert_int_eq(List_count(tokens), 1);
  157. Token *firstToken = (Token *)List_at(tokens, 0);
  158. Token *testToken = Token_new(TokenType_VAR, "_variable1");
  159. ck_assert(Token_equals(firstToken, testToken));
  160. Lexer_clearTokens(tokens);
  161. List_free(tokens);
  162. }
  163. END_TEST
  164.  
  165. START_TEST(split_mathOperation_mathTokens)
  166. {
  167. List *tokens = List_new();
  168. int status = Lexer_splitTokens("var x = 2*2 + 7", tokens);
  169. ck_assert_int_eq(status, 0);
  170. ck_assert_int_eq(List_count(tokens), 8);
  171.  
  172. Token *firstToken = (Token *)List_at(tokens, 0);
  173. Token *secondToken = (Token *)List_at(tokens, 1);
  174. Token *thirdToken = (Token *)List_at(tokens, 2);
  175. Token *fourthToken = (Token *)List_at(tokens, 3);
  176. Token *fifthToken = (Token *)List_at(tokens, 4);
  177. Token *sixthToken = (Token *)List_at(tokens, 5);
  178. Token *seventhToken = (Token *)List_at(tokens, 6);
  179. Token *eighthToken = (Token *)List_at(tokens, 7);
  180.  
  181. Token *testToken1 = Token_new(TokenType_INIT, "var");
  182. Token *testToken2 = Token_new(TokenType_VAR, "x");
  183. Token *testToken3 = Token_new(TokenType_APROP, "=");
  184. Token *testToken4 = Token_new(TokenType_NUMBER, "2");
  185. Token *testToken5 = Token_new(TokenType_MULT, "*");
  186. Token *testToken6 = Token_new(TokenType_NUMBER, "2");
  187. Token *testToken7 = Token_new(TokenType_PLUS, "+");
  188. Token *testToken8 = Token_new(TokenType_NUMBER, "7");
  189.  
  190. ck_assert(Token_equals(firstToken, testToken1));
  191. ck_assert(Token_equals(secondToken, testToken2));
  192. ck_assert(Token_equals(thirdToken, testToken3));
  193. ck_assert(Token_equals(fourthToken, testToken4));
  194. ck_assert(Token_equals(fifthToken, testToken5));
  195. ck_assert(Token_equals(sixthToken, testToken6));
  196. ck_assert(Token_equals(seventhToken, testToken7));
  197. ck_assert(Token_equals(eighthToken, testToken8));
  198. Lexer_clearTokens(tokens);
  199. List_free(tokens);
  200. }
  201. END_TEST
  202.  
  203. Suite *test_suite(void);
  204.  
  205. int main(int argc, char const *argv[])
  206. {
  207. Suite *s = test_suite();
  208. SRunner *sr = srunner_create(s);
  209. srunner_set_fork_status(sr, CK_NOFORK); // important for debugging!
  210.  
  211. srunner_run_all(sr, CK_VERBOSE);
  212.  
  213. int num_tests_failed = srunner_ntests_failed(sr);
  214. srunner_free(sr);
  215. return num_tests_failed;
  216. }
  217.  
  218. Suite *test_suite(void)
  219. {
  220. Suite *s = suite_create("Module");
  221. TCase *tc_sample;
  222.  
  223. tc_sample = tcase_create("TestCase");
  224. tcase_add_test(tc_sample, split_empty_empty);
  225. tcase_add_test(tc_sample, split_oneNumber_oneNumberToken);
  226. tcase_add_test(tc_sample, split_oneID_oneIDToken);
  227. tcase_add_test(tc_sample, split_mathOperator_mathOperatorToken);
  228. tcase_add_test(tc_sample,split_oneDouble_oneDoubleToken);
  229. tcase_add_test(tc_sample,split_string_stringToken);
  230. tcase_add_test(tc_sample,split_function_functionToken);
  231. tcase_add_test(tc_sample, split_logicOperation_logicOperationToken);
  232. tcase_add_test(tc_sample,split_conditional_conditionalToken);
  233. tcase_add_test(tc_sample,split_stringWithQuot_stringToken);
  234. tcase_add_test(tc_sample,split_wrongChar_empty);
  235. tcase_add_test(tc_sample,split_variableName_variableToken);
  236. tcase_add_test(tc_sample,split_mathOperation_mathTokens);
  237.  
  238. suite_add_tcase(s, tc_sample);
  239.  
  240. return s;
  241. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement