@@ -35,8 +35,25 @@ fn test_simple() {
35
35
log i;
36
36
check ( i == 17 ) ;
37
37
38
- /* FIXME (issue #138): Test d.get() once it no longer causes
39
- * segfault. */
38
+ check ( d. size ( ) == 0 u) ;
39
+ d. add_back ( 3 ) ;
40
+ check ( d. size ( ) == 1 u) ;
41
+ d. add_front ( 2 ) ;
42
+ check ( d. size ( ) == 2 u) ;
43
+ d. add_back ( 4 ) ;
44
+ check ( d. size ( ) == 3 u) ;
45
+ d. add_front ( 1 ) ;
46
+ check ( d. size ( ) == 4 u) ;
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 ) ;
40
57
}
41
58
42
59
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) {
57
74
check ( deq. pop_back ( ) == c) ;
58
75
check ( deq. pop_back ( ) == a) ;
59
76
60
- /* FIXME (issue #138): Test d.get() once it no longer causes
61
- * segfault. */
77
+ check ( deq. size ( ) == 0 u) ;
78
+ deq. add_back ( c) ;
79
+ check ( deq. size ( ) == 1 u) ;
80
+ deq. add_front ( b) ;
81
+ check ( deq. size ( ) == 2 u) ;
82
+ deq. add_back ( d) ;
83
+ check ( deq. size ( ) == 3 u) ;
84
+ deq. add_front ( a) ;
85
+ check ( deq. size ( ) == 4 u) ;
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) ;
62
91
}
63
92
64
- type eqfn [ T ] = fn ( & T a, & T b) -> bool;
93
+ type eqfn [ T ] = fn ( T a, T b) -> bool;
65
94
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) {
67
96
let deque. t[ T ] deq = deque. create [ T ] ( ) ;
68
97
check ( deq. size ( ) == 0 u) ;
69
98
deq. add_front ( a) ;
@@ -81,8 +110,20 @@ fn test_parameterized[T](eqfn[T] e, &T a, &T b, &T c, &T d) {
81
110
check ( e ( deq. pop_back ( ) , c) ) ;
82
111
check ( e ( deq. pop_back ( ) , a) ) ;
83
112
84
- /* FIXME (issue #138): Test d.get() once it no longer causes
85
- * segfault. */
113
+ check ( deq. size ( ) == 0 u) ;
114
+ deq. add_back ( c) ;
115
+ check ( deq. size ( ) == 1 u) ;
116
+ deq. add_front ( b) ;
117
+ check ( deq. size ( ) == 2 u) ;
118
+ deq. add_back ( d) ;
119
+ check ( deq. size ( ) == 3 u) ;
120
+ deq. add_front ( a) ;
121
+ check ( deq. size ( ) == 4 u) ;
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) ) ;
86
127
}
87
128
88
129
type taggy = tag ( one ( int ) , two ( int , int ) , three ( int , int , int ) ) ;
@@ -94,15 +135,15 @@ type taggypar[T] = tag(onepar(int),
94
135
type reccy = rec ( int x, int y, taggy t) ;
95
136
96
137
fn main( ) {
97
- fn inteq ( & int a, & int b) -> bool {
138
+ fn inteq ( int a, int b) -> bool {
98
139
ret a == b;
99
140
}
100
141
101
- fn intboxeq ( & @int a , & @int b ) -> bool {
142
+ fn intboxeq ( @int a , @int b ) -> bool {
102
143
ret a == b;
103
144
}
104
145
105
- fn taggyeq ( & taggy a, & taggy b) -> bool {
146
+ fn taggyeq ( taggy a, taggy b) -> bool {
106
147
alt ( a) {
107
148
case ( one ( a1) ) {
108
149
alt ( b) {
@@ -125,7 +166,7 @@ fn main() {
125
166
}
126
167
}
127
168
128
- fn taggypareq[ T ] ( & taggypar[ T ] a, & taggypar[ T ] b) -> bool {
169
+ fn taggypareq[ T ] ( taggypar[ T ] a, taggypar[ T ] b) -> bool {
129
170
alt ( a) {
130
171
case ( onepar[ T ] ( a1) ) {
131
172
alt ( b) {
@@ -150,65 +191,68 @@ fn main() {
150
191
}
151
192
}
152
193
153
- fn reccyeq ( & reccy a, & reccy b) -> bool {
194
+ fn reccyeq ( reccy a, reccy b) -> bool {
154
195
ret ( a. x == b. x && a. y == b. y && taggyeq ( a. t , b. t ) ) ;
155
196
}
156
197
157
- log "test simple" ;
198
+ log "*** starting" ;
199
+
200
+ log "*** test simple" ;
158
201
test_simple ( ) ;
202
+ log "*** end test simple" ;
159
203
160
204
/*
161
205
* FIXME: Causes "Invalid read of size 4" under valgrind.
162
206
163
- log "test boxes";
207
+ log "*** test boxes";
164
208
test_boxes(@5, @72, @64, @175);
209
+ log "*** end test boxes";
165
210
166
211
*/
167
212
168
213
log "test parameterized: int" ;
169
- let eqfn[ int] eq1 = bind inteq ( _ , _ ) ;
214
+ let eqfn[ int] eq1 = inteq;
170
215
test_parameterized[ int] ( eq1, 5 , 72 , 64 , 175 ) ;
171
216
172
217
/*
173
218
* FIXME: Appears to segfault after an upcall_grow_task
174
219
175
- log "test parameterized: @int";
176
- let eqfn[@int] eq2 = bind intboxeq(_, _) ;
220
+ log "*** test parameterized: @int";
221
+ let eqfn[@int] eq2 = intboxeq;
177
222
test_parameterized[@int](eq2, @5, @72, @64, @175);
223
+ log "*** end test parameterized @int";
178
224
179
- */
225
+ */
180
226
181
227
log "test parameterized: taggy" ;
182
- let eqfn[ taggy] eq3 = bind taggyeq ( _ , _ ) ;
228
+ let eqfn[ taggy] eq3 = taggyeq;
183
229
test_parameterized[ taggy] ( eq3,
184
230
one ( 1 ) , two ( 1 , 2 ) , three ( 1 , 2 , 3 ) , two ( 17 , 42 ) ) ;
185
231
186
232
/*
187
- * FIXME: Segfault.
233
+ * FIXME: Segfault. Also appears to be caused only after upcall_grow_task
188
234
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];
191
237
test_parameterized[taggypar[int]](eq4,
192
238
onepar[int](1),
193
239
twopar[int](1, 2),
194
240
threepar[int](1, 2, 3),
195
241
twopar[int](17, 42));
242
+ log "*** end test parameterized: taggypar[int]";
196
243
197
244
*/
198
245
199
- /*
200
- * FIXME: Segfault.
201
-
202
- log "test parameterized: reccy";
246
+ log "*** test parameterized: reccy" ;
203
247
let reccy reccy1 = rec ( x=1 , y=2 , t=one ( 1 ) ) ;
204
248
let reccy reccy2 = rec ( x=345 , y=2 , t=two ( 1 , 2 ) ) ;
205
249
let reccy reccy3 = rec ( x=1 , y=777 , t=three ( 1 , 2 , 3 ) ) ;
206
250
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;
208
252
test_parameterized[ reccy] ( eq5,
209
253
reccy1, reccy2, reccy3, reccy4) ;
254
+ log "*** end test parameterized: reccy" ;
210
255
211
- */
212
256
213
- log "done" ;
257
+ log "*** done" ;
214
258
}
0 commit comments