diff --git a/tests/unit/lexer/lexer_tests.c b/tests/unit/lexer/lexer_tests.c new file mode 100644 index 0000000..0a3ccf7 --- /dev/null +++ b/tests/unit/lexer/lexer_tests.c @@ -0,0 +1,61 @@ +#include +#include +#include +#include +#include + +#include "lexer/lexer.h" + +TestSuite(token_creation); + +Test(token_creation, basic) +{ + char *input = "Hello World"; + + char *actual = new_token(input, 5); + char *expected = "Hello"; + cr_expect(eq(str, actual, expected)); + free(actual); +} + +Test(token_creation, nul) +{ + char *input = NULL; + + char *actual = new_token(input, 5); + char *expected = NULL; + cr_expect(eq(str, actual, expected)); + free(actual); +} + +Test(token_creation, too_large) +{ + char *input = "Hel"; + + char *actual = new_token(input, 5); + char *expected = NULL; + cr_expect(eq(str, actual, expected)); + free(actual); +} + +Test(token_creation, empty) +{ + char *input = ""; + + char *actual = new_token(input, 5); + char *expected = NULL; + cr_expect(eq(str, actual, expected)); + free(actual); +} + +Test(token_creation, basic_long) +{ + char *input = "Hello World! This project is a mini shell, I love BIG G."; + + char *actual = new_token(input, 42); + char *expected = calloc(42 + 1, sizeof(char)); + strncpy(input, expected, 42); + cr_expect(eq(str, actual, expected)); + free(actual); + free(expected); +}