~ubuntu-branches/ubuntu/hardy/uim/hardy

« back to all changes in this revision

Viewing changes to sigscheme/test/test-equal.scm

  • Committer: Bazaar Package Importer
  • Author(s): Masahito Omote
  • Date: 2007-04-21 03:46:09 UTC
  • mfrom: (1.1.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20070421034609-gpcurkutp8vaysqj
Tags: 1:1.4.1-3
* Switch to dh_gtkmodules for the gtk 2.10 transition (Closes:
  #419318)
  - debian/control: Add ${misc:Depends} and remove libgtk2.0-bin on
    uim-gtk2.0.
  - debian/uim-gtk2.0.post{inst,rm}: Removed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#! /usr/bin/env sscm -C UTF-8
 
2
;; -*- buffer-file-coding-system: utf-8 -*-
 
3
 
 
4
;;  Filename : test-equal.scm
 
5
;;  About    : unit tests for equal?
 
6
;;
 
7
;;  Copyright (C) 2006 YAMAMOTO Kengo <yamaken AT bp.iij4u.or.jp>
 
8
;;  Copyright (c) 2007 SigScheme Project <uim AT freedesktop.org>
 
9
;;
 
10
;;  All rights reserved.
 
11
;;
 
12
;;  Redistribution and use in source and binary forms, with or without
 
13
;;  modification, are permitted provided that the following conditions
 
14
;;  are met:
 
15
;;
 
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.
 
24
;;
 
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.
 
36
 
 
37
(load "test/unittest.scm")
 
38
 
 
39
(define tn test-name)
 
40
(define case-insensitive-symbol? #f)
 
41
 
 
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)))
 
46
 
 
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")))
 
52
 
 
53
(tn "equal? boolean")
 
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))
 
58
 
 
59
(tn "equal? null")
 
60
(assert-eq? (tn) #t (equal? '() '()))
 
61
(if (and (provided? "sigscheme")
 
62
         (provided? "siod-bugs"))
 
63
    (begin
 
64
      (assert-eq? (tn) #t (equal? #f '()))
 
65
      (assert-eq? (tn) #t (equal? '() #f)))
 
66
    (begin
 
67
      (assert-eq? (tn) #f (equal? #f '()))
 
68
      (assert-eq? (tn) #f (equal? '() #f))))
 
69
(if (symbol-bound? 'vector?)
 
70
    (begin
 
71
      (assert-eq? (tn) #f (equal? '() '#()))
 
72
      (assert-eq? (tn) #f (equal? '#() '()))))
 
73
 
 
74
(tn "equal? #<eof>")
 
75
(if (provided? "sigscheme")
 
76
    (begin
 
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))))
 
84
 
 
85
(tn "equal? #<undef>")
 
86
(if (provided? "sigscheme")
 
87
    (begin
 
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))))
 
95
 
 
96
(tn "equal? integer")
 
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))
 
102
 
 
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))
 
113
 
 
114
(tn "equal? symbol")
 
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?)
 
120
    (begin
 
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)))
 
127
    (begin
 
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))))
 
134
 
 
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))
 
140
 
 
141
(let ((c1 #\a)
 
142
      (c2 #\b))
 
143
  (assert-eq? (tn) #t (equal? c1 c1))
 
144
  (assert-eq? (tn) #t (equal? c2 c2)))
 
145
 
 
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? #\い #\い))
 
151
 
 
152
(let ((c1 #\あ)
 
153
      (c2 #\い))
 
154
  (assert-eq? (tn) #t (equal? c1 c1))
 
155
  (assert-eq? (tn) #t (equal? c2 c2)))
 
156
 
 
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!"))
 
162
(let ((s1 "")
 
163
      (s2 "a")
 
164
      (s3 "b")
 
165
      (s4 "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!"))
 
178
 
 
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!"))
 
183
(let ((s1 "あ")
 
184
      (s2 "い")
 
185
      (s3 "あ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!"))
 
197
 
 
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? - -))
 
203
(let ((plus +))
 
204
  (assert-eq? (tn) #t (equal? + plus))
 
205
  (assert-eq? (tn) #t (equal? plus +))
 
206
  (assert-eq? (tn) #t (equal? plus plus)))
 
207
 
 
208
(tn "equal? syntax")
 
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
 
214
 
 
215
(tn "equal? macro")
 
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)))))
 
226
 
 
227
(tn "equal? closure")
 
228
(let ((closure (lambda () #t)))
 
229
  (assert-eq? (tn) #t (equal? closure closure))
 
230
  (if (provided? "sigscheme")
 
231
      (begin
 
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))))))
 
235
 
 
236
(tn "equal? stateful closure")
 
237
(let ((stateful (lambda ()
 
238
                  (let ((state 0))
 
239
                    (lambda ()
 
240
                      (set! state (+ state 1))
 
241
                      state)))))
 
242
  (assert-eq? (tn) #t (equal? stateful stateful))
 
243
  (assert-eq? (tn) #f (equal? (stateful) (stateful))))
 
244
 
 
245
(let ((may-be-optimized-out (lambda ()
 
246
                              (let ((state 0))
 
247
                                (lambda ()
 
248
                                  (set! state (+ state 1))
 
249
                                  0)))))
 
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)))))
 
253
 
 
254
(letrec ((may-be-unified1 (lambda ()
 
255
                            (if (equal? may-be-unified1
 
256
                                        may-be-unified2)
 
257
                                'optimized-out
 
258
                                'not-unified1)))
 
259
         (may-be-unified2 (lambda ()
 
260
                            (if (equal? may-be-unified1
 
261
                                        may-be-unified2)
 
262
                                'optimized-out
 
263
                                'not-unified2))))
 
264
  (if (provided? "sigscheme")
 
265
      (begin
 
266
        (assert-eq? (tn) #f (equal? may-be-unified1 may-be-unified2))
 
267
        (assert-eq? (tn) #f (equal? (may-be-unified1) (may-be-unified2))))
 
268
      (begin
 
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)))
 
272
        )))
 
273
 
 
274
(tn "equal? continuation")
 
275
(call-with-current-continuation
 
276
 (lambda (k1)
 
277
   (call-with-current-continuation
 
278
    (lambda (k2)
 
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))
 
283
      (let ((cont k1))
 
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)))))))
 
289
 
 
290
(tn "equal? port")
 
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))))
 
301
 
 
302
(tn "equal? pair")
 
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")))
 
315
 
 
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")))
 
328
 
 
329
(tn "equal? list")
 
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)
 
341
                            '(1 3 5 0 13)))
 
342
(assert-eq? (tn) #f (equal? '(1 3 2 0 13)
 
343
                            '(1 3 5 0 13)))
 
344
(assert-eq? (tn) #t (equal? '(1 3 (5 0 13))
 
345
                            '(1 3 (5 0 13))))
 
346
(assert-eq? (tn) #f (equal? '(1 3 (2 0 13))
 
347
                            '(1 3 (5 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))))
 
360
 
 
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)
 
372
                            (list 1 3 5 0 13)))
 
373
(assert-eq? (tn) #f (equal? (list 1 3 2 0 13)
 
374
                            (list 1 3 5 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))))
 
391
 
 
392
(assert-eq? (tn) #t (equal? '("") '("")))
 
393
(assert-eq? (tn) #t (equal? '(("")) '((""))))
 
394
(assert-eq? (tn) #t (equal? '("aBc12!")
 
395
                            '("aBc12!")))
 
396
(assert-eq? (tn) #t (equal? '("あ0イう12!")
 
397
                            '("あ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!"))
 
401
                            '(("aBc12!"))))
 
402
(assert-eq? (tn) #t (equal? '(("あ0イう12!"))
 
403
                            '(("あ0イう12!"))))
 
404
 
 
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!")
 
408
                            (list "aBc12!")))
 
409
(assert-eq? (tn) #t (equal? (list "あ0イう12!")
 
410
                            (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!"))))
 
417
 
 
418
(assert-eq? (tn) #f (equal? '("aBc123!")
 
419
                            '("aBc12!")))
 
420
(assert-eq? (tn) #f (equal? '("あ0イぅ12!")
 
421
                            '("あ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!"))
 
425
                            '(("aBc12!"))))
 
426
(assert-eq? (tn) #f (equal? '(("あ0イぅ12!"))
 
427
                            '(("あ0イう12!"))))
 
428
 
 
429
(assert-eq? (tn) #f (equal? (list "aBc123!")
 
430
                            (list "aBc12!")))
 
431
(assert-eq? (tn) #f (equal? (list "あ0イぅ12!")
 
432
                            (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!"))))
 
439
 
 
440
(assert-eq? (tn) #t
 
441
            (equal? '(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)
 
442
                    '(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)))
 
443
(assert-eq? (tn) #f
 
444
            (equal? '(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)
 
445
                    '(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("L")) #t)))
 
446
(assert-eq? (tn) #f
 
447
            (equal? '(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)
 
448
                    '(0 #\a "" ("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)))
 
449
(assert-eq? (tn) #f
 
450
            (equal? '(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)
 
451
                    '(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" #t)))
 
452
(assert-eq? (tn) #f
 
453
            (equal? '(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" #t)
 
454
                    '(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)))
 
455
 
 
456
(assert-eq? (tn) #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)))
 
459
(assert-eq? (tn) #f
 
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)))
 
462
(assert-eq? (tn) #f
 
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)))
 
465
(assert-eq? (tn) #f
 
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)))
 
468
(assert-eq? (tn) #f
 
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)))
 
471
 
 
472
(tn "equal? empty vector")
 
473
(assert-eq? (tn) #t (equal? '#() '#()))
 
474
(assert-eq? (tn) #t (equal? (vector) (vector)))
 
475
 
 
476
(let ((v1 '#())
 
477
      (v2 (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)))
 
481
 
 
482
(tn "equal? vector")
 
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)
 
494
                            '#(1 3 5 0 13)))
 
495
(assert-eq? (tn) #f (equal? '#(1 3 2 0 13)
 
496
                            '#(1 3 5 0 13)))
 
497
(assert-eq? (tn) #t (equal? '#(1 3 #(5 0 13))
 
498
                            '#(1 3 #(5 0 13))))
 
499
(assert-eq? (tn) #f (equal? '#(1 3 #(2 0 13))
 
500
                            '#(1 3 #(5 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))))
 
513
 
 
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))))
 
544
 
 
545
(assert-eq? (tn) #t (equal? '#("") '#("")))
 
546
(assert-eq? (tn) #t (equal? '#(#("")) '#(#(""))))
 
547
(assert-eq? (tn) #t (equal? '#("aBc12!")
 
548
                            '#("aBc12!")))
 
549
(assert-eq? (tn) #t (equal? '#("あ0イう12!")
 
550
                            '#("あ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!"))
 
554
                            '#(#("aBc12!"))))
 
555
(assert-eq? (tn) #t (equal? '#(#("あ0イう12!"))
 
556
                            '#(#("あ0イう12!"))))
 
557
 
 
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!")
 
561
                            (vector "aBc12!")))
 
562
(assert-eq? (tn) #t (equal? (vector "あ0イう12!")
 
563
                            (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!"))))
 
570
 
 
571
(assert-eq? (tn) #f (equal? '#("aBc123!")
 
572
                            '#("aBc12!")))
 
573
(assert-eq? (tn) #f (equal? '#("あ0イぅ12!")
 
574
                            '#("あ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!"))
 
578
                            '#(#("aBc12!"))))
 
579
(assert-eq? (tn) #f (equal? '#(#("あ0イぅ12!"))
 
580
                            '#(#("あ0イう12!"))))
 
581
 
 
582
(assert-eq? (tn) #f (equal? (vector "aBc123!")
 
583
                            (vector "aBc12!")))
 
584
(assert-eq? (tn) #f (equal? (vector "あ0イぅ12!")
 
585
                            (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!"))))
 
592
 
 
593
(assert-eq? (tn) #t
 
594
            (equal? '#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)
 
595
                    '#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)))
 
596
(assert-eq? (tn) #f
 
597
            (equal? '#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)
 
598
                    '#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("L")) #t)))
 
599
(assert-eq? (tn) #f
 
600
            (equal? '#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)
 
601
                    '#(0 #\a "" ("vE" -1 (#\?))  23 + "aBc" (-1 #\b ("Ls")) #t)))
 
602
(assert-eq? (tn) #f
 
603
            (equal? '#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)
 
604
                    '#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" #t)))
 
605
(assert-eq? (tn) #f
 
606
            (equal? '#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" #t)
 
607
                    '#(0 #\a "" #("vE" -1 (#\?)) 23 + "aBc" (-1 #\b ("Ls")) #t)))
 
608
 
 
609
(assert-eq? (tn) #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)))
 
612
(assert-eq? (tn) #f
 
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)))
 
615
(assert-eq? (tn) #f
 
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)))
 
618
(assert-eq? (tn) #f
 
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)))
 
621
(assert-eq? (tn) #f
 
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)))
 
624
 
 
625
 
 
626
(total-report)