@@ -136,13 +136,6 @@ PURE String show(LIST<T> xs)
136
136
return str;
137
137
}
138
138
139
- template <typename T>
140
- void TEST_FIND_ALL (T xs)
141
- {
142
- for (auto x: xs)
143
- TEST (!empty (find (xs, x)));
144
- }
145
-
146
139
/* ***************************************************************************/
147
140
148
141
int main (void )
@@ -152,37 +145,56 @@ int main(void)
152
145
auto xs = list<int >();
153
146
for (int i = 30 ; i >= 0 ; i--)
154
147
xs = list (i, xs);
148
+ const double data[] = {-1.1 , 10.0 , 3.222 , -55.0 , 3.2 , 2.2 , 0.00001 };
149
+ auto ys = list<double >();
150
+ for (int i = sizeof (data) / sizeof (data[0 ]) - 1 ; i >= 0 ; i--)
151
+ ys = list (data[i], ys);
155
152
156
153
printf (" \n\33 [33mxs = %s\33 [0m\n " , c_str (show (xs)));
154
+ printf (" \n\33 [33mys = %s\33 [0m\n " , c_str (show (ys)));
157
155
TEST (index (list<int >()) == 0 );
158
156
TEST (size (list<int >()) == 0 );
159
157
TEST (empty (list<int >()));
160
158
TEST (index (xs) == 1 );
159
+ TEST (index (ys) == 1 );
161
160
TEST (!empty (xs));
161
+ TEST (!empty (ys));
162
162
TEST (size (xs) == 31 );
163
+ TEST (size (ys) == sizeof (data) / sizeof (data[0 ]));
163
164
TEST (head (xs) == 0 );
165
+ TEST (head (ys) == -1.1 );
164
166
TEST (size (tail (xs)) == 30 );
165
167
TEST (head (tail (xs)) == 1 );
168
+ TEST (head (tail (ys)) == 10.0 );
166
169
TEST (last (xs) == 30 );
170
+ TEST (last (ys) == 0.00001 );
167
171
TEST (size (take (xs, 2 )) == 2 );
168
172
TEST (head (take (xs, 2 )) == 0 );
169
173
TEST (last (take (xs, 2 )) == 1 );
174
+ TEST (memcmp (F::data (ys), data, sizeof (data)) == 0 );
170
175
TEST (size (take_while (xs, [] (int x) { return x <= 2 ; })) == 3 );
171
176
TEST (last (take_while (xs, [] (int x) { return x <= 2 ; })) == 2 );
172
177
TEST (size (append (xs, xs)) == 62 );
173
178
TEST (last (append (xs, xs)) == last (xs));
174
179
TEST (head (reverse (xs)) == last (xs));
175
180
TEST (second (head (zip (xs, xs))) == head (xs));
176
181
TEST (first (last (zip (xs, xs))) == last (xs));
182
+ TEST (second (head (zip (ys, xs))) == head (xs));
183
+ TEST (first (last (zip (ys, xs))) == last (ys));
177
184
TEST (compare (sort (xs), xs) == 0 );
185
+ TEST (head (sort (ys)) == -55.0 );
186
+ TEST (last (sort (ys)) == 10.0 );
178
187
TEST (compare (sort (xs, [] (int x, int y) { return y-x; }),
179
188
reverse (xs)) == 0 );
180
189
TEST (foldl (xs, true , [] (bool a, int x) { return (a && (x <= 30 )); }));
181
190
TEST (foldl (xs, 0 , [] (int x, int y) { return x+y; }) == 465 );
182
191
TEST (foldl (xs, 0 , [] (int x, int y) { return y; }) == 30 );
192
+ TEST (foldl (ys, 100000.0 , [] (double a, double x) { return (x < a? x: a); }) == -55.0 );
183
193
TEST (foldr (xs, 0 , [] (int x, int y) { return y; }) == 0 );
194
+ TEST (foldr (ys, 100000.0 , [] (double a, double x) { return (x < a? x: a); }) == -55.0 );
184
195
TEST (({int sum = 0 ; for (int x: xs) sum += x; sum;}) == 465 );
185
196
TEST (last (map<int >(xs, [] (int x) { return x+1 ; })) == 31 );
197
+ TEST (compare (map<int >(ys, [] (double x) { return (int )x; }), xs) != 0 );
186
198
TEST (size (filter (xs, [] (int x) { return x != 1 && x != 2 ; })) == 29 );
187
199
TEST (compare (xs, xs) == 0 );
188
200
TEST (compare (xs, tail (xs)) < 0 );
@@ -211,6 +223,7 @@ int main(void)
211
223
TEST (compare (string (' X' ), string (" X" )) == 0 );
212
224
TEST (size (str) == 76 );
213
225
TEST (size (append (str, str)) == 2 * size (str));
226
+ TEST (compare (string (c_str (str)), str) == 0 );
214
227
TEST (lookup (append (str, ' X' ), 76 ) == ' X' );
215
228
TEST (lookup (append (str, " ABC123" ), 76 +3 ) == ' 1' );
216
229
TEST (size ((str + str)) == 2 * size (str));
@@ -320,6 +333,10 @@ int main(void)
320
333
TEST (verify (ws));
321
334
TEST (memcmp (F::data (ws), data, sizeof (data)) == 0 );
322
335
TEST (memcmp (F::data (ws), F::data (xs), sizeof (data)) != 0 );
336
+ TEST (compare (vector (F::data (xs), size (xs)), xs) == 0 );
337
+ TEST (compare (vector (F::data (ys), size (ys)), ys) == 0 );
338
+ TEST (compare (vector (F::data (zs), size (zs)), zs) == 0 );
339
+ TEST (compare (vector (F::data (ws), size (ws)), ws) == 0 );
323
340
TEST (size (xs) == 300 );
324
341
TEST (size (ys) == size (string (" Hello World!" )));
325
342
TEST (size (zs) == 3 );
0 commit comments