summaryrefslogtreecommitdiff
path: root/test/lexer-test.lisp
diff options
context:
space:
mode:
authorriton <riton@riton.home>2025-07-14 21:45:47 +0300
committerriton <riton@riton.home>2025-07-14 21:45:47 +0300
commit1c90d9ae3b84f62168337f3c8b1c3854f6198330 (patch)
tree7dcc1dc41c2cfce5548876d53d8e83835b56b624 /test/lexer-test.lisp
parent44efb492349025a195a3b402ec580623ad61723f (diff)
More refactoring of tests and packages
Squashed commit of the following: commit c4659d8be4d664ba7fd4b59d613536f2368cff0e Author: riton <riton@riton.home> Date: Mon Jul 14 21:44:48 2025 +0300 fix package name typo commit ec802339b838d059f4bc9e4da7cc370ab4d91a46 Author: riton <riton@riton.home> Date: Mon Jul 14 21:43:42 2025 +0300 seperate deftest from test instances commit 92d20e0b8405a4a51f01ff65f8bd81f4d25c1e21 Author: riton <riton@riton.home> Date: Mon Jul 14 21:29:47 2025 +0300 make a test system definition commit 125e5fe1e8c07230f32e762273c5c0dd259209e6 Author: riton <riton@riton.home> Date: Mon Jul 14 00:39:09 2025 +0300 compiler macro of as-token commit 0e39c32097783aa39e3fed479bb85b412065f597 Author: riton <riton@riton.home> Date: Mon Jul 14 00:21:46 2025 +0300 define new packages
Diffstat (limited to 'test/lexer-test.lisp')
-rw-r--r--test/lexer-test.lisp53
1 files changed, 53 insertions, 0 deletions
diff --git a/test/lexer-test.lisp b/test/lexer-test.lisp
new file mode 100644
index 0000000..bb7a1bd
--- /dev/null
+++ b/test/lexer-test.lisp
@@ -0,0 +1,53 @@
+(in-package :monkey/test)
+
+(deftest (:lexer test-1)
+ "=+(){},;"
+ (:t/= :t/+ :t/lparen :t/rparen
+ :t/lbrace :t/rbrace :t/comma :t/semicolon :t/eof))
+
+(deftest (:lexer test-2)
+ "let five = 5;
+let ten = 10;
+
+let add = fn(x, y) {
+ x + y;
+};
+
+let result = add(five, ten);
+!-/*;
+5 < 10 > 5;
+
+if (5 < 10) {
+ return true;
+} else {
+ return false;
+}
+10 == 10;
+10 != 9;
+"
+ (:t/let "five" :t/= 5 #\;
+ :t/let "ten" :t/= 10 #\;
+ :t/let "add" :t/= :t/function #\( "x" :t/comma "y" #\) #\{
+ "x" :t/+ "y" #\;
+ #\} #\;
+ :t/let "result" :t/= "add" #\( "five" :t/comma "ten" #\) #\;
+ :t/! :t/- :t// :t/* #\;
+ 5 :t/< 10 :t/> 5 #\;
+ :t/if #\( 5 :t/< 10 #\) #\{
+ :t/return :t/true #\;
+ #\} :t/else #\{
+ :t/return :t/false #\;
+ #\}
+ 10 :t/== 10 #\;
+ 10 :t/!= 9 #\;
+ :t/eof))
+
+(eval-when ()
+ (deftest (:lexer test-fail)
+ "abc gf 5 fn =+(){},;"
+ (:t/= :t/+ :t/lparen :t/rparen
+ :t/lbrace :t/rbrace :t/comma :t/semicolon :t/eof))
+
+ (deftest (:lexer test-fail-2)
+ "let abc x + 5;"
+ (:t/let "abc" :t/= "x" :t/+ 5 :t/eof)))