comparison tests/automated/weak-tests.el @ 1636:f062c28f4a11

[xemacs-hg @ 2003-08-20 11:53:41 by crestani] 2003-08-19 Marcus Crestani <crestani@informatik.uni-tuebingen.de> Markus Kaltenbach <makalten@informatik.uni-tuebingen.de> * automated/weak-tests.el: Added tests for weak-lists.
author crestani
date Wed, 20 Aug 2003 11:53:44 +0000
parents 7532e276a83a
children 90502933fb98
comparison
equal deleted inserted replaced
1635:7107ed3b2272 1636:f062c28f4a11
24 24
25 ;;; Synched up with: Not in FSF. 25 ;;; Synched up with: Not in FSF.
26 26
27 ;;; Commentary: 27 ;;; Commentary:
28 28
29 ;;; Test implementation of weak boxes and ephemerons 29 ;;; Test implementation of weak boxes, ephemerons, and weak lists
30 ;;; See test-harness.el 30 ;;; See test-harness.el
31 31
32 (condition-case err 32 (condition-case err
33 (require 'test-harness) 33 (require 'test-harness)
34 (file-error 34 (file-error
35 (when (and (boundp 'load-file-name) (stringp load-file-name)) 35 (when (and (boundp 'load-file-name) (stringp load-file-name))
36 (push (file-name-directory load-file-name) load-path) 36 (push (file-name-directory load-file-name) load-path)
37 (require 'test-harness)))) 37 (require 'test-harness))))
38 38
39 (garbage-collect) 39 (garbage-collect)
40
41 ;; tests for weak-boxes
40 (let ((w (make-weak-box (cons 2 3)))) 42 (let ((w (make-weak-box (cons 2 3))))
41 (Assert (equal (cons 2 3) (weak-box-ref w))) 43 (Assert (equal (cons 2 3) (weak-box-ref w)))
42 (garbage-collect) 44 (garbage-collect)
43 (Assert (not (weak-box-ref w)))) 45 (Assert (not (weak-box-ref w))))
44 46
45 (garbage-collect) 47 (garbage-collect)
46 48
49 ;; tests for ephemerons
47 (let* ((p (cons 3 4)) 50 (let* ((p (cons 3 4))
48 (finalized-p nil) 51 (finalized-p nil)
49 (eph1 (make-ephemeron (cons 1 2) p 52 (eph1 (make-ephemeron (cons 1 2) p
50 '(lambda (value) 53 '(lambda (value)
51 (setq finalized-p t)))) 54 (setq finalized-p t))))
61 64
62 (garbage-collect) 65 (garbage-collect)
63 66
64 (Assert (eq p (ephemeron-ref eph2)))) 67 (Assert (eq p (ephemeron-ref eph2))))
65 68
69 (garbage-collect)
70
71 ;; tests for simple weak-lists
72 (let* ((a (cons 23 42))
73 (b (cons 42 65))
74 (testlist (list a b))
75 (weaklist1 (make-weak-list 'simple))
76 (weaklist2 (make-weak-list 'simple))
77 (weaklist3 (make-weak-list 'simple))
78 (weaklist4 (make-weak-list 'simple)))
79 (set-weak-list-list weaklist1 testlist)
80 (set-weak-list-list weaklist2 (list (cons 1 2) a b))
81 (set-weak-list-list weaklist3 (list a (cons 1 2) b))
82 (set-weak-list-list weaklist4 (list a b (cons 1 2)))
83 (Assert (weak-list-p weaklist1))
84 (Assert (eq (weak-list-type weaklist1) 'simple))
85 (Assert (weak-list-p weaklist2))
86 (Assert (eq (weak-list-type weaklist2) 'simple))
87 (Assert (weak-list-p weaklist3))
88 (Assert (eq (weak-list-type weaklist3) 'simple))
89 (Assert (weak-list-p weaklist4))
90 (Assert (eq (weak-list-type weaklist4) 'simple))
91
92 (garbage-collect)
93
94 (Assert (eq (weak-list-list weaklist1) testlist))
95 (Assert (equal (weak-list-list weaklist2) testlist))
96 (Assert (equal (weak-list-list weaklist3) testlist))
97 (Assert (equal (weak-list-list weaklist4) testlist)))
98
99 (garbage-collect)
100
101 ;; tests for assoc weak-lists
102 (let* ((a (cons 23 42))
103 (b (cons a a))
104 (testlist (list b b))
105 (weaklist1 (make-weak-list 'assoc))
106 (weaklist2 (make-weak-list 'assoc))
107 (weaklist3 (make-weak-list 'assoc))
108 (weaklist4 (make-weak-list 'assoc)))
109 (set-weak-list-list weaklist1 testlist)
110 (set-weak-list-list weaklist2 (list b (cons (cons 1 2) a) b))
111 (set-weak-list-list weaklist3 (list b (cons a (cons 1 2)) b))
112 (set-weak-list-list weaklist4 (list b (cons (cons 1 2) (cons 3 4)) b))
113 (Assert (weak-list-p weaklist1))
114 (Assert (eq (weak-list-type weaklist1) 'assoc))
115 (Assert (weak-list-p weaklist2))
116 (Assert (eq (weak-list-type weaklist2) 'assoc))
117 (Assert (weak-list-p weaklist3))
118 (Assert (eq (weak-list-type weaklist3) 'assoc))
119 (Assert (weak-list-p weaklist4))
120 (Assert (eq (weak-list-type weaklist4) 'assoc))
121
122 (garbage-collect)
123
124 (Assert (eq (weak-list-list weaklist1) testlist))
125 (Assert (equal (weak-list-list weaklist2) testlist))
126 (Assert (equal (weak-list-list weaklist3) testlist))
127 (Assert (equal (weak-list-list weaklist4) testlist)))
128
129 (garbage-collect)
130
131 ;; tests for key-assoc weak-lists
132 (let* ((a (cons 23 42))
133 (b (cons a a))
134 (testlist (list b b))
135 (weaklist1 (make-weak-list 'key-assoc))
136 (weaklist2 (make-weak-list 'key-assoc))
137 (weaklist3 (make-weak-list 'key-assoc))
138 (weaklist4 (make-weak-list 'key-assoc)))
139 (set-weak-list-list weaklist1 testlist)
140 (set-weak-list-list weaklist2 (list b (cons (cons 1 2) a) b))
141 (set-weak-list-list weaklist3 (list b (cons a (cons 1 2)) b))
142 (set-weak-list-list weaklist4 (list b (cons (cons 1 2) (cons 3 4)) b))
143 (Assert (weak-list-p weaklist1))
144 (Assert (eq (weak-list-type weaklist1) 'key-assoc))
145 (Assert (weak-list-p weaklist2))
146 (Assert (eq (weak-list-type weaklist2) 'key-assoc))
147 (Assert (weak-list-p weaklist3))
148 (Assert (eq (weak-list-type weaklist3) 'key-assoc))
149 (Assert (weak-list-p weaklist4))
150 (Assert (eq (weak-list-type weaklist4) 'key-assoc))
151
152 (garbage-collect)
153
154 (Assert (eq (weak-list-list weaklist1) testlist))
155 (Assert (equal (weak-list-list weaklist2) testlist))
156 (Assert (equal (weak-list-list weaklist3) (list b (cons a (cons 1 2)) b)))
157 (Assert (equal (weak-list-list weaklist4) testlist)))
158
159 (garbage-collect)
160
161 ;; tests for value-assoc weak-lists
162 (let* ((a (cons 23 42))
163 (b (cons a a))
164 (testlist (list b b))
165 (weaklist1 (make-weak-list 'value-assoc))
166 (weaklist2 (make-weak-list 'value-assoc))
167 (weaklist3 (make-weak-list 'value-assoc))
168 (weaklist4 (make-weak-list 'value-assoc)))
169 (set-weak-list-list weaklist1 testlist)
170 (set-weak-list-list weaklist2 (list b (cons (cons 1 2) a) b))
171 (set-weak-list-list weaklist3 (list b (cons a (cons 1 2)) b))
172 (set-weak-list-list weaklist4 (list b (cons (cons 1 2) (cons 3 4)) b))
173 (Assert (weak-list-p weaklist1))
174 (Assert (eq (weak-list-type weaklist1) 'value-assoc))
175 (Assert (weak-list-p weaklist2))
176 (Assert (eq (weak-list-type weaklist2) 'value-assoc))
177 (Assert (weak-list-p weaklist3))
178 (Assert (eq (weak-list-type weaklist3) 'value-assoc))
179 (Assert (weak-list-p weaklist4))
180 (Assert (eq (weak-list-type weaklist4) 'value-assoc))
181
182 (garbage-collect)
183
184 (Assert (eq (weak-list-list weaklist1) testlist))
185 (Assert (equal (weak-list-list weaklist2) (list b (cons (cons 1 2) a) b)))
186 (Assert (equal (weak-list-list weaklist3) testlist))
187 (Assert (equal (weak-list-list weaklist4) testlist)))
188
189 (garbage-collect)
190
191 ;; tests for full-assoc weak-lists
192 (let* ((a (cons 23 42))
193 (b (cons a a))
194 (testlist (list b b))
195 (weaklist1 (make-weak-list 'full-assoc))
196 (weaklist2 (make-weak-list 'full-assoc))
197 (weaklist3 (make-weak-list 'full-assoc))
198 (weaklist4 (make-weak-list 'full-assoc)))
199 (set-weak-list-list weaklist1 testlist)
200 (set-weak-list-list weaklist2 (list b (cons (cons 1 2) a) b))
201 (set-weak-list-list weaklist3 (list b (cons a (cons 1 2)) b))
202 (set-weak-list-list weaklist4 (list b (cons (cons 1 2) (cons 3 4)) b))
203 (Assert (weak-list-p weaklist1))
204 (Assert (eq (weak-list-type weaklist1) 'full-assoc))
205 (Assert (weak-list-p weaklist2))
206 (Assert (eq (weak-list-type weaklist2) 'full-assoc))
207 (Assert (weak-list-p weaklist3))
208 (Assert (eq (weak-list-type weaklist3) 'full-assoc))
209 (Assert (weak-list-p weaklist4))
210 (Assert (eq (weak-list-type weaklist4) 'full-assoc))
211
212 (garbage-collect)
213
214 (Assert (eq (weak-list-list weaklist1) testlist))
215 (Assert (equal (weak-list-list weaklist2) (list b (cons (cons 1 2) a) b)))
216 (Assert (equal (weak-list-list weaklist3) (list b (cons a (cons 1 2)) b)))
217 (Assert (equal (weak-list-list weaklist4) testlist)))
218
219 (garbage-collect)