1
#! /usr/bin/env sscm -C UTF-8
2
;; -*- buffer-file-coding-system: utf-8 -*-
4
;; Filename : test-equal.scm
5
;; About : unit tests for equal?
7
;; Copyright (C) 2006 YAMAMOTO Kengo <yamaken AT bp.iij4u.or.jp>
8
;; Copyright (c) 2007 SigScheme Project <uim AT freedesktop.org>
10
;; All rights reserved.
12
;; Redistribution and use in source and binary forms, with or without
13
;; modification, are permitted provided that the following conditions
16
;; 1. Redistributions of source code must retain the above copyright
17
;; notice, this list of conditions and the following disclaimer.
18
;; 2. Redistributions in binary form must reproduce the above copyright
19
;; notice, this list of conditions and the following disclaimer in the
20
;; documentation and/or other materials provided with the distribution.
21
;; 3. Neither the name of authors nor the names of its contributors
22
;; may be used to endorse or promote products derived from this software
23
;; without specific prior written permission.
25
;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
26
;; IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
27
;; THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28
;; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
29
;; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31
;; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32
;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33
;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34
;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
(load "test/unittest.scm")
40
(define case-insensitive-symbol? #f)
42
(tn "equal? invalid form")
43
(assert-error (tn) (lambda () (equal?)))
44
(assert-error (tn) (lambda () (equal? #f)))
45
(assert-error (tn) (lambda () (equal? #f #f #f)))
47
(tn "equal? different types")
48
(assert-eq? (tn) #f (equal? 1 #\1))
49
(assert-eq? (tn) #f (equal? #\1 "1"))
50
(assert-eq? (tn) #f (equal? #\1 '("1")))
51
(assert-eq? (tn) #f (equal? '#("1") '("1")))
54
(assert-eq? (tn) #t (equal? #f #f))
55
(assert-eq? (tn) #f (equal? #f #t))
56
(assert-eq? (tn) #f (equal? #t #f))
57
(assert-eq? (tn) #t (equal? #t #t))
60
(assert-eq? (tn) #t (equal? '() '()))
61
(if (and (provided? "sigscheme")
62
(provided? "siod-bugs"))
64
(assert-eq? (tn) #t (equal? #f '()))
65
(assert-eq? (tn) #t (equal? '() #f)))
67
(assert-eq? (tn) #f (equal? #f '()))
68
(assert-eq? (tn) #f (equal? '() #f))))
69
(if (symbol-bound? 'vector?)
71
(assert-eq? (tn) #f (equal? '() '#()))
72
(assert-eq? (tn) #f (equal? '#() '()))))
75
(if (provided? "sigscheme")
77
(assert-eq? (tn) #t (equal? (eof) (eof)))
78
(assert-eq? (tn) #f (equal? (eof) (undef)))
79
(assert-eq? (tn) #f (equal? (undef) (eof)))
80
(assert-eq? (tn) #f (equal? '() (eof)))
81
(assert-eq? (tn) #f (equal? (eof) '()))
82
(assert-eq? (tn) #f (equal? #f (eof)))
83
(assert-eq? (tn) #f (equal? (eof) #f))))
85
(tn "equal? #<undef>")
86
(if (provided? "sigscheme")
88
(assert-eq? (tn) #t (equal? (undef) (undef)))
89
(assert-eq? (tn) #f (equal? (eof) (undef)))
90
(assert-eq? (tn) #f (equal? (undef) (eof)))
91
(assert-eq? (tn) #f (equal? '() (undef)))
92
(assert-eq? (tn) #f (equal? (undef) '()))
93
(assert-eq? (tn) #f (equal? #f (undef)))
94
(assert-eq? (tn) #f (equal? (undef) #f))))
97
(assert-eq? (tn) #t (equal? 0 0))
98
(assert-eq? (tn) #t (equal? 1 1))
99
(assert-eq? (tn) #t (equal? 3 3))
100
(assert-eq? (tn) #t (equal? -1 -1))
101
(assert-eq? (tn) #t (equal? -3 -3))
103
(assert-eq? (tn) #f (equal? 0 1))
104
(assert-eq? (tn) #f (equal? 1 0))
105
(assert-eq? (tn) #f (equal? 1 3))
106
(assert-eq? (tn) #f (equal? 3 1))
107
(assert-eq? (tn) #f (equal? -1 1))
108
(assert-eq? (tn) #f (equal? 1 -1))
109
(assert-eq? (tn) #f (equal? -3 3))
110
(assert-eq? (tn) #f (equal? 3 -3))
111
(assert-eq? (tn) #f (equal? -1 -3))
112
(assert-eq? (tn) #f (equal? -3 -1))
115
(assert-eq? (tn) #t (equal? 'symbol 'symbol))
116
(assert-eq? (tn) #f (equal? 'symbol1 'symbol2))
117
(if (and (provided? "sigscheme")
118
(provided? "strict-r5rs")
119
case-insensitive-symbol?)
121
(assert-eq? (tn) #t (equal? 'symbol 'SYMBOL))
122
(assert-eq? (tn) #t (equal? 'SYMBOL 'symbol))
123
(assert-eq? (tn) #t (equal? 'symbol 'Symbol))
124
(assert-eq? (tn) #t (equal? 'Symbol 'symbol))
125
(assert-eq? (tn) #t (equal? 'symbol 'syMBoL))
126
(assert-eq? (tn) #t (equal? 'syMBoL 'symbol)))
128
(assert-eq? (tn) #f (equal? 'symbol 'SYMBOL))
129
(assert-eq? (tn) #f (equal? 'SYMBOL 'symbol))
130
(assert-eq? (tn) #f (equal? 'symbol 'Symbol))
131
(assert-eq? (tn) #f (equal? 'Symbol 'symbol))
132
(assert-eq? (tn) #f (equal? 'symbol 'syMBoL))
133
(assert-eq? (tn) #f (equal? 'syMBoL 'symbol))))
135
(tn "equal? singlebyte char")
136
(assert-eq? (tn) #t (equal? #\a #\a))
137
(assert-eq? (tn) #f (equal? #\a #\b))
138
(assert-eq? (tn) #f (equal? #\b #\a))
139
(assert-eq? (tn) #t (equal? #\b #\b))
143
(assert-eq? (tn) #t (equal? c1 c1))
144
(assert-eq? (tn) #t (equal? c2 c2)))
146
(tn "equal? multibyte char")
147
(assert-eq? (tn) #t (equal? #\あ #\あ))
148
(assert-eq? (tn) #f (equal? #\あ #\い))
149
(assert-eq? (tn) #f (equal? #\い #\あ))
150
(assert-eq? (tn) #t (equal? #\い #\い))
154
(assert-eq? (tn) #t (equal? c1 c1))
155
(assert-eq? (tn) #t (equal? c2 c2)))
157
(tn "equal? singlebyte string")
158
(assert-eq? (tn) #t (equal? "" ""))
159
(assert-eq? (tn) #t (equal? "a" "a"))
160
(assert-eq? (tn) #t (equal? "b" "b"))
161
(assert-eq? (tn) #t (equal? "aBc12!" "aBc12!"))
166
(assert-eq? (tn) #t (equal? s1 s1))
167
(assert-eq? (tn) #t (equal? s2 s2))
168
(assert-eq? (tn) #t (equal? s3 s3))
169
(assert-eq? (tn) #t (equal? s4 s4)))
170
(assert-eq? (tn) #f (equal? "" "a"))
171
(assert-eq? (tn) #f (equal? "a" ""))
172
(assert-eq? (tn) #f (equal? "a" "b"))
173
(assert-eq? (tn) #f (equal? "b" "a"))
174
(assert-eq? (tn) #f (equal? "a" "A"))
175
(assert-eq? (tn) #f (equal? "A" "a"))
176
(assert-eq? (tn) #f (equal? "aBc123!" "aBc12!"))
177
(assert-eq? (tn) #f (equal? "aBc12!" "aBc123!"))
179
(tn "equal? multibyte string")
180
(assert-eq? (tn) #t (equal? "あ" "あ"))
181
(assert-eq? (tn) #t (equal? "い" "い"))
182
(assert-eq? (tn) #t (equal? "あ0イう12!" "あ0イう12!"))
186
(assert-eq? (tn) #t (equal? s1 s1))
187
(assert-eq? (tn) #t (equal? s2 s2))
188
(assert-eq? (tn) #t (equal? s3 s3)))
189
(assert-eq? (tn) #f (equal? "" "あ"))
190
(assert-eq? (tn) #f (equal? "あ" ""))
191
(assert-eq? (tn) #f (equal? "あ" "い"))
192
(assert-eq? (tn) #f (equal? "い" "あ"))
193
(assert-eq? (tn) #f (equal? "あ" "ア"))
194
(assert-eq? (tn) #f (equal? "ア" "あ"))
195
(assert-eq? (tn) #f (equal? "あ0イうぇ12!" "あ0イう12!"))
196
(assert-eq? (tn) #f (equal? "あ0イう12!" "あ0イうぇ12!"))
198
(tn "equal? procedure")
199
(assert-eq? (tn) #t (equal? + +))
200
(assert-eq? (tn) #f (equal? + -))
201
(assert-eq? (tn) #f (equal? - +))
202
(assert-eq? (tn) #t (equal? - -))
204
(assert-eq? (tn) #t (equal? + plus))
205
(assert-eq? (tn) #t (equal? plus +))
206
(assert-eq? (tn) #t (equal? plus plus)))
209
(assert-error (tn) (lambda () (equal? if if)))
210
(assert-error (tn) (lambda () (equal? if set!)))
211
(assert-error (tn) (lambda () (equal? set! if)))
212
(assert-error (tn) (lambda () (equal? set! set!)))
213
;; (define syntax if) is an invalid form
216
(if (symbol-bound? 'let-syntax)
217
(let-syntax ((macro1 (syntax-rules ()
218
((_) 'macro1-expanded)))
219
(macro2 (syntax-rules ()
220
((_) 'macro2-expanded))))
221
;; syntactic keyword as value
222
(assert-error (tn) (lambda () (equal? macro1 macro1)))
223
(assert-error (tn) (lambda () (equal? macro2 macro1)))
224
(assert-error (tn) (lambda () (equal? macro1 macro2)))
225
(assert-error (tn) (lambda () (equal? macro2 macro2)))))
227
(tn "equal? closure")
228
(let ((closure (lambda () #t)))
229
(assert-eq? (tn) #t (equal? closure closure))
230
(if (provided? "sigscheme")
232
(assert-eq? (tn) #f (equal? closure (lambda () #t)))
233
(assert-eq? (tn) #f (equal? (lambda () #t) closure))
234
(assert-eq? (tn) #f (equal? (lambda () #t) (lambda () #t))))))
236
(tn "equal? stateful closure")
237
(let ((stateful (lambda ()
240
(set! state (+ state 1))
242
(assert-eq? (tn) #t (equal? stateful stateful))
243
(assert-eq? (tn) #f (equal? (stateful) (stateful))))
245
(let ((may-be-optimized-out (lambda ()
248
(set! state (+ state 1))
250
(assert-eq? (tn) #t (equal? may-be-optimized-out may-be-optimized-out))
251
(if (provided? "sigscheme")
252
(assert-eq? (tn) #f (equal? (may-be-optimized-out) (may-be-optimized-out)))))
254
(letrec ((may-be-unified1 (lambda ()
255
(if (equal? may-be-unified1
259
(may-be-unified2 (lambda ()
260
(if (equal? may-be-unified1
264
(if (provided? "sigscheme")
266
(assert-eq? (tn) #f (equal? may-be-unified1 may-be-unified2))
267
(assert-eq? (tn) #f (equal? (may-be-unified1) (may-be-unified2))))
269
;; other implementations may pass this
270
;;(assert-eq? (tn) #t (equal? may-be-unified1 may-be-unified2))
271
;;(assert-eq? (tn) #t (equal? (may-be-unified1) (may-be-unified2)))
274
(tn "equal? continuation")
275
(call-with-current-continuation
277
(call-with-current-continuation
279
(assert-eq? (tn) #t (equal? k1 k1))
280
(assert-eq? (tn) #f (equal? k1 k2))
281
(assert-eq? (tn) #f (equal? k2 k1))
282
(assert-eq? (tn) #t (equal? k2 k2))
284
(assert-eq? (tn) #t (equal? cont cont))
285
(assert-eq? (tn) #t (equal? cont k1))
286
(assert-eq? (tn) #t (equal? k1 cont))
287
(assert-eq? (tn) #f (equal? cont k2))
288
(assert-eq? (tn) #f (equal? k2 cont)))))))
291
(assert-eq? (tn) #t (equal? (current-output-port) (current-output-port)))
292
(assert-eq? (tn) #f (equal? (current-input-port) (current-output-port)))
293
(assert-eq? (tn) #f (equal? (current-output-port) (current-input-port)))
294
(assert-eq? (tn) #t (equal? (current-input-port) (current-input-port)))
295
(let ((port (current-input-port)))
296
(assert-eq? (tn) #t (equal? port port))
297
(assert-eq? (tn) #t (equal? (current-input-port) port))
298
(assert-eq? (tn) #t (equal? port (current-input-port)))
299
(assert-eq? (tn) #f (equal? (current-output-port) port))
300
(assert-eq? (tn) #f (equal? port (current-output-port))))
303
(assert-eq? (tn) #t (equal? '(#t . #t) '(#t . #t)))
304
(assert-eq? (tn) #t (equal? '(#f . #t) '(#f . #t)))
305
(assert-eq? (tn) #t (equal? '(#t . #f) '(#t . #f)))
306
(assert-eq? (tn) #f (equal? '(#f . #t) '(#t . #f)))
307
(assert-eq? (tn) #t (equal? '(#\a . #\a) '(#\a . #\a)))
308
(assert-eq? (tn) #t (equal? '(#\a . #\b) '(#\a . #\b)))
309
(assert-eq? (tn) #t (equal? '(#\b . #\a) '(#\b . #\a)))
310
(assert-eq? (tn) #f (equal? '(#\a . #\b) '(#\b . #\a)))
311
(assert-eq? (tn) #t (equal? '("a" . "a") '("a" . "a")))
312
(assert-eq? (tn) #t (equal? '("a" . "b") '("a" . "b")))
313
(assert-eq? (tn) #t (equal? '("b" . "a") '("b" . "a")))
314
(assert-eq? (tn) #f (equal? '("a" . "b") '("b" . "a")))
316
(assert-eq? (tn) #t (equal? (cons #t #t) (cons #t #t)))
317
(assert-eq? (tn) #t (equal? (cons #f #t) (cons #f #t)))
318
(assert-eq? (tn) #t (equal? (cons #t #f) (cons #t #f)))
319
(assert-eq? (tn) #f (equal? (cons #f #t) (cons #t #f)))
320
(assert-eq? (tn) #t (equal? (cons #\a #\a) (cons #\a #\a)))
321
(assert-eq? (tn) #t (equal? (cons #\a #\b) (cons #\a #\b)))
322
(assert-eq? (tn) #t (equal? (cons #\b #\a) (cons #\b #\a)))
323
(assert-eq? (tn) #f (equal? (cons #\a #\b) (cons #\b #\a)))
324
(assert-eq? (tn) #t (equal? (cons "a" "a") (cons "a" "a")))
325
(assert-eq? (tn) #t (equal? (cons "a" "b") (cons "a" "b")))
326
(assert-eq? (tn) #t (equal? (cons "b" "a") (cons "b" "a")))
327
(assert-eq? (tn) #f (equal? (cons "a" "b") (cons "b" "a")))
330
(assert-eq? (tn) #t (equal? '(#f) '(#f)))
331
(assert-eq? (tn) #f (equal? '(#f) '(#t)))
332
(assert-eq? (tn) #f (equal? '(#t) '(#f)))
333
(assert-eq? (tn) #t (equal? '(#t) '(#t)))
334
(assert-eq? (tn) #t (equal? '((#f)) '((#f))))
335
(assert-eq? (tn) #f (equal? '((#f)) '((#t))))
336
(assert-eq? (tn) #f (equal? '((#t)) '((#f))))
337
(assert-eq? (tn) #t (equal? '((#t)) '((#t))))
338
(assert-eq? (tn) #t (equal? '(1) '(1)))
339
(assert-eq? (tn) #f (equal? '(1) '(0)))
340
(assert-eq? (tn) #t (equal? '(1 3 5 0 13)
342
(assert-eq? (tn) #f (equal? '(1 3 2 0 13)
344
(assert-eq? (tn) #t (equal? '(1 3 (5 0 13))
346
(assert-eq? (tn) #f (equal? '(1 3 (2 0 13))
348
(assert-eq? (tn) #t (equal? '((1)) '((1))))
349
(assert-eq? (tn) #f (equal? '((1)) '((0))))
350
(assert-eq? (tn) #t (equal? '((1) (3) (5) (0) (13))
351
'((1) (3) (5) (0) (13))))
352
(assert-eq? (tn) #f (equal? '((1) (3) (2) (0) (13))
353
'((1) (3) (5) (0) (13))))
354
(assert-eq? (tn) #t (equal? '(#\a) '(#\a)))
355
(assert-eq? (tn) #f (equal? '(#\a) '(#\b)))
356
(assert-eq? (tn) #f (equal? '(#\b) '(#\a)))
357
(assert-eq? (tn) #t (equal? '((#\a)) '((#\a))))
358
(assert-eq? (tn) #f (equal? '((#\a)) '((#\b))))
359
(assert-eq? (tn) #f (equal? '((#\b)) '((#\a))))
361
(assert-eq? (tn) #t (equal? (list #f) (list #f)))
362
(assert-eq? (tn) #f (equal? (list #f) (list #t)))
363
(assert-eq? (tn) #f (equal? (list #t) (list #f)))
364
(assert-eq? (tn) #t (equal? (list #t) (list #t)))
365
(assert-eq? (tn) #t (equal? (list (list #f)) (list (list #f))))
366
(assert-eq? (tn) #f (equal? (list (list #f)) (list (list #t))))
367
(assert-eq? (tn) #f (equal? (list (list #t)) (list (list #f))))
368
(assert-eq? (tn) #t (equal? (list (list #t)) (list (list #t))))
369
(assert-eq? (tn) #t (equal? (list 1) (list 1)))
370
(assert-eq? (tn) #f (equal? (list 1) (list 0)))
371
(assert-eq? (tn) #t (equal? (list 1 3 5 0 13)
373
(assert-eq? (tn) #f (equal? (list 1 3 2 0 13)
375
(assert-eq? (tn) #t (equal? (list 1 3 (list 5 0 13))
376
(list 1 3 (list 5 0 13))))
377
(assert-eq? (tn) #f (equal? (list 1 3 (list 2 0 13))
378
(list 1 3 (list 5 0 13))))
379
(assert-eq? (tn) #t (equal? (list (list 1)) (list (list 1))))
380
(assert-eq? (tn) #f (equal? (list (list 1)) (list (list 0))))
381
(assert-eq? (tn) #t (equal? (list (list 1) (list 3) (list 5) (list 0) (list 13))
382
(list (list 1) (list 3) (list 5) (list 0) (list 13))))
383
(assert-eq? (tn) #f (equal? (list (list 1) (list 3) (list 2) (list 0) (list 13))
384
(list (list 1) (list 3) (list 5) (list 0) (list 13))))
385
(assert-eq? (tn) #t (equal? (list #\a) (list #\a)))
386
(assert-eq? (tn) #f (equal? (list #\a) (list #\b)))
387
(assert-eq? (tn) #f (equal? (list #\b) (list #\a)))
388
(assert-eq? (tn) #t (equal? (list (list #\a)) (list (list #\a))))
389
(assert-eq? (tn) #f (equal? (list (list #\a)) (list (list #\b))))
390
(assert-eq? (tn) #f (equal? (list (list #\b)) (list (list #\a))))
392
(assert-eq? (tn) #t (equal? '("") '("")))
393
(assert-eq? (tn) #t (equal? '(("")) '((""))))
394
(assert-eq? (tn) #t (equal? '("aBc12!")
396
(assert-eq? (tn) #t (equal? '("あ0イう12!")
398
(assert-eq? (tn) #t (equal? '("a" "" "aB1" ("3c" "d") "a")
399
'("a" "" "aB1" ("3c" "d") "a")))
400
(assert-eq? (tn) #t (equal? '(("aBc12!"))
402
(assert-eq? (tn) #t (equal? '(("あ0イう12!"))
405
(assert-eq? (tn) #t (equal? (list "") (list "")))
406
(assert-eq? (tn) #t (equal? (list (list "")) (list (list ""))))
407
(assert-eq? (tn) #t (equal? (list "aBc12!")
409
(assert-eq? (tn) #t (equal? (list "あ0イう12!")
411
(assert-eq? (tn) #t (equal? (list "a" "" "aB1" (list "3c" "d") "a")
412
(list "a" "" "aB1" (list "3c" "d") "a")))
413
(assert-eq? (tn) #t (equal? (list (list "aBc12!"))
414
(list (list "aBc12!"))))
415
(assert-eq? (tn) #t (equal? (list (list "あ0イう12!"))
416
(list (list "あ0イう12!"))))
418
(assert-eq? (tn) #f (equal? '("aBc123!")
420
(assert-eq? (tn) #f (equal? '("あ0イぅ12!")
422
(assert-eq? (tn) #f (equal? '("a" "" "aB1" ("3c" "e") "a")
423
'("a" "" "aB1" ("3c" "d") "a")))
424
(assert-eq? (tn) #f (equal? '(("aBc123!"))
426
(assert-eq? (tn) #f (equal? '(("あ0イぅ12!"))
429
(assert-eq? (tn) #f (equal? (list "aBc123!")
431
(assert-eq? (tn) #f (equal? (list "あ0イぅ12!")
433
(assert-eq? (tn) #f (equal? (list "a" "" "aB1" (list "3c" "e") "a")
434
(list "a" "" "aB1" (list "3c" "d") "a")))
435
(assert-eq? (tn) #f (equal? (list (list "aBc123!"))
436
(list (list "aBc12!"))))
437
(assert-eq? (tn) #f (equal? (list (list "あ0イぅ12!"))
438
(list (list "あ0イう12!"))))
441
(equal? '(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)
442
'(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)))
444
(equal? '(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)
445
'(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("L")) #t)))
447
(equal? '(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)
448
'(0 #\a "" ("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)))
450
(equal? '(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)
451
'(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" #t)))
453
(equal? '(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" #t)
454
'(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)))
457
(equal? (list 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" (list -1 #\b '("Ls")) #t)
458
(list 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" (list -1 #\b '("Ls")) #t)))
460
(equal? (list 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" (list -1 #\b '("Ls")) #t)
461
(list 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" (list -1 #\b '("L")) #t)))
463
(equal? (list 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" (list -1 #\b '("Ls")) #t)
464
(list 0 #\a "" (list "vE" -1 '(#\?)) 23 + "aBc" (list -1 #\b '("Ls")) #t)))
466
(equal? (list 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" (list -1 #\b '("Ls")) #t)
467
(list 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" #t)))
469
(equal? (list 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" #t)
470
(list 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" (list -1 #\b '("Ls")) #t)))
472
(tn "equal? empty vector")
473
(assert-eq? (tn) #t (equal? '#() '#()))
474
(assert-eq? (tn) #t (equal? (vector) (vector)))
478
(assert-eq? (tn) #t (equal? v1 v1))
479
(assert-eq? (tn) #t (equal? v2 v2))
480
(assert-eq? (tn) #t (equal? v1 v2)))
483
(assert-eq? (tn) #t (equal? '#(#f) '#(#f)))
484
(assert-eq? (tn) #f (equal? '#(#f) '#(#t)))
485
(assert-eq? (tn) #f (equal? '#(#t) '#(#f)))
486
(assert-eq? (tn) #t (equal? '#(#t) '#(#t)))
487
(assert-eq? (tn) #t (equal? '#(#(#f)) '#(#(#f))))
488
(assert-eq? (tn) #f (equal? '#(#(#f)) '#(#(#t))))
489
(assert-eq? (tn) #f (equal? '#(#(#t)) '#(#(#f))))
490
(assert-eq? (tn) #t (equal? '#(#(#t)) '#(#(#t))))
491
(assert-eq? (tn) #t (equal? '#(1) '#(1)))
492
(assert-eq? (tn) #f (equal? '#(1) '#(0)))
493
(assert-eq? (tn) #t (equal? '#(1 3 5 0 13)
495
(assert-eq? (tn) #f (equal? '#(1 3 2 0 13)
497
(assert-eq? (tn) #t (equal? '#(1 3 #(5 0 13))
499
(assert-eq? (tn) #f (equal? '#(1 3 #(2 0 13))
501
(assert-eq? (tn) #t (equal? '#(#(1)) '#(#(1))))
502
(assert-eq? (tn) #f (equal? '#(#(1)) '#(#(0))))
503
(assert-eq? (tn) #t (equal? '#(#(1) #(3) #(5) #(0) #(13))
504
'#(#(1) #(3) #(5) #(0) #(13))))
505
(assert-eq? (tn) #f (equal? '#(#(1) #(3) #(2) #(0) #(13))
506
'#(#(1) #(3) #(5) #(0) #(13))))
507
(assert-eq? (tn) #t (equal? '#(#\a) '#(#\a)))
508
(assert-eq? (tn) #f (equal? '#(#\a) '#(#\b)))
509
(assert-eq? (tn) #f (equal? '#(#\b) '#(#\a)))
510
(assert-eq? (tn) #t (equal? '#(#(#\a)) '#(#(#\a))))
511
(assert-eq? (tn) #f (equal? '#(#(#\a)) '#(#(#\b))))
512
(assert-eq? (tn) #f (equal? '#(#(#\b)) '#(#(#\a))))
514
(assert-eq? (tn) #t (equal? (vector #f) (vector #f)))
515
(assert-eq? (tn) #f (equal? (vector #f) (vector #t)))
516
(assert-eq? (tn) #f (equal? (vector #t) (vector #f)))
517
(assert-eq? (tn) #t (equal? (vector #t) (vector #t)))
518
(assert-eq? (tn) #t (equal? (vector (vector #f)) (vector (vector #f))))
519
(assert-eq? (tn) #f (equal? (vector (vector #f)) (vector (vector #t))))
520
(assert-eq? (tn) #f (equal? (vector (vector #t)) (vector (vector #f))))
521
(assert-eq? (tn) #t (equal? (vector (vector #t)) (vector (vector #t))))
522
(assert-eq? (tn) #t (equal? (vector 1) (vector 1)))
523
(assert-eq? (tn) #f (equal? (vector 1) (vector 0)))
524
(assert-eq? (tn) #t (equal? (vector 1 3 5 0 13)
525
(vector 1 3 5 0 13)))
526
(assert-eq? (tn) #f (equal? (vector 1 3 2 0 13)
527
(vector 1 3 5 0 13)))
528
(assert-eq? (tn) #t (equal? (vector 1 3 (vector 5 0 13))
529
(vector 1 3 (vector 5 0 13))))
530
(assert-eq? (tn) #f (equal? (vector 1 3 (vector 2 0 13))
531
(vector 1 3 (vector 5 0 13))))
532
(assert-eq? (tn) #t (equal? (vector (vector 1)) (vector (vector 1))))
533
(assert-eq? (tn) #f (equal? (vector (vector 1)) (vector (vector 0))))
534
(assert-eq? (tn) #t (equal? (vector (vector 1) (vector 3) (vector 5) (vector 0) (vector 13))
535
(vector (vector 1) (vector 3) (vector 5) (vector 0) (vector 13))))
536
(assert-eq? (tn) #f (equal? (vector (vector 1) (vector 3) (vector 2) (vector 0) (vector 13))
537
(vector (vector 1) (vector 3) (vector 5) (vector 0) (vector 13))))
538
(assert-eq? (tn) #t (equal? (vector #\a) (vector #\a)))
539
(assert-eq? (tn) #f (equal? (vector #\a) (vector #\b)))
540
(assert-eq? (tn) #f (equal? (vector #\b) (vector #\a)))
541
(assert-eq? (tn) #t (equal? (vector (vector #\a)) (vector (vector #\a))))
542
(assert-eq? (tn) #f (equal? (vector (vector #\a)) (vector (vector #\b))))
543
(assert-eq? (tn) #f (equal? (vector (vector #\b)) (vector (vector #\a))))
545
(assert-eq? (tn) #t (equal? '#("") '#("")))
546
(assert-eq? (tn) #t (equal? '#(#("")) '#(#(""))))
547
(assert-eq? (tn) #t (equal? '#("aBc12!")
549
(assert-eq? (tn) #t (equal? '#("あ0イう12!")
551
(assert-eq? (tn) #t (equal? '#("a" "" "aB1" #("3c" "d") "a")
552
'#("a" "" "aB1" #("3c" "d") "a")))
553
(assert-eq? (tn) #t (equal? '#(#("aBc12!"))
555
(assert-eq? (tn) #t (equal? '#(#("あ0イう12!"))
558
(assert-eq? (tn) #t (equal? (vector "") (vector "")))
559
(assert-eq? (tn) #t (equal? (vector (vector "")) (vector (vector ""))))
560
(assert-eq? (tn) #t (equal? (vector "aBc12!")
562
(assert-eq? (tn) #t (equal? (vector "あ0イう12!")
564
(assert-eq? (tn) #t (equal? (vector "a" "" "aB1" (vector "3c" "d") "a")
565
(vector "a" "" "aB1" (vector "3c" "d") "a")))
566
(assert-eq? (tn) #t (equal? (vector (vector "aBc12!"))
567
(vector (vector "aBc12!"))))
568
(assert-eq? (tn) #t (equal? (vector (vector "あ0イう12!"))
569
(vector (vector "あ0イう12!"))))
571
(assert-eq? (tn) #f (equal? '#("aBc123!")
573
(assert-eq? (tn) #f (equal? '#("あ0イぅ12!")
575
(assert-eq? (tn) #f (equal? '#("a" "" "aB1" #("3c" "e") "a")
576
'#("a" "" "aB1" #("3c" "d") "a")))
577
(assert-eq? (tn) #f (equal? '#(#("aBc123!"))
579
(assert-eq? (tn) #f (equal? '#(#("あ0イぅ12!"))
582
(assert-eq? (tn) #f (equal? (vector "aBc123!")
584
(assert-eq? (tn) #f (equal? (vector "あ0イぅ12!")
586
(assert-eq? (tn) #f (equal? (vector "a" "" "aB1" (vector "3c" "e") "a")
587
(vector "a" "" "aB1" (vector "3c" "d") "a")))
588
(assert-eq? (tn) #f (equal? (vector (vector "aBc123!"))
589
(vector (vector "aBc12!"))))
590
(assert-eq? (tn) #f (equal? (vector (vector "あ0イぅ12!"))
591
(vector (vector "あ0イう12!"))))
594
(equal? '#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)
595
'#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)))
597
(equal? '#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)
598
'#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("L")) #t)))
600
(equal? '#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)
601
'#(0 #\a "" ("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)))
603
(equal? '#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)
604
'#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" #t)))
606
(equal? '#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" #t)
607
'#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)))
610
(equal? (vector 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" (vector -1 #\b '("Ls")) #t)
611
(vector 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" (vector -1 #\b '("Ls")) #t)))
613
(equal? (vector 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" (vector -1 #\b '("Ls")) #t)
614
(vector 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" (vector -1 #\b '("L")) #t)))
616
(equal? (vector 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" (vector -1 #\b '("Ls")) #t)
617
(vector 0 #\a "" (list "vE" -1 '(#\?)) 23 + "aBc" (vector -1 #\b '("Ls")) #t)))
619
(equal? (vector 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" (vector -1 #\b '("Ls")) #t)
620
(vector 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" #t)))
622
(equal? (vector 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" #t)
623
(vector 0 #\a "" (vector "vE" -1 '(#\?)) 23 + "aBc" (vector -1 #\b '("Ls")) #t)))