altos/scheme: Allow unicode in lexer
[fw/altos] / src / scheme / tiny-test / ao_scheme_tiny_test.scheme
1                                         ; Basic syntax tests
2
3 (define _assert-eq_
4   (macro (a b)
5            (list cond
6                  (list (list eq? a b)
7                        )
8                  (list 'else
9                        (list display "failed: ")
10                        (list write (list quote a))
11                        (list newline)
12                        (list exit 1)
13                        )
14                  )
15            )
16   )
17
18 (define _assert-equal_
19   (macro (a b)
20            (list cond
21                  (list (list equal? a b)
22                        )
23                  (list 'else
24                        (list display "failed: ")
25                        (list write (list quote a))
26                        (list newline)
27                        (list exit 1)
28                        )
29                  )
30            )
31   )
32
33 (_assert-eq_ (or #f #t) #t)
34 (_assert-eq_ (and #t #f) #f)
35 (_assert-eq_ (if (> 3 2) 'yes) 'yes)
36 (_assert-eq_ (if (> 3 2) 'yes 'no) 'yes)
37 (_assert-eq_ (if (> 2 3) 'no 'yes) 'yes)
38 (_assert-eq_ (if (> 2 3) 'no) #f)
39
40 (_assert-eq_ (letrec ((a 1) (b a)) (+ a b)) 2)
41
42 (_assert-eq_ (equal? '(a b c) '(a b c)) #t)
43 (_assert-eq_ (equal? '(a b c) '(a b b)) #f)
44
45 (_assert-equal_ (member '(2) '((1) (2) (3)))  '((2) (3)))
46 (_assert-equal_ (member '(4) '((1) (2) (3))) #f)
47
48 (_assert-equal_ (memq 2 '(1 2 3)) '(2 3))
49 (_assert-equal_ (memq 4 '(1 2 3)) #f)
50 (_assert-equal_ (memq '(2) '((1) (2) (3))) #f)
51
52 (_assert-equal_ (assq 'a '((a 1) (b 2) (c 3))) '(a 1))
53 (_assert-equal_ (assoc '(c) '((a 1) (b 2) ((c) 3))) '((c) 3))
54
55 (_assert-equal_ (map cadr '((a b) (d e) (g h))) '(b e h))
56