25 |
#(e d c b a) |
#(e d c b a) |
26 |
#(a b c d e)) |
#(a b c d e)) |
27 |
|
|
28 |
(deftest reverse-nonsimple-vector.1 |
(deftest reverse-vector.3 |
29 |
(let ((x (make-array 0 :fill-pointer t :adjustable t))) |
(let ((x (make-array 0 :fill-pointer t :adjustable t))) |
30 |
(reverse x)) |
(reverse x)) |
31 |
#()) |
#()) |
32 |
|
|
33 |
(deftest reverse-nonsimple-vector.2 |
(deftest reverse-vector.4 |
34 |
(let* ((x (make-array 5 :initial-contents '(1 2 3 4 5) |
(let* ((x (make-array 5 :initial-contents '(1 2 3 4 5) |
35 |
:fill-pointer t :adjustable t)) |
:fill-pointer t :adjustable t)) |
36 |
(y (reverse x))) |
(y (reverse x))) |
38 |
#(5 4 3 2 1) |
#(5 4 3 2 1) |
39 |
#(1 2 3 4 5)) |
#(1 2 3 4 5)) |
40 |
|
|
41 |
(deftest reverse-nonsimple-vector.3 |
(deftest reverse-vector.5 |
42 |
(let* ((x (make-array 10 :initial-contents '(1 2 3 4 5 6 7 8 9 10) |
(let* ((x (make-array 10 :initial-contents '(1 2 3 4 5 6 7 8 9 10) |
43 |
:fill-pointer 5)) |
:fill-pointer 5)) |
44 |
(y (reverse x))) |
(y (reverse x))) |
45 |
y) |
y) |
46 |
#(5 4 3 2 1)) |
#(5 4 3 2 1)) |
47 |
|
|
48 |
|
;;; Other unusual vectors |
49 |
|
|
50 |
|
(deftest reverse-vector.6 |
51 |
|
(do-special-integer-vectors |
52 |
|
(v #(1 1 0 1 1 0) nil) |
53 |
|
(let ((nv (reverse v))) |
54 |
|
(assert (typep nv 'simple-array)) |
55 |
|
(assert (not (eql v nv))) |
56 |
|
(assert (equalp nv #(0 1 1 0 1 1))) |
57 |
|
(assert (equalp v #(1 1 0 1 1 0))))) |
58 |
|
nil) |
59 |
|
|
60 |
|
(deftest reverse-vector.7 |
61 |
|
(do-special-integer-vectors |
62 |
|
(v #(-1 -1 0 -1 -1 0) nil) |
63 |
|
(let ((nv (reverse v))) |
64 |
|
(assert (typep nv 'simple-array)) |
65 |
|
(assert (not (eql v nv))) |
66 |
|
(assert (equalp nv #(0 -1 -1 0 -1 -1))) |
67 |
|
(assert (equalp v #(-1 -1 0 -1 -1 0))))) |
68 |
|
nil) |
69 |
|
|
70 |
|
(deftest reverse-vector.8 |
71 |
|
(let ((len 10)) |
72 |
|
(loop for etype in '(short-float single-float double-float long-float rational) |
73 |
|
for vals = (loop for i from 1 to len collect (coerce i etype)) |
74 |
|
for vec = (make-array len :element-type etype :initial-contents vals) |
75 |
|
for nvec = (reverse vec) |
76 |
|
unless (and (eql (length nvec) len) |
77 |
|
(typep nvec 'simple-array) |
78 |
|
(not (eql vec nvec)) |
79 |
|
(every #'eql (reverse vals) nvec) |
80 |
|
(every #'eql vals vec)) |
81 |
|
collect (list etype vals vec nvec))) |
82 |
|
nil) |
83 |
|
|
84 |
|
(deftest reverse-vector.9 |
85 |
|
(let ((len 10)) |
86 |
|
(loop for cetype in '(short-float single-float double-float long-float rational integer) |
87 |
|
for etype = `(complex ,cetype) |
88 |
|
for vals = (loop for i from 1 to len collect (complex (coerce i cetype) |
89 |
|
(coerce (- i) cetype))) |
90 |
|
for vec = (make-array len :element-type etype :initial-contents vals) |
91 |
|
for nvec = (reverse vec) |
92 |
|
unless (and (eql (length nvec) len) |
93 |
|
(typep nvec 'simple-array) |
94 |
|
(not (eql vec nvec)) |
95 |
|
(every #'eql (reverse vals) nvec) |
96 |
|
(every #'eql vals vec)) |
97 |
|
collect (list etype vals vec nvec))) |
98 |
|
nil) |
99 |
|
|
100 |
|
;;; Bit vectors |
101 |
|
|
102 |
(deftest reverse-bit-vector.1 |
(deftest reverse-bit-vector.1 |
103 |
(reverse #*) |
(reverse #*) |
104 |
#*) |
#*) |
117 |
y) |
y) |
118 |
#*11000) |
#*11000) |
119 |
|
|
120 |
|
;;; Strings |
121 |
|
|
122 |
(deftest reverse-string.1 |
(deftest reverse-string.1 |
123 |
(reverse "") |
(reverse "") |
124 |
"") |
"") |
157 |
(assert (string= "54321" s2)))) |
(assert (string= "54321" s2)))) |
158 |
nil) |
nil) |
159 |
|
|
160 |
|
;;; Order, number of times of evaluation |
161 |
|
|
162 |
(deftest reverse.order.1 |
(deftest reverse.order.1 |
163 |
(let ((i 0)) |
(let ((i 0)) |
164 |
(values |
(values |