summaryrefslogtreecommitdiff
path: root/myfind/myfind/tests/unit/lexing.c
diff options
context:
space:
mode:
authorMartial Simon <msimon_fr@hotmail.com>2025-09-15 01:07:58 +0200
committerMartial Simon <msimon_fr@hotmail.com>2025-09-15 01:07:58 +0200
commit967be9e750221ab2ab783f95df79bb26d290a45e (patch)
tree6802900a5e975f9f68b169f0f503f040056d6952 /myfind/myfind/tests/unit/lexing.c
add: added projectsHEADmain
Diffstat (limited to 'myfind/myfind/tests/unit/lexing.c')
-rw-r--r--myfind/myfind/tests/unit/lexing.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/myfind/myfind/tests/unit/lexing.c b/myfind/myfind/tests/unit/lexing.c
new file mode 100644
index 0000000..dfa876a
--- /dev/null
+++ b/myfind/myfind/tests/unit/lexing.c
@@ -0,0 +1,45 @@
+#include <criterion/criterion.h>
+#include <criterion/assert.h>
+
+#include "lexer.h"
+#include "myfind.h"
+
+TestSuite(lexer);
+
+Test(lex, lex_basic)
+{
+ char *argv[] = {"-print", "-name", "*.c"};
+ int len = 3;
+ struct ast **tokens = lex(argv, &len);
+ cr_assert(len == 2, "Expected size %d, got %d", 2, len);
+ enum type expected[] = {PRINT, NAME};
+ for (int i = 0; i < len; i++)
+ {
+ cr_expect(tokens[i]->type == expected[i], "Expected %d, got %d", expected[i], tokens[i]->type);
+ free(tokens[i]);
+ }
+ free(tokens);
+}
+
+Test(lex, lex_basic2)
+{
+ char *argv[] = {"-print", "-name", "*.c", "-o", "-type", "f"};
+ int len = 6;
+ struct ast **tokens = lex(argv, &len);
+ cr_assert(len == 4, "Expected size %d, got %d", 4, len);
+ enum type expected[] = {PRINT, NAME, OR, TYPE};
+ for (int i = 0; i < len; i++)
+ {
+ cr_expect(tokens[i]->type == expected[i], "Expected %d, got %d", expected[i], tokens[i]->type);
+ free(tokens[i]);
+ }
+ free(tokens);
+}
+
+Test(lex, lex_error)
+{
+ char *argv[] = {"-print", "-name"};
+ int len = 2;
+ struct ast **tokens = lex(argv, &len);
+ cr_expect(tokens == NULL, "Expected (null), got %p", tokens);
+}