2
;;;; Author: Paul Dietz
3
;;;; Created: Tue Aug 27 16:11:38 2002
4
;;;; Contains: Tests for REPLACE
8
(deftest replace-list.1
9
(let* ((x (copy-seq '(a b c d e f g)))
10
(result (replace x '(x y z))))
11
(values (eqt x result) result))
15
(deftest replace-list.2
16
(let* ((x (copy-seq '(a b c d e f g)))
17
(result (replace x '(x y z) :start1 1)))
18
(values (eqt x result) result))
22
(deftest replace-list.3
23
(let* ((x (copy-seq '(a b c d e f g)))
24
(result (replace x '(x y z) :start1 4)))
25
(values (eqt x result) result))
29
(deftest replace-list.4
30
(let* ((x (copy-seq '(a b c d e f g)))
31
(result (replace x '(x y z) :start1 5)))
32
(values (eqt x result) result))
36
(deftest replace-list.5
37
(let* ((x (copy-seq '(a b c d e f g)))
38
(result (replace x '(x y z) :start1 6)))
39
(values (eqt x result) result))
43
(deftest replace-list.6
44
(let* ((x (copy-seq '(a b c d e f g)))
45
(result (replace x #(x y z) :start1 2)))
46
(values (eqt x result) result))
50
(deftest replace-list.7
51
(replace nil #(x y z))
54
(deftest replace-list.8
55
(let* ((x (copy-seq '(a b c d e f g)))
56
(result (replace x '(x y z) :end1 1)))
57
(values (eqt x result) result))
61
(deftest replace-list.9
62
(let* ((x (copy-seq '(a b c d e f g)))
63
(result (replace x '(x y z) :start1 3 :end1 4)))
64
(values (eqt x result) result))
68
(deftest replace-list.10
69
(let* ((x (copy-seq '(a b c d e f g)))
70
(result (replace x '(x y z) :start1 0 :end1 5)))
71
(values (eqt x result) result))
76
(deftest replace-list.11
77
(let* ((x (copy-seq '(a b c d e f g)))
78
(result (replace x '(x y z) :start2 1)))
79
(values (eqt x result) result))
83
(deftest replace-list.12
84
(let* ((x (copy-seq '(a b c d e f g)))
85
(result (replace x '(x y z) :start2 1 :end1 nil)))
86
(values (eqt x result) result))
90
(deftest replace-list.13
91
(let* ((x (copy-seq '(a b c d e f g)))
92
(result (replace x '(x y z) :start2 1 :end2 nil)))
93
(values (eqt x result) result))
97
(deftest replace-list.14
98
(let* ((x (copy-seq '(a b c d e f g)))
99
(result (replace x '(x y z) :start2 1 :end2 2)))
100
(values (eqt x result) result))
104
(deftest replace-list.15
105
(let* ((x (copy-seq '(a b c d e f g)))
106
(result (replace x '(x y z) :start1 4 :end1 5 :start2 1 :end2 2)))
107
(values (eqt x result) result))
111
(deftest replace-list.16
112
(let* ((x (copy-seq '(a b c d e f)))
114
(result (replace x y :start1 1)))
115
(values (eqt x result) result))
119
(deftest replace-list.17
120
(let* ((x (copy-seq '(a b c d e f)))
121
(y (make-array '(3) :initial-contents '(1 2 3)
123
(result (replace x y :start1 1)))
124
(values (eqt x result) result))
128
(deftest replace-list.18
129
(let* ((x (copy-seq '(a b c d e f)))
130
(y (make-array '(6) :initial-contents '(1 2 3 4 5 6)
132
(result (replace x y :start1 1)))
133
(values (eqt x result) result))
137
(deftest replace-list.19
138
(let* ((x (copy-seq '(a b c d e f)))
139
(result (replace x x :start1 0 :end1 3 :start2 1 :end2 4)))
140
(values (eqt x result) result))
144
(deftest replace-list.20
145
(let* ((x (copy-seq '(a b c d e f)))
146
(result (replace x x :start1 1 :end1 4 :start2 0 :end2 3)))
147
(values (eqt x result) result))
154
(deftest replace-vector.1
155
(let* ((x (copy-seq #(a b c d e f g)))
156
(result (replace x #(x y z))))
157
(values (eqt x result) result))
161
(deftest replace-vector.2
162
(let* ((x (copy-seq #(a b c d e f g)))
163
(result (replace x #(x y z) :start1 1)))
164
(values (eqt x result) result))
168
(deftest replace-vector.3
169
(let* ((x (copy-seq #(a b c d e f g)))
170
(result (replace x #(x y z) :start1 4)))
171
(values (eqt x result) result))
175
(deftest replace-vector.4
176
(let* ((x (copy-seq #(a b c d e f g)))
177
(result (replace x #(x y z) :start1 5)))
178
(values (eqt x result) result))
182
(deftest replace-vector.5
183
(let* ((x (copy-seq #(a b c d e f g)))
184
(result (replace x #(x y z) :start1 6)))
185
(values (eqt x result) result))
189
(deftest replace-vector.6
190
(let* ((x (copy-seq #(a b c d e f g)))
191
(result (replace x '(x y z) :start1 2)))
192
(values (eqt x result) result))
196
(deftest replace-vector.7
197
(replace #() #(x y z))
200
(deftest replace-vector.8
201
(let* ((x (copy-seq #(a b c d e f g)))
202
(result (replace x #(x y z) :end1 1)))
203
(values (eqt x result) result))
207
(deftest replace-vector.9
208
(let* ((x (copy-seq #(a b c d e f g)))
209
(result (replace x #(x y z) :start1 3 :end1 4)))
210
(values (eqt x result) result))
214
(deftest replace-vector.10
215
(let* ((x (copy-seq #(a b c d e f g)))
216
(result (replace x #(x y z) :start1 0 :end1 5)))
217
(values (eqt x result) result))
222
(deftest replace-vector.11
223
(let* ((x (copy-seq #(a b c d e f g)))
224
(result (replace x #(x y z) :start2 1)))
225
(values (eqt x result) result))
229
(deftest replace-vector.12
230
(let* ((x (copy-seq #(a b c d e f g)))
231
(result (replace x #(x y z) :start2 1 :end1 nil)))
232
(values (eqt x result) result))
236
(deftest replace-vector.13
237
(let* ((x (copy-seq #(a b c d e f g)))
238
(result (replace x #(x y z) :start2 1 :end2 nil)))
239
(values (eqt x result) result))
243
(deftest replace-vector.14
244
(let* ((x (copy-seq #(a b c d e f g)))
245
(result (replace x #(x y z) :start2 1 :end2 2)))
246
(values (eqt x result) result))
250
(deftest replace-vector.15
251
(let* ((x (copy-seq #(a b c d e f g)))
252
(result (replace x #(x y z) :start1 4 :end1 5 :start2 1 :end2 2)))
253
(values (eqt x result) result))
257
(deftest replace-vector.16
258
(let* ((x (copy-seq #(a b c d e f)))
260
(result (replace x y :start1 1)))
261
(values (eqt x result) result))
265
(deftest replace-vector.17
266
(let* ((x (copy-seq #(a b c d e f)))
267
(y (make-array '(3) :initial-contents '(1 2 3)
269
(result (replace x y :start1 1)))
270
(values (eqt x result) result))
274
(deftest replace-vector.18
275
(let* ((x (copy-seq #(a b c d e f)))
276
(y (make-array '(6) :initial-contents '(1 2 3 4 5 6)
278
(result (replace x y :start1 1)))
279
(values (eqt x result) result))
283
(deftest replace-vector.19
284
(let* ((x (copy-seq #(a b c d e f)))
285
(result (replace x x :start1 0 :end1 3 :start2 1 :end2 4)))
286
(values (eqt x result) result))
290
(deftest replace-vector.21
291
(let* ((x (copy-seq #(a b c d e f)))
292
(result (replace x x :start1 1 :end1 4 :start2 0 :end2 3)))
293
(values (eqt x result) result))
297
;;; tests on bit vectors
299
(deftest replace-bit-vector.1
300
(let* ((x (copy-seq #*1101001))
301
(result (replace x #*011)))
302
(values (eqt x result) result))
306
(deftest replace-bit-vector.2
307
(let* ((x (copy-seq #*1101001))
308
(result (replace x #*011 :start1 1)))
309
(values (eqt x result) result))
313
(deftest replace-bit-vector.3
314
(let* ((x (copy-seq #*1101001))
315
(result (replace x #*011 :start1 4)))
316
(values (eqt x result) result))
320
(deftest replace-bit-vector.4
321
(let* ((x (copy-seq #*0000000))
322
(result (replace x #*111 :start1 5)))
323
(values (eqt x result) result))
327
(deftest replace-bit-vector.5
328
(let* ((x (copy-seq #*0000000))
329
(result (replace x #*100 :start1 6)))
330
(values (eqt x result) result))
334
(deftest replace-bit-vector.6
335
(let* ((x (copy-seq #*0000000))
336
(result (replace x '(1 1 1) :start1 2)))
337
(values (eqt x result) result))
341
(deftest replace-bit-vector.7
345
(deftest replace-bit-vector.8
346
(let* ((x (copy-seq #*0000000))
347
(result (replace x #*111 :end1 1)))
348
(values (eqt x result) result))
352
(deftest replace-bit-vector.9
353
(let* ((x (copy-seq #*0000000))
354
(result (replace x #*110 :start1 3 :end1 4)))
355
(values (eqt x result) result))
359
(deftest replace-bit-vector.10
360
(let* ((x (copy-seq #*0000000))
361
(result (replace x #*111 :start1 0 :end1 5)))
362
(values (eqt x result) result))
367
(deftest replace-bit-vector.11
368
(let* ((x (copy-seq #*0000000))
369
(result (replace x #*011 :start2 1)))
370
(values (eqt x result) result))
374
(deftest replace-bit-vector.12
375
(let* ((x (copy-seq #*0000000))
376
(result (replace x #*011 :start2 1 :end1 nil)))
377
(values (eqt x result) result))
381
(deftest replace-bit-vector.13
382
(let* ((x (copy-seq #*0000000))
383
(result (replace x #*011 :start2 1 :end2 nil)))
384
(values (eqt x result) result))
388
(deftest replace-bit-vector.14
389
(let* ((x (copy-seq #*0000000))
390
(result (replace x #*011 :start2 1 :end2 2)))
391
(values (eqt x result) result))
395
(deftest replace-bit-vector.15
396
(let* ((x (copy-seq #*0000000))
397
(result (replace x #*011 :start1 4 :end1 5 :start2 1 :end2 2)))
398
(values (eqt x result) result))
402
(deftest replace-bit-vector.16
403
(let* ((x (copy-seq #*001011))
405
(result (replace x y :start1 1)))
406
(values (eqt x result) result))
410
(deftest replace-bit-vector.17
411
(let* ((x (copy-seq #*001011))
412
(y (make-array '(3) :initial-contents '(1 0 1)
413
:fill-pointer t :element-type 'bit))
414
(result (replace x y :start1 1)))
415
(values (eqt x result) result))
419
(deftest replace-bit-vector.18
420
(let* ((x (copy-seq #*001011))
421
(y (make-array '(6) :initial-contents '(1 0 1 0 0 1)
424
(result (replace x y :start1 1)))
425
(values (eqt x result) result))
429
(deftest replace-bit-vector.19
430
(let* ((x (copy-seq #*001011))
431
(result (replace x x :start1 0 :end1 3 :start2 1 :end2 4)))
432
(values (eqt x result) result))
436
(deftest replace-bit-vector.21
437
(let* ((x (copy-seq #*001011))
438
(result (replace x x :start1 1 :end1 4 :start2 0 :end2 3)))
439
(values (eqt x result) result))
445
(deftest replace-string.1
446
(let* ((x (copy-seq "abcdefg"))
447
(result (replace x "xyz")))
448
(values (eqt x result) result))
452
(deftest replace-string.2
453
(let* ((x (copy-seq "abcdefg"))
454
(result (replace x "xyz" :start1 1)))
455
(values (eqt x result) result))
459
(deftest replace-string.3
460
(let* ((x (copy-seq "abcdefg"))
461
(result (replace x "xyz" :start1 4)))
462
(values (eqt x result) result))
466
(deftest replace-string.4
467
(let* ((x (copy-seq "abcdefg"))
468
(result (replace x "xyz" :start1 5)))
469
(values (eqt x result) result))
473
(deftest replace-string.5
474
(let* ((x (copy-seq "abcdefg"))
475
(result (replace x "xyz" :start1 6)))
476
(values (eqt x result) result))
480
(deftest replace-string.6
481
(let* ((x (copy-seq "abcdefg"))
482
(result (replace x '(#\x #\y #\z) :start1 2)))
483
(values (eqt x result) result))
487
(deftest replace-string.7
491
(deftest replace-string.8
492
(let* ((x (copy-seq "abcdefg"))
493
(result (replace x "xyz" :end1 1)))
494
(values (eqt x result) result))
498
(deftest replace-string.9
499
(let* ((x (copy-seq "abcdefg"))
500
(result (replace x "xyz" :start1 3 :end1 4)))
501
(values (eqt x result) result))
505
(deftest replace-string.10
506
(let* ((x (copy-seq "abcdefg"))
507
(result (replace x "xyz" :start1 0 :end1 5)))
508
(values (eqt x result) result))
513
(deftest replace-string.11
514
(let* ((x (copy-seq "abcdefg"))
515
(result (replace x "xyz" :start2 1)))
516
(values (eqt x result) result))
520
(deftest replace-string.12
521
(let* ((x (copy-seq "abcdefg"))
522
(result (replace x "xyz" :start2 1 :end1 nil)))
523
(values (eqt x result) result))
527
(deftest replace-string.13
528
(let* ((x (copy-seq "abcdefg"))
529
(result (replace x "xyz" :start2 1 :end2 nil)))
530
(values (eqt x result) result))
534
(deftest replace-string.14
535
(let* ((x (copy-seq "abcdefg"))
536
(result (replace x "xyz" :start2 1 :end2 2)))
537
(values (eqt x result) result))
541
(deftest replace-string.15
542
(let* ((x (copy-seq "abcdefg"))
543
(result (replace x "xyz" :start1 4 :end1 5 :start2 1 :end2 2)))
544
(values (eqt x result) result))
548
(deftest replace-string.16
549
(let* ((x (copy-seq "abcdef"))
550
(y (coerce "123" 'list))
551
(result (replace x y :start1 1)))
552
(values (eqt x result) result))
556
(deftest replace-string.17
557
(let* ((x (copy-seq "abcdef"))
558
(y (make-array '(3) :initial-contents '(#\1 #\2 #\3)
559
:fill-pointer t :element-type 'character))
560
(result (replace x y :start1 1)))
561
(values (eqt x result) result))
565
(deftest replace-string.18
566
(let* ((x (copy-seq "abcdef"))
567
(y (make-array '(6) :initial-contents "123456"
569
:element-type 'character))
570
(result (replace x y :start1 1)))
571
(values (eqt x result) result))
575
(deftest replace-string.19
576
(let* ((x (copy-seq "abcdef"))
577
(result (replace x x :start1 0 :end1 3 :start2 1 :end2 4)))
578
(values (eqt x result) result))
582
(deftest replace-string.21
583
(let* ((x (copy-seq "abcdef"))
584
(result (replace x x :start1 1 :end1 4 :start2 0 :end2 3)))
585
(values (eqt x result) result))
589
;;; Order of evaluation tests
591
(deftest replace.order.1
594
(replace (progn (setf a (incf i)) (list 'a 'b 'c))
595
(progn (setf b (incf i)) (list 'e 'f)))
599
(deftest replace.order.2
600
(let ((i 0) a b c d e f)
602
(replace (progn (setf a (incf i)) (list 'a 'b 'c))
603
(progn (setf b (incf i)) (list 'e 'f))
604
:start1 (progn (setf c (incf i)) 1)
605
:end1 (progn (setf d (incf i)) 3)
606
:start2 (progn (setf e (incf i)) 0)
607
:end2 (progn (setf f (incf i)) 2)
610
(a e f) 6 1 2 3 4 5 6)
612
(deftest replace.order.3
613
(let ((i 0) a b c d e f)
615
(replace (progn (setf a (incf i)) (list 'a 'b 'c))
616
(progn (setf b (incf i)) (list 'e 'f))
617
:end2 (progn (setf c (incf i)) 2)
618
:start2 (progn (setf d (incf i)) 0)
619
:end1 (progn (setf e (incf i)) 3)
620
:start1 (progn (setf f (incf i)) 1)
623
(a e f) 6 1 2 3 4 5 6)
627
(deftest replace.allow-other-keys.1
628
(replace (copy-seq "abcdefg") "xyz" :allow-other-keys t)
631
(deftest replace.allow-other-keys.2
632
(replace (copy-seq "abcdefg") "xyz" :allow-other-keys nil)
635
(deftest replace.allow-other-keys.3
636
(replace (copy-seq "abcdefg") "xyz" :allow-other-keys t :bad t)
639
(deftest replace.allow-other-keys.4
640
(replace (copy-seq "abcdefg") "xyz" :bad t :allow-other-keys t)
643
(deftest replace.allow-other-keys.5
644
(replace (copy-seq "abcdefg") "xyz" :bad1 t :allow-other-keys t
645
:bad2 t :allow-other-keys nil :bad3 nil)
648
(deftest replace.allow-other-keys.6
649
(replace (copy-seq "abcdefg") "xyz" :allow-other-keys t :start1 1)
652
(deftest replace.keywords.7
653
(replace (copy-seq "abcdefg") "xyz" :start1 0 :start2 0 :end1 3 :end2 3
654
:start1 1 :start2 1 :end1 2 :end1 2)
662
(deftest replace.error.1
663
(signals-error (replace) program-error)
666
(deftest replace.error.2
667
(signals-error (replace nil) program-error)
670
(deftest replace.error.3
671
(signals-error (replace nil nil :start) program-error)
674
(deftest replace.error.4
675
(signals-error (replace nil nil 'bad t) program-error)
678
(deftest replace.error.5
679
(signals-error (replace nil nil :allow-other-keys nil 'bad t) program-error)
682
(deftest replace.error.6
683
(signals-error (replace nil nil 1 2) program-error)