diff --git a/.gitignore b/.gitignore index 7328693..c081805 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ -/src/*.o - /arcane-scheme-lisp /arcane-scheme-lisp-test -/test.out +/src/*.o +/tests/*.out diff --git a/Makefile b/Makefile index cefa98d..5cacad9 100644 --- a/Makefile +++ b/Makefile @@ -7,10 +7,6 @@ RM_F = rm -f CFLAGS = -Wall -Wextra -TEST_SCM = test.scm -TEST_EXP = test.txt -TEST_OUT = test.out - OBJS = \ src/builtins.c.o \ src/ctype.c.o \ @@ -21,19 +17,35 @@ OBJS = \ src/syntax.c.o \ src/tokens.c.o +TEST_OUTS = \ + tests/arithm_ops.out \ + tests/basic_data_structs.out \ + tests/hello.out \ + tests/arcane.out \ + tests/logic_ops.out \ + tests/syntax.out \ + tests/type_conv.out \ + tests/type_preds.out + MAIN_OBJS = $(OBJS) src/main.c.o TEST_OBJS = $(OBJS) src/main-test.c.o repl: arcane-scheme-lisp ./arcane-scheme-lisp -test: arcane-scheme-lisp arcane-scheme-lisp-test +test: arcane-scheme-lisp-test $(TEST_OUTS) ./arcane-scheme-lisp-test - $(CAT) $(TEST_SCM) | ./arcane-scheme-lisp > $(TEST_OUT) - $(DIFF_Q) $(TEST_EXP) $(TEST_OUT) + $(DIFF_Q) tests/arithm_ops.txt tests/arithm_ops.out + $(DIFF_Q) tests/basic_data_structs.txt tests/basic_data_structs.out + $(DIFF_Q) tests/hello.txt tests/hello.out + $(DIFF_Q) tests/arcane.txt tests/arcane.out + $(DIFF_Q) tests/logic_ops.txt tests/logic_ops.out + $(DIFF_Q) tests/syntax.txt tests/syntax.out + $(DIFF_Q) tests/type_conv.txt tests/type_conv.out + $(DIFF_Q) tests/type_preds.txt tests/type_preds.out clean: - $(RM_F) arcane-scheme-lisp arcane-scheme-lisp-test $(MAIN_OBJS) $(TEST_OBJS) $(TEST_OUT) + $(RM_F) arcane-scheme-lisp arcane-scheme-lisp-test $(MAIN_OBJS) $(TEST_OBJS) $(TEST_OUTS) arcane-scheme-lisp: $(MAIN_OBJS) $(CC) -o $@ $^ $(CFLAGS) @@ -43,3 +55,6 @@ arcane-scheme-lisp-test: $(TEST_OBJS) %.c.o: %.c $(CC) -c $< -o $@ $(CFLAGS) + +tests/%.out: tests/%.scm arcane-scheme-lisp + $(CAT) $< | ./arcane-scheme-lisp > $@ diff --git a/test.scm b/test.scm deleted file mode 100644 index 683a781..0000000 --- a/test.scm +++ /dev/null @@ -1,229 +0,0 @@ -(begin - (displayln "Hello, World!") - (newline) - (displayln "=== GROUP: Syntax ==============================================") - (newline) - (displayln "--- TEST: begin ------------------------------------------------") - (displayln (begin)) - (displayln (begin 123)) - (displayln (begin 123 456)) - (displayln (begin 123 456 789)) - (newline) - (displayln "--- TEST: if ---------------------------------------------------") - (displayln (if #true 123 456)) - (displayln (if "foo" 123 456)) - (displayln (if #false 123 456)) - (newline) - (displayln "--- TEST: quote ------------------------------------------------") - (displayln (quote +)) - (displayln '+) - (displayln (quote ())) - (displayln '()) - (displayln (quote #true)) - (displayln '#true) - (displayln (quote #false)) - (displayln '#false) - ;(displayln (quote #\n)) - ;(displayln '#\n) - (displayln (quote foo)) - (displayln 'foo) - (displayln (quote "foo")) - (displayln '"foo") - (displayln (quote 123)) - (displayln '123) - (displayln (quote (cons 123 456))) - (displayln '(cons 123 456)) - (newline) - (displayln "=== GROUP: Arcane Scheme Lisp internals ========================") - (newline) - (displayln "--- TEST: arcane/parse -----------------------------------------") - (displayln - (arcane/parse - (list - (cons 'TOKEN_ROUND_OPEN "(") - (cons 'TOKEN_IDENT "displayln") - (cons 'TOKEN_ROUND_OPEN "(") - (cons 'TOKEN_IDENT "+") - (cons 'TOKEN_NUM "123") - (cons 'TOKEN_NUM "456") - (cons 'TOKEN_ROUND_CLOSE ")") - (cons 'TOKEN_ROUND_CLOSE ")")))) - (newline) - (displayln "--- TEST: arcane/tokenize --------------------------------------") - (displayln (arcane/tokenize "(")) - (displayln (arcane/tokenize "#false")) - ;(displayln (arcane/tokenize "\"\"")) - ;(displayln (arcane/tokenize "\"qwe\"")) - (displayln (arcane/tokenize "(displayln (list 1))")) - (newline) - (displayln "--- TEST: arcane/typeof ----------------------------------------") - (displayln (arcane/typeof '())) - (displayln (arcane/typeof +)) - (displayln (arcane/typeof (cons 123 456))) - (displayln (arcane/typeof #false)) - ;(displayln (arcane/typeof #\n)) - (displayln (arcane/typeof 'foo)) - (displayln (arcane/typeof "foo")) - (displayln (arcane/typeof 123)) - (newline) - (displayln "=== GROUP: Basic data structures ===============================") - (newline) - (displayln "--- TEST: car --------------------------------------------------") - (displayln (car (cons 123 456))) - (newline) - (displayln "--- TEST: cdr --------------------------------------------------") - (displayln (cdr (cons 123 456))) - (newline) - (displayln "--- TEST: list -------------------------------------------------") - (displayln (list)) - (displayln (list 123)) - (displayln (list 123 456)) - (newline) - (displayln "=== GROUP: Type predicates =====================================") - (newline) - (displayln "--- TEST: boolean? ---------------------------------------------") - (displayln (boolean? +)) - (displayln (boolean? '())) - (displayln (boolean? #true)) - (displayln (boolean? #false)) - ;(displayln (boolean? #\n)) - (displayln (boolean? 'foo)) - (displayln (boolean? "foo")) - (displayln (boolean? 123)) - (displayln (boolean? (cons 123 456))) - (newline) - (displayln "--- TEST: char? ------------------------------------------------") - (displayln (char? +)) - (displayln (char? '())) - (displayln (char? #true)) - (displayln (char? #false)) - ;(displayln (char? #\n)) - (displayln (char? 'foo)) - (displayln (char? "foo")) - (displayln (char? 123)) - (displayln (char? (cons 123 456))) - (newline) - (displayln "--- TEST: null? ------------------------------------------------") - (displayln (null? +)) - (displayln (null? '())) - (displayln (null? #true)) - (displayln (null? #false)) - ;(displayln (null? #\n)) - (displayln (null? 'foo)) - (displayln (null? "foo")) - (displayln (null? 123)) - (displayln (null? (cons 123 456))) - (newline) - (displayln "--- TEST: number? ----------------------------------------------") - (displayln (number? +)) - (displayln (number? '())) - (displayln (number? #true)) - (displayln (number? #false)) - ;(displayln (number? #\n)) - (displayln (number? 'foo)) - (displayln (number? "foo")) - (displayln (number? 123)) - (displayln (number? (cons 123 456))) - (newline) - (displayln "--- TEST: pair? ------------------------------------------------") - (displayln (pair? +)) - (displayln (pair? '())) - (displayln (pair? #true)) - (displayln (pair? #false)) - ;(displayln (pair? #\n)) - (displayln (pair? 'foo)) - (displayln (pair? "foo")) - (displayln (pair? 123)) - (displayln (pair? (cons 123 456))) - (newline) - (displayln "--- TEST: procedure? -------------------------------------------") - (displayln (procedure? +)) - (displayln (procedure? '())) - (displayln (procedure? #true)) - (displayln (procedure? #false)) - ;(displayln (procedure? #\n)) - (displayln (procedure? 'foo)) - (displayln (procedure? "foo")) - (displayln (procedure? 123)) - (displayln (procedure? (cons 123 456))) - (newline) - (displayln "--- TEST: string? ----------------------------------------------") - (displayln (string? +)) - (displayln (string? '())) - (displayln (string? #true)) - (displayln (string? #false)) - ;(displayln (string? #\n)) - (displayln (string? 'foo)) - (displayln (string? "foo")) - (displayln (string? 123)) - (displayln (string? (cons 123 456))) - (newline) - (displayln "--- TEST: symbol? ----------------------------------------------") - (displayln (symbol? +)) - (displayln (symbol? '())) - (displayln (symbol? #true)) - (displayln (symbol? #false)) - ;(displayln (symbol? #\n)) - (displayln (symbol? 'foo)) - (displayln (symbol? "foo")) - (displayln (symbol? 123)) - (displayln (symbol? (cons 123 456))) - (newline) - (displayln "=== GROUP: Type conversion =====================================") - (newline) - (displayln "--- TEST: number->string ---------------------------------------") - (displayln (number->string 123)) - ;(displayln (number->string -123)) - (displayln (number->string 123456 16)) - (newline) - (displayln "--- TEST: string->symbol ---------------------------------------") - (displayln (string->symbol "")) - (displayln (string->symbol " ")) - (displayln (string->symbol "foo")) - (newline) - (displayln "--- TEST: symbol->string ---------------------------------------") - (displayln (symbol->string 'foo)) - (newline) - (displayln "=== GROUP: Logical operators ===================================") - (newline) - (displayln "--- TEST: not --------------------------------------------------") - (displayln (not '())) - (displayln (not #true)) - (displayln (not #false)) - ;(displayln (not #\n)) - (displayln (not 'foo)) - (displayln (not "foo")) - (displayln (not 123)) - (displayln (not (cons 123 456))) - (newline) - (displayln "=== GROUP: Arithmetic operators ================================") - (newline) - (displayln "--- TEST: = ----------------------------------------------------") - (displayln(= 123)) - (displayln(= 123 123)) - (displayln(= 123 456)) - (displayln(= 123 123 123)) - (displayln(= 456 123 123)) - (displayln(= 123 456 123)) - (displayln(= 123 123 456)) - (displayln(= 123 123 123 123)) - (displayln(= 456 123 123 123)) - (displayln(= 123 456 123 123)) - (displayln(= 123 123 456 123)) - (displayln(= 123 123 123 456)) - (newline) - (displayln "--- TEST: + ----------------------------------------------------") - (displayln (+)) - (displayln (+ 123)) - (displayln (+ 1 10)) - (displayln (+ 1 10 100)) - (displayln (+ 1 10 100 1000)) - (newline) - (displayln "--- TEST: - ----------------------------------------------------") - (displayln (- 0)) - (displayln (- 123)) - (displayln (- 100 1)) - (displayln (- 100 1 2)) - (displayln (- 100 1 2 3)) - (displayln (- 100 1 2 3 4)) -) diff --git a/test.txt b/test.txt deleted file mode 100644 index 0254d6f..0000000 --- a/test.txt +++ /dev/null @@ -1,202 +0,0 @@ -"Hello, World!" - -"=== GROUP: Syntax ==============================================" - -"--- TEST: begin ------------------------------------------------" -() -123 -456 -789 - -"--- TEST: if ---------------------------------------------------" -123 -123 -456 - -"--- TEST: quote ------------------------------------------------" -+ -+ -() -() -#true -#true -#false -#false -foo -foo -"foo" -"foo" -123 -123 -(cons 123 456) -(cons 123 456) - -"=== GROUP: Arcane Scheme Lisp internals ========================" - -"--- TEST: arcane/parse -----------------------------------------" -(displayln (+ 123 456)) - -"--- TEST: arcane/tokenize --------------------------------------" -((TOKEN_ROUND_OPEN . "(")) -((TOKEN_TAG . "false")) -((TOKEN_ROUND_OPEN . "(") (TOKEN_IDENT . "displayln") (TOKEN_ROUND_OPEN . "(") (TOKEN_IDENT . "list") (TOKEN_NUM . "1") (TOKEN_ROUND_CLOSE . ")") (TOKEN_ROUND_CLOSE . ")")) - -"--- TEST: arcane/typeof ----------------------------------------" -null -procedure -pair -boolean -symbol -string -number - -"=== GROUP: Basic data structures ===============================" - -"--- TEST: car --------------------------------------------------" -123 - -"--- TEST: cdr --------------------------------------------------" -456 - -"--- TEST: list -------------------------------------------------" -() -(123) -(123 456) - -"=== GROUP: Type predicates =====================================" - -"--- TEST: boolean? ---------------------------------------------" -#false -#false -#true -#true -#false -#false -#false -#false - -"--- TEST: char? ------------------------------------------------" -#false -#false -#false -#false -#false -#false -#false -#false - -"--- TEST: null? ------------------------------------------------" -#false -#true -#false -#false -#false -#false -#false -#false - -"--- TEST: number? ----------------------------------------------" -#false -#false -#false -#false -#false -#false -#true -#false - -"--- TEST: pair? ------------------------------------------------" -#false -#false -#false -#false -#false -#false -#false -#true - -"--- TEST: procedure? -------------------------------------------" -#true -#false -#false -#false -#false -#false -#false -#false - -"--- TEST: string? ----------------------------------------------" -#false -#false -#false -#false -#false -#true -#false -#false - -"--- TEST: symbol? ----------------------------------------------" -#false -#false -#false -#false -#true -#false -#false -#false - -"=== GROUP: Type conversion =====================================" - -"--- TEST: number->string ---------------------------------------" -"123" -"1e240" - -"--- TEST: string->symbol ---------------------------------------" - - -foo - -"--- TEST: symbol->string ---------------------------------------" -"foo" - -"=== GROUP: Logical operators ===================================" - -"--- TEST: not --------------------------------------------------" -#false -#false -#true -#false -#false -#false -#false - -"=== GROUP: Arithmetic operators ================================" - -"--- TEST: = ----------------------------------------------------" -#true -#true -#false -#true -#false -#false -#false -#true -#false -#false -#false -#false - -"--- TEST: + ----------------------------------------------------" -0 -123 -11 -111 -1111 - -"--- TEST: - ----------------------------------------------------" -0 -123 -99 -97 -94 -90 diff --git a/tests/arcane.scm b/tests/arcane.scm new file mode 100644 index 0000000..088bd91 --- /dev/null +++ b/tests/arcane.scm @@ -0,0 +1,31 @@ +(begin + (displayln "--- TEST: arcane/parse -----------------------------------------") + (displayln + (arcane/parse + (list + (cons 'TOKEN_ROUND_OPEN "(") + (cons 'TOKEN_IDENT "displayln") + (cons 'TOKEN_ROUND_OPEN "(") + (cons 'TOKEN_IDENT "+") + (cons 'TOKEN_NUM "123") + (cons 'TOKEN_NUM "456") + (cons 'TOKEN_ROUND_CLOSE ")") + (cons 'TOKEN_ROUND_CLOSE ")")))) + (newline) + (displayln "--- TEST: arcane/tokenize --------------------------------------") + (displayln (arcane/tokenize "(")) + (displayln (arcane/tokenize "#false")) + ;(displayln (arcane/tokenize "\"\"")) + ;(displayln (arcane/tokenize "\"qwe\"")) + (displayln (arcane/tokenize "(displayln (list 1))")) + (newline) + (displayln "--- TEST: arcane/typeof ----------------------------------------") + (displayln (arcane/typeof '())) + (displayln (arcane/typeof +)) + (displayln (arcane/typeof (cons 123 456))) + (displayln (arcane/typeof #false)) + ;(displayln (arcane/typeof #\n)) + (displayln (arcane/typeof 'foo)) + (displayln (arcane/typeof "foo")) + (displayln (arcane/typeof 123)) +) diff --git a/tests/arcane.txt b/tests/arcane.txt new file mode 100644 index 0000000..3481f96 --- /dev/null +++ b/tests/arcane.txt @@ -0,0 +1,16 @@ +"--- TEST: arcane/parse -----------------------------------------" +(displayln (+ 123 456)) + +"--- TEST: arcane/tokenize --------------------------------------" +((TOKEN_ROUND_OPEN . "(")) +((TOKEN_TAG . "false")) +((TOKEN_ROUND_OPEN . "(") (TOKEN_IDENT . "displayln") (TOKEN_ROUND_OPEN . "(") (TOKEN_IDENT . "list") (TOKEN_NUM . "1") (TOKEN_ROUND_CLOSE . ")") (TOKEN_ROUND_CLOSE . ")")) + +"--- TEST: arcane/typeof ----------------------------------------" +null +procedure +pair +boolean +symbol +string +number diff --git a/tests/arithm_ops.scm b/tests/arithm_ops.scm new file mode 100644 index 0000000..7423adb --- /dev/null +++ b/tests/arithm_ops.scm @@ -0,0 +1,30 @@ +(begin + (displayln "--- TEST: = ----------------------------------------------------") + (displayln(= 123)) + (displayln(= 123 123)) + (displayln(= 123 456)) + (displayln(= 123 123 123)) + (displayln(= 456 123 123)) + (displayln(= 123 456 123)) + (displayln(= 123 123 456)) + (displayln(= 123 123 123 123)) + (displayln(= 456 123 123 123)) + (displayln(= 123 456 123 123)) + (displayln(= 123 123 456 123)) + (displayln(= 123 123 123 456)) + (newline) + (displayln "--- TEST: + ----------------------------------------------------") + (displayln (+)) + (displayln (+ 123)) + (displayln (+ 1 10)) + (displayln (+ 1 10 100)) + (displayln (+ 1 10 100 1000)) + (newline) + (displayln "--- TEST: - ----------------------------------------------------") + (displayln (- 0)) + (displayln (- 123)) + (displayln (- 100 1)) + (displayln (- 100 1 2)) + (displayln (- 100 1 2 3)) + (displayln (- 100 1 2 3 4)) +) diff --git a/tests/arithm_ops.txt b/tests/arithm_ops.txt new file mode 100644 index 0000000..6e2086f --- /dev/null +++ b/tests/arithm_ops.txt @@ -0,0 +1,28 @@ +"--- TEST: = ----------------------------------------------------" +#true +#true +#false +#true +#false +#false +#false +#true +#false +#false +#false +#false + +"--- TEST: + ----------------------------------------------------" +0 +123 +11 +111 +1111 + +"--- TEST: - ----------------------------------------------------" +0 +123 +99 +97 +94 +90 diff --git a/tests/basic_data_structs.scm b/tests/basic_data_structs.scm new file mode 100644 index 0000000..7024f19 --- /dev/null +++ b/tests/basic_data_structs.scm @@ -0,0 +1,12 @@ +(begin + (displayln "--- TEST: car --------------------------------------------------") + (displayln (car (cons 123 456))) + (newline) + (displayln "--- TEST: cdr --------------------------------------------------") + (displayln (cdr (cons 123 456))) + (newline) + (displayln "--- TEST: list -------------------------------------------------") + (displayln (list)) + (displayln (list 123)) + (displayln (list 123 456)) +) diff --git a/tests/basic_data_structs.txt b/tests/basic_data_structs.txt new file mode 100644 index 0000000..3df277c --- /dev/null +++ b/tests/basic_data_structs.txt @@ -0,0 +1,10 @@ +"--- TEST: car --------------------------------------------------" +123 + +"--- TEST: cdr --------------------------------------------------" +456 + +"--- TEST: list -------------------------------------------------" +() +(123) +(123 456) diff --git a/tests/hello.scm b/tests/hello.scm new file mode 100644 index 0000000..63591b1 --- /dev/null +++ b/tests/hello.scm @@ -0,0 +1 @@ +(displayln "Hello, World!") diff --git a/tests/hello.txt b/tests/hello.txt new file mode 100644 index 0000000..b0d5558 --- /dev/null +++ b/tests/hello.txt @@ -0,0 +1 @@ +"Hello, World!" diff --git a/tests/logic_ops.scm b/tests/logic_ops.scm new file mode 100644 index 0000000..8957b5c --- /dev/null +++ b/tests/logic_ops.scm @@ -0,0 +1,11 @@ +(begin + (displayln "--- TEST: not --------------------------------------------------") + (displayln (not '())) + (displayln (not #true)) + (displayln (not #false)) + ;(displayln (not #\n)) + (displayln (not 'foo)) + (displayln (not "foo")) + (displayln (not 123)) + (displayln (not (cons 123 456))) +) diff --git a/tests/logic_ops.txt b/tests/logic_ops.txt new file mode 100644 index 0000000..61ea17f --- /dev/null +++ b/tests/logic_ops.txt @@ -0,0 +1,8 @@ +"--- TEST: not --------------------------------------------------" +#false +#false +#true +#false +#false +#false +#false diff --git a/tests/syntax.scm b/tests/syntax.scm new file mode 100644 index 0000000..7e2a21b --- /dev/null +++ b/tests/syntax.scm @@ -0,0 +1,32 @@ +(begin + (displayln "--- TEST: begin ------------------------------------------------") + (displayln (begin)) + (displayln (begin 123)) + (displayln (begin 123 456)) + (displayln (begin 123 456 789)) + (newline) + (displayln "--- TEST: if ---------------------------------------------------") + (displayln (if #true 123 456)) + (displayln (if "foo" 123 456)) + (displayln (if #false 123 456)) + (newline) + (displayln "--- TEST: quote ------------------------------------------------") + (displayln (quote +)) + (displayln '+) + (displayln (quote ())) + (displayln '()) + (displayln (quote #true)) + (displayln '#true) + (displayln (quote #false)) + (displayln '#false) + ;(displayln (quote #\n)) + ;(displayln '#\n) + (displayln (quote foo)) + (displayln 'foo) + (displayln (quote "foo")) + (displayln '"foo") + (displayln (quote 123)) + (displayln '123) + (displayln (quote (cons 123 456))) + (displayln '(cons 123 456)) +) diff --git a/tests/syntax.txt b/tests/syntax.txt new file mode 100644 index 0000000..ecb2d1a --- /dev/null +++ b/tests/syntax.txt @@ -0,0 +1,28 @@ +"--- TEST: begin ------------------------------------------------" +() +123 +456 +789 + +"--- TEST: if ---------------------------------------------------" +123 +123 +456 + +"--- TEST: quote ------------------------------------------------" ++ ++ +() +() +#true +#true +#false +#false +foo +foo +"foo" +"foo" +123 +123 +(cons 123 456) +(cons 123 456) diff --git a/tests/type_conv.scm b/tests/type_conv.scm new file mode 100644 index 0000000..fce1d04 --- /dev/null +++ b/tests/type_conv.scm @@ -0,0 +1,14 @@ +(begin + (displayln "--- TEST: number->string ---------------------------------------") + (displayln (number->string 123)) + ;(displayln (number->string -123)) + (displayln (number->string 123456 16)) + (newline) + (displayln "--- TEST: string->symbol ---------------------------------------") + (displayln (string->symbol "")) + (displayln (string->symbol " ")) + (displayln (string->symbol "foo")) + (newline) + (displayln "--- TEST: symbol->string ---------------------------------------") + (displayln (symbol->string 'foo)) +) diff --git a/tests/type_conv.txt b/tests/type_conv.txt new file mode 100644 index 0000000..0420de9 --- /dev/null +++ b/tests/type_conv.txt @@ -0,0 +1,11 @@ +"--- TEST: number->string ---------------------------------------" +"123" +"1e240" + +"--- TEST: string->symbol ---------------------------------------" + + +foo + +"--- TEST: symbol->string ---------------------------------------" +"foo" diff --git a/tests/type_preds.scm b/tests/type_preds.scm new file mode 100644 index 0000000..2ec3662 --- /dev/null +++ b/tests/type_preds.scm @@ -0,0 +1,89 @@ +(begin + (displayln "--- TEST: boolean? ---------------------------------------------") + (displayln (boolean? +)) + (displayln (boolean? '())) + (displayln (boolean? #true)) + (displayln (boolean? #false)) + ;(displayln (boolean? #\n)) + (displayln (boolean? 'foo)) + (displayln (boolean? "foo")) + (displayln (boolean? 123)) + (displayln (boolean? (cons 123 456))) + (newline) + (displayln "--- TEST: char? ------------------------------------------------") + (displayln (char? +)) + (displayln (char? '())) + (displayln (char? #true)) + (displayln (char? #false)) + ;(displayln (char? #\n)) + (displayln (char? 'foo)) + (displayln (char? "foo")) + (displayln (char? 123)) + (displayln (char? (cons 123 456))) + (newline) + (displayln "--- TEST: null? ------------------------------------------------") + (displayln (null? +)) + (displayln (null? '())) + (displayln (null? #true)) + (displayln (null? #false)) + ;(displayln (null? #\n)) + (displayln (null? 'foo)) + (displayln (null? "foo")) + (displayln (null? 123)) + (displayln (null? (cons 123 456))) + (newline) + (displayln "--- TEST: number? ----------------------------------------------") + (displayln (number? +)) + (displayln (number? '())) + (displayln (number? #true)) + (displayln (number? #false)) + ;(displayln (number? #\n)) + (displayln (number? 'foo)) + (displayln (number? "foo")) + (displayln (number? 123)) + (displayln (number? (cons 123 456))) + (newline) + (displayln "--- TEST: pair? ------------------------------------------------") + (displayln (pair? +)) + (displayln (pair? '())) + (displayln (pair? #true)) + (displayln (pair? #false)) + ;(displayln (pair? #\n)) + (displayln (pair? 'foo)) + (displayln (pair? "foo")) + (displayln (pair? 123)) + (displayln (pair? (cons 123 456))) + (newline) + (displayln "--- TEST: procedure? -------------------------------------------") + (displayln (procedure? +)) + (displayln (procedure? '())) + (displayln (procedure? #true)) + (displayln (procedure? #false)) + ;(displayln (procedure? #\n)) + (displayln (procedure? 'foo)) + (displayln (procedure? "foo")) + (displayln (procedure? 123)) + (displayln (procedure? (cons 123 456))) + (newline) + (displayln "--- TEST: string? ----------------------------------------------") + (displayln (string? +)) + (displayln (string? '())) + (displayln (string? #true)) + (displayln (string? #false)) + ;(displayln (string? #\n)) + (displayln (string? 'foo)) + (displayln (string? "foo")) + (displayln (string? 123)) + (displayln (string? (cons 123 456))) + (newline) + (displayln "--- TEST: symbol? ----------------------------------------------") + (displayln (symbol? +)) + (displayln (symbol? '())) + (displayln (symbol? #true)) + (displayln (symbol? #false)) + ;(displayln (symbol? #\n)) + (displayln (symbol? 'foo)) + (displayln (symbol? "foo")) + (displayln (symbol? 123)) + (displayln (symbol? (cons 123 456))) +) diff --git a/tests/type_preds.txt b/tests/type_preds.txt new file mode 100644 index 0000000..c23dbad --- /dev/null +++ b/tests/type_preds.txt @@ -0,0 +1,79 @@ +"--- TEST: boolean? ---------------------------------------------" +#false +#false +#true +#true +#false +#false +#false +#false + +"--- TEST: char? ------------------------------------------------" +#false +#false +#false +#false +#false +#false +#false +#false + +"--- TEST: null? ------------------------------------------------" +#false +#true +#false +#false +#false +#false +#false +#false + +"--- TEST: number? ----------------------------------------------" +#false +#false +#false +#false +#false +#false +#true +#false + +"--- TEST: pair? ------------------------------------------------" +#false +#false +#false +#false +#false +#false +#false +#true + +"--- TEST: procedure? -------------------------------------------" +#true +#false +#false +#false +#false +#false +#false +#false + +"--- TEST: string? ----------------------------------------------" +#false +#false +#false +#false +#false +#true +#false +#false + +"--- TEST: symbol? ----------------------------------------------" +#false +#false +#false +#false +#true +#false +#false +#false