Skip to content

Commit abe307c

Browse files
committed
Uncomment recently-no-longer-failing std.deque tests. Add a few arbitrary-access checks.
1 parent 73ee16b commit abe307c

File tree

1 file changed

+74
-30
lines changed

1 file changed

+74
-30
lines changed

src/test/run-pass/lib-deque.rs

Lines changed: 74 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,25 @@ fn test_simple() {
3535
log i;
3636
check (i == 17);
3737

38-
/* FIXME (issue #138): Test d.get() once it no longer causes
39-
* segfault. */
38+
check (d.size() == 0u);
39+
d.add_back(3);
40+
check (d.size() == 1u);
41+
d.add_front(2);
42+
check (d.size() == 2u);
43+
d.add_back(4);
44+
check (d.size() == 3u);
45+
d.add_front(1);
46+
check (d.size() == 4u);
47+
48+
log d.get(0);
49+
log d.get(1);
50+
log d.get(2);
51+
log d.get(3);
52+
53+
check (d.get(0) == 1);
54+
check (d.get(1) == 2);
55+
check (d.get(2) == 3);
56+
check (d.get(3) == 4);
4057
}
4158

4259
fn test_boxes(@int a, @int b, @int c, @int d) {
@@ -57,13 +74,25 @@ fn test_boxes(@int a, @int b, @int c, @int d) {
5774
check (deq.pop_back() == c);
5875
check (deq.pop_back() == a);
5976

60-
/* FIXME (issue #138): Test d.get() once it no longer causes
61-
* segfault. */
77+
check (deq.size() == 0u);
78+
deq.add_back(c);
79+
check (deq.size() == 1u);
80+
deq.add_front(b);
81+
check (deq.size() == 2u);
82+
deq.add_back(d);
83+
check (deq.size() == 3u);
84+
deq.add_front(a);
85+
check (deq.size() == 4u);
86+
87+
check (deq.get(0) == a);
88+
check (deq.get(1) == b);
89+
check (deq.get(2) == c);
90+
check (deq.get(3) == d);
6291
}
6392

64-
type eqfn[T] = fn(&T a, &T b) -> bool;
93+
type eqfn[T] = fn(T a, T b) -> bool;
6594

66-
fn test_parameterized[T](eqfn[T] e, &T a, &T b, &T c, &T d) {
95+
fn test_parameterized[T](eqfn[T] e, T a, T b, T c, T d) {
6796
let deque.t[T] deq = deque.create[T]();
6897
check (deq.size() == 0u);
6998
deq.add_front(a);
@@ -81,8 +110,20 @@ fn test_parameterized[T](eqfn[T] e, &T a, &T b, &T c, &T d) {
81110
check (e(deq.pop_back(), c));
82111
check (e(deq.pop_back(), a));
83112

84-
/* FIXME (issue #138): Test d.get() once it no longer causes
85-
* segfault. */
113+
check (deq.size() == 0u);
114+
deq.add_back(c);
115+
check (deq.size() == 1u);
116+
deq.add_front(b);
117+
check (deq.size() == 2u);
118+
deq.add_back(d);
119+
check (deq.size() == 3u);
120+
deq.add_front(a);
121+
check (deq.size() == 4u);
122+
123+
check (e(deq.get(0), a));
124+
check (e(deq.get(1), b));
125+
check (e(deq.get(2), c));
126+
check (e(deq.get(3), d));
86127
}
87128

88129
type taggy = tag(one(int), two(int, int), three(int, int, int));
@@ -94,15 +135,15 @@ type taggypar[T] = tag(onepar(int),
94135
type reccy = rec(int x, int y, taggy t);
95136

96137
fn main() {
97-
fn inteq(&int a, &int b) -> bool {
138+
fn inteq(int a, int b) -> bool {
98139
ret a == b;
99140
}
100141

101-
fn intboxeq(&@int a, &@int b) -> bool {
142+
fn intboxeq(@int a, @int b) -> bool {
102143
ret a == b;
103144
}
104145

105-
fn taggyeq(&taggy a, &taggy b) -> bool {
146+
fn taggyeq(taggy a, taggy b) -> bool {
106147
alt (a) {
107148
case (one(a1)) {
108149
alt (b) {
@@ -125,7 +166,7 @@ fn main() {
125166
}
126167
}
127168

128-
fn taggypareq[T](&taggypar[T] a, &taggypar[T] b) -> bool {
169+
fn taggypareq[T](taggypar[T] a, taggypar[T] b) -> bool {
129170
alt (a) {
130171
case (onepar[T](a1)) {
131172
alt (b) {
@@ -150,65 +191,68 @@ fn main() {
150191
}
151192
}
152193

153-
fn reccyeq(&reccy a, &reccy b) -> bool {
194+
fn reccyeq(reccy a, reccy b) -> bool {
154195
ret (a.x == b.x && a.y == b.y && taggyeq(a.t, b.t));
155196
}
156197

157-
log "test simple";
198+
log "*** starting";
199+
200+
log "*** test simple";
158201
test_simple();
202+
log "*** end test simple";
159203

160204
/*
161205
* FIXME: Causes "Invalid read of size 4" under valgrind.
162206
163-
log "test boxes";
207+
log "*** test boxes";
164208
test_boxes(@5, @72, @64, @175);
209+
log "*** end test boxes";
165210
166211
*/
167212

168213
log "test parameterized: int";
169-
let eqfn[int] eq1 = bind inteq(_, _);
214+
let eqfn[int] eq1 = inteq;
170215
test_parameterized[int](eq1, 5, 72, 64, 175);
171216

172217
/*
173218
* FIXME: Appears to segfault after an upcall_grow_task
174219
175-
log "test parameterized: @int";
176-
let eqfn[@int] eq2 = bind intboxeq(_, _);
220+
log "*** test parameterized: @int";
221+
let eqfn[@int] eq2 = intboxeq;
177222
test_parameterized[@int](eq2, @5, @72, @64, @175);
223+
log "*** end test parameterized @int";
178224
179-
*/
225+
*/
180226

181227
log "test parameterized: taggy";
182-
let eqfn[taggy] eq3 = bind taggyeq(_, _);
228+
let eqfn[taggy] eq3 = taggyeq;
183229
test_parameterized[taggy](eq3,
184230
one(1), two(1, 2), three(1, 2, 3), two(17, 42));
185231

186232
/*
187-
* FIXME: Segfault.
233+
* FIXME: Segfault. Also appears to be caused only after upcall_grow_task
188234
189-
log "test parameterized: taggypar[int]";
190-
let eqfn[taggypar[int]] eq4 = bind taggypareq[int](_, _);
235+
log "*** test parameterized: taggypar[int]";
236+
let eqfn[taggypar[int]] eq4 = taggypareq[int];
191237
test_parameterized[taggypar[int]](eq4,
192238
onepar[int](1),
193239
twopar[int](1, 2),
194240
threepar[int](1, 2, 3),
195241
twopar[int](17, 42));
242+
log "*** end test parameterized: taggypar[int]";
196243
197244
*/
198245

199-
/*
200-
* FIXME: Segfault.
201-
202-
log "test parameterized: reccy";
246+
log "*** test parameterized: reccy";
203247
let reccy reccy1 = rec(x=1, y=2, t=one(1));
204248
let reccy reccy2 = rec(x=345, y=2, t=two(1, 2));
205249
let reccy reccy3 = rec(x=1, y=777, t=three(1, 2, 3));
206250
let reccy reccy4 = rec(x=19, y=252, t=two(17, 42));
207-
let eqfn[reccy] eq5 = bind reccyeq(_, _);
251+
let eqfn[reccy] eq5 = reccyeq;
208252
test_parameterized[reccy](eq5,
209253
reccy1, reccy2, reccy3, reccy4);
254+
log "*** end test parameterized: reccy";
210255

211-
*/
212256

213-
log "done";
257+
log "*** done";
214258
}

0 commit comments

Comments
 (0)