altos/scheme: Split tests out from build sources
[fw/altos] / src / scheme / tiny-test / ao_scheme_tiny_test.scheme
diff --git a/src/scheme/tiny-test/ao_scheme_tiny_test.scheme b/src/scheme/tiny-test/ao_scheme_tiny_test.scheme
new file mode 100644 (file)
index 0000000..94c90ff
--- /dev/null
@@ -0,0 +1,56 @@
+                                       ; Basic syntax tests
+
+(define _assert-eq_
+  (macro (a b)
+          (list cond
+                (list (list eq? a b)
+                      )
+                (list 'else
+                      (list display "failed: ")
+                      (list write (list quote a))
+                      (list newline)
+                      (list exit 1)
+                      )
+                )
+          )
+  )
+
+(define _assert-equal_
+  (macro (a b)
+          (list cond
+                (list (list equal? a b)
+                      )
+                (list 'else
+                      (list display "failed: ")
+                      (list write (list quote a))
+                      (list newline)
+                      (list exit 1)
+                      )
+                )
+          )
+  )
+
+(_assert-eq_ (or #f #t) #t)
+(_assert-eq_ (and #t #f) #f)
+(_assert-eq_ (if (> 3 2) 'yes) 'yes)
+(_assert-eq_ (if (> 3 2) 'yes 'no) 'yes)
+(_assert-eq_ (if (> 2 3) 'no 'yes) 'yes)
+(_assert-eq_ (if (> 2 3) 'no) #f)
+
+(_assert-eq_ (letrec ((a 1) (b a)) (+ a b)) 2)
+
+(_assert-eq_ (equal? '(a b c) '(a b c)) #t)
+(_assert-eq_ (equal? '(a b c) '(a b b)) #f)
+
+(_assert-equal_ (member '(2) '((1) (2) (3)))  '((2) (3)))
+(_assert-equal_ (member '(4) '((1) (2) (3))) #f)
+
+(_assert-equal_ (memq 2 '(1 2 3)) '(2 3))
+(_assert-equal_ (memq 4 '(1 2 3)) #f)
+(_assert-equal_ (memq '(2) '((1) (2) (3))) #f)
+
+(_assert-equal_ (assq 'a '((a 1) (b 2) (c 3))) '(a 1))
+(_assert-equal_ (assoc '(c) '((a 1) (b 2) ((c) 3))) '((c) 3))
+
+(_assert-equal_ (map cadr '((a b) (d e) (g h))) '(b e h))
+