1:
2:
3:
4:
5: (use gauche.test)
6: (test-start "keywords")
7:
8:
9: (test-section "keywords")
10:
11: (test* "reader" #t (keyword? :abc))
12: (test* "keyword?" #f (keyword? 'abc))
13: (test* "make-keyword" #t (keyword? (make-keyword 'abc)))
14: (test* "keyword->string" "abc" (keyword->string (make-keyword 'abc)))
15: (test* "eq?" #t (eq? :a :a))
16: (test* "eq?" #f (eq? :a 'a))
17: (test* "eqv?" #t (eqv? :a :a))
18: (test* "eqv?" #f (eqv? :a 'a))
19:
20:
21: (test-section "get-keyword")
22:
23: (define *key-value-list* '(:a 33 :b "foo" :c :d :d ook :a 99))
24:
25: (test* "get-keyword" "foo"
26: (get-keyword :b *key-value-list*))
27: (test* "get-keyword" 33
28: (get-keyword :a *key-value-list*))
29: (test* "get-keyword" 'ook
30: (get-keyword :d *key-value-list*))
31: (test* "get-keyword" *test-error*
32: (get-keyword :z *key-value-list*))
33: (test* "get-keyword" 88
34: (get-keyword :z *key-value-list* 88))
35: (test* "get-keyword" *test-error*
36: (get-keyword :z (cdr *key-value-list*)))
37:
38: (test* "get-keyword*" "foo"
39: (get-keyword* :b *key-value-list*))
40: (test* "get-keyword*" 33
41: (get-keyword* :a *key-value-list*))
42: (test* "get-keyword*" 'ook
43: (get-keyword* :d *key-value-list*))
44: (test* "get-keyword*" 'ook
45: (get-keyword* :d *key-value-list* (error "oops")))
46: (test* "get-keyword*" *test-error*
47: (get-keyword* :z *key-value-list*))
48: (test* "get-keyword*" 88
49: (get-keyword* :z *key-value-list* 88))
50: (test* "get-keyword*" *test-error*
51: (get-keyword* :z (cdr *key-value-list*)))
52:
53:
54: (test-section "delete-keyword")
55:
56: (test* "delete-keyword" '((:a 3 :b 5) (:a 3))
57: (let* ((x (list :a 3 :b 5))
58: (y (delete-keyword :b x)))
59: (list x y)))
60: (test* "delete-keyword" '((:a 3 :b 5) (:b 5))
61: (let* ((x (list :a 3 :b 5))
62: (y (delete-keyword :a x)))
63: (list x y)))
64: (test* "delete-keyword" '((:a 3 :b 5) (:a 3 :b 5))
65: (let* ((x (list :a 3 :b 5))
66: (y (delete-keyword :c x)))
67: (list x y)))
68: (test* "delete-keyword" '((:a 3) ())
69: (let* ((x (list :a 3))
70: (y (delete-keyword :a x)))
71: (list x y)))
72: (test* "delete-keyword" '(() ())
73: (let* ((x ())
74: (y (delete-keyword :a x)))
75: (list x y)))
76:
77: (test* "delete-keyword" '((:a 3 :a 5) ())
78: (let* ((x (list :a 3 :a 5))
79: (y (delete-keyword :a x)))
80: (list x y)))
81: (test* "delete-keyword" '((:a 3 :b 4 :b 5) (:a 3))
82: (let* ((x (list :a 3 :b 4 :b 5))
83: (y (delete-keyword :b x)))
84: (list x y)))
85: (test* "delete-keyword" '((:a 3 :b 4 :a 5) (:b 4))
86: (let* ((x (list :a 3 :b 4 :a 5))
87: (y (delete-keyword :a x)))
88: (list x y)))
89:
90: (test* "delete-keyword!" '((:a 3) (:a 3))
91: (let* ((x (list :a 3 :b 5))
92: (y (delete-keyword! :b x)))
93: (list x y)))
94: (test* "delete-keyword!" '((:a 3 :b 5) (:b 5))
95: (let* ((x (list :a 3 :b 5))
96: (y (delete-keyword! :a x)))
97: (list x y)))
98: (test* "delete-keyword!" '((:a 3 :b 5) (:a 3 :b 5))
99: (let* ((x (list :a 3 :b 5))
100: (y (delete-keyword! :c x)))
101: (list x y)))
102: (test* "delete-keyword!" '((:a 3) ())
103: (let* ((x (list :a 3))
104: (y (delete-keyword! :a x)))
105: (list x y)))
106: (test* "delete-keyword!" '(() ())
107: (let* ((x ())
108: (y (delete-keyword! :a x)))
109: (list x y)))
110:
111: (test* "delete-keyword!" '((:a 3 :a 5) ())
112: (let* ((x (list :a 3 :a 5))
113: (y (delete-keyword! :a x)))
114: (list x y)))
115: (test* "delete-keyword!" '((:a 3) (:a 3))
116: (let* ((x (list :a 3 :b 4 :b 5))
117: (y (delete-keyword! :b x)))
118: (list x y)))
119: (test* "delete-keyword!" '((:a 3 :b 4) (:b 4))
120: (let* ((x (list :a 3 :b 4 :a 5))
121: (y (delete-keyword! :a x)))
122: (list x y)))
123:
124: (test-end)