1include <../std.scad>
2
3
4module test_num_true() {
5 assert_equal(num_true([0,false,undef]), 0);
6 assert_equal(num_true([1,false,undef]), 1);
7 assert_equal(num_true([1,5,false]), 2);
8 assert_equal(num_true([1,5,true]), 3);
9 assert_equal(num_true([[0,0], [0,0]]), 2);
10 assert_equal(num_true([[0,0], [1,0]]), 2);
11 assert_equal(num_true([[], [1,1]]), 1);
12 assert_equal(num_true([1,3,5,7,9], function (a) a%2==0),0);
13 assert_equal(num_true([1,3,6,8,9], function (a) a%2==0),2);
14 assert_equal(num_true([1,3,5,7,9], function (a) a%2!=0),5);
15}
16test_num_true();
17
18
19
20module test_typeof() {
21 assert(typeof(undef) == "undef");
22 assert(typeof(true) == "boolean");
23 assert(typeof(false) == "boolean");
24 assert(typeof(-123) == "number");
25 assert(typeof(0) == "number");
26 assert(typeof(123) == "number");
27 assert(typeof("") == "string");
28 assert(typeof("foo") == "string");
29 assert(typeof([]) == "list");
30 assert(typeof(["foo","bar"]) == "list");
31 assert(typeof([123,849,32]) == "list");
32 assert(typeof([0:5]) == "range");
33 assert(typeof([-3:0]) == "range");
34 assert(typeof([0:1:5]) == "range");
35 assert(typeof([-3:2:5]) == "range");
36 assert(typeof([10:-2:-10]) == "range");
37 assert(typeof([0:NAN:INF]) == "invalid");
38 assert(typeof([0:"a":INF]) == "undef");
39 assert(typeof([0:[]:INF]) == "undef");
40 assert(typeof([true:1:INF]) == "undef");
41}
42test_typeof();
43
44
45module test_is_type() {
46 assert(is_type(undef,"undef"));
47 assert(is_type(true,"boolean"));
48 assert(is_type(false,"boolean"));
49 assert(is_type(-123,"number"));
50 assert(is_type(0,"number"));
51 assert(is_type(123,"number"));
52 assert(is_type("","string"));
53 assert(is_type("foo","string"));
54 assert(is_type([],"list"));
55 assert(is_type([1,2,3],"list"));
56 assert(is_type(["foo","bar"],"list"));
57 assert(is_type([0:5],"range"));
58
59 assert(is_type(undef,["undef"]));
60 assert(is_type(true,["boolean"]));
61 assert(is_type(false,["boolean"]));
62 assert(is_type(-123,["number"]));
63 assert(is_type(0,["number"]));
64 assert(is_type(123,["number"]));
65 assert(is_type("",["string"]));
66 assert(is_type("foo",["string"]));
67 assert(is_type([],["list"]));
68 assert(is_type([1,2,3],["list"]));
69 assert(is_type(["foo","bar"],["list"]));
70 assert(is_type([0:5],["range"]));
71
72 assert(is_type(123,["number","string"]));
73 assert(is_type("foo",["number","string"]));
74}
75test_is_type();
76
77
78module test_is_def() {
79 assert(!is_def(undef));
80 assert(is_def(true));
81 assert(is_def(false));
82 assert(is_def(-123));
83 assert(is_def(0));
84 assert(is_def(123));
85 assert(is_def(""));
86 assert(is_def("foo"));
87 assert(is_def([]));
88 assert(is_def([3,4,5]));
89 assert(is_def(["foo","bar","baz"]));
90 assert(is_def([0:5]));
91}
92test_is_def();
93
94
95module test_segs() {
96 assert_equal(segs(50,$fn=8), 8);
97 assert_equal(segs(50,$fa=2,$fs=2), 158);
98}
99test_segs();
100
101
102
103
104module test_is_str() {
105 assert(!is_str(undef));
106 assert(!is_str(true));
107 assert(!is_str(false));
108 assert(!is_str(-123));
109 assert(!is_str(0));
110 assert(!is_str(123));
111 assert(is_str(""));
112 assert(is_str("foo"));
113 assert(!is_str([]));
114 assert(!is_str([3,4,5]));
115 assert(!is_str(["foo","bar","baz"]));
116 assert(!is_str([0:5]));
117}
118test_is_str();
119
120
121module test_is_int() {
122 assert(is_int(-999));
123 assert(is_int(-1));
124 assert(is_int(0));
125 assert(is_int(1));
126 assert(is_int(999));
127 assert(!is_int(-1.1));
128 assert(!is_int(1.1));
129 assert(!is_int(-0.1));
130 assert(!is_int(0.1));
131 assert(!is_int(-99.1));
132 assert(!is_int(99.1));
133 assert(!is_int(undef));
134 assert(!is_int(INF));
135 assert(!is_int(NAN));
136 assert(!is_int(false));
137 assert(!is_int(true));
138 assert(!is_int("foo"));
139 assert(!is_int([0,1,2]));
140 assert(!is_int([0:1:2]));
141}
142test_is_int();
143
144
145module test_is_integer() {
146 assert(is_integer(-999));
147 assert(is_integer(-1));
148 assert(is_integer(0));
149 assert(is_integer(1));
150 assert(is_integer(999));
151 assert(!is_integer(-1.1));
152 assert(!is_integer(1.1));
153 assert(!is_integer(-0.1));
154 assert(!is_integer(0.1));
155 assert(!is_integer(-99.1));
156 assert(!is_integer(99.1));
157 assert(!is_integer(undef));
158 assert(!is_integer(INF));
159 assert(!is_integer(NAN));
160 assert(!is_integer(false));
161 assert(!is_integer(true));
162 assert(!is_integer("foo"));
163 assert(!is_integer([0,1,2]));
164 assert(!is_integer([0:1:2]));
165}
166test_is_integer();
167
168
169module test_is_nan() {
170 assert(!is_nan(undef));
171 assert(!is_nan(true));
172 assert(!is_nan(false));
173 assert(!is_nan(-5));
174 assert(!is_nan(0));
175 assert(!is_nan(5));
176 assert(!is_nan(INF));
177 assert(!is_nan(-INF));
178 assert(!is_nan(""));
179 assert(!is_nan("foo"));
180 assert(!is_nan([]));
181 assert(!is_nan([3,4,5]));
182 assert(!is_nan([3:1:5]));
183 assert(is_nan(NAN));
184}
185test_is_nan();
186
187
188module test_is_finite() {
189 assert(!is_finite(undef));
190 assert(!is_finite(true));
191 assert(!is_finite(false));
192 assert(is_finite(-5));
193 assert(is_finite(0));
194 assert(is_finite(5));
195 assert(!is_finite(INF));
196 assert(!is_finite(-INF));
197 assert(!is_finite(""));
198 assert(!is_finite("foo"));
199 assert(!is_finite([]));
200 assert(!is_finite([3,4,5]));
201 assert(!is_finite([3:1:5]));
202 assert(!is_finite(NAN));
203}
204test_is_finite();
205
206
207module test_is_range() {
208 assert(!is_range(undef));
209 assert(!is_range(true));
210 assert(!is_range(false));
211 assert(!is_range(-5));
212 assert(!is_range(0));
213 assert(!is_range(5));
214 assert(!is_range(INF));
215 assert(!is_range(-INF));
216 assert(!is_range(""));
217 assert(!is_range("foo"));
218 assert(!is_range([]));
219 assert(!is_range([3,4,5]));
220 assert(!is_range([INF:4:5]));
221 assert(!is_range([3:NAN:5]));
222 assert(!is_range([3:4:"a"]));
223 assert(is_range([3:1:5]));
224}
225test_is_range();
226
227
228module test_valid_range() {
229 assert(valid_range([0:0]));
230 assert(valid_range([0:1:0]));
231 assert(valid_range([0:1:10]));
232 assert(valid_range([0.1:1.1:2.1]));
233 assert(valid_range([0:-1:0]));
234 assert(valid_range([10:-1:0]));
235 assert(valid_range([2.1:-1.1:0.1]));
236 if (version_num() < 20200600) {
237 assert(!valid_range([10:1:0]));
238 assert(!valid_range([2.1:1.1:0.1]));
239 assert(!valid_range([0:-1:10]));
240 assert(!valid_range([0.1:-1.1:2.1]));
241 }
242}
243test_valid_range();
244
245module test_is_consistent() {
246 assert(is_consistent([]));
247 assert(is_consistent([[],[]]));
248 assert(is_consistent([3,4,5]));
249 assert(is_consistent([[3,4],[4,5],[6,7]]));
250 assert(is_consistent([[[3],4],[[4],5]]));
251 assert(!is_consistent(5));
252 assert(!is_consistent(undef));
253 assert(!is_consistent([[3,4,5],[3,4]]));
254 assert(is_consistent([[3,[3,4,[5]]], [5,[2,9,[9]]]]));
255 assert(!is_consistent([[3,[3,4,[5]]], [5,[2,9,9]]]));
256
257 assert(is_consistent([3,4,5], 0));
258 assert(!is_consistent([3,4,undef], 0));
259 assert(is_consistent([[3,4],[4,5]], [1,1]));
260 assert(!is_consistent([[3,4], 6, [4,5]], [1,1]));
261 assert(is_consistent([[1,[3,4]], [4,[5,6]]], [1,[2,3]]));
262 assert(!is_consistent([[1,[3,INF]], [4,[5,6]]], [1,[2,3]]));
263}
264test_is_consistent();
265
266
267module test_same_shape() {
268 assert(same_shape([3,[4,5]],[7,[3,4]]));
269 assert(!same_shape([3,4,5], [7,[3,4]]));
270 assert(!same_shape([3,4,5],undef));
271 assert(!same_shape([5,3],3));
272 assert(!same_shape(undef,[3,4]));
273 assert(same_shape(4,5));
274 assert(!same_shape(5,undef));
275
276}
277test_same_shape();
278
279
280module test_default() {
281 assert(default(undef,23) == 23);
282 assert(default(true,23) == true);
283 assert(default(false,23) == false);
284 assert(default(-123,23) == -123);
285 assert(default(0,23) == 0);
286 assert(default(123,23) == 123);
287 assert(default("",23) == "");
288 assert(default("foo",23) == "foo");
289}
290test_default();
291
292
293module test_first_defined() {
294 assert(first_defined([undef,undef,true,false,undef]) == true);
295 assert(first_defined([undef,undef,false,true,undef]) == false);
296 assert(first_defined([undef,undef,0,1,undef]) == 0);
297 assert(first_defined([undef,undef,43,44,undef]) == 43);
298 assert(first_defined([undef,undef,"foo","bar",undef]) == "foo");
299 assert(first_defined([0,1,2,3,4]) == 0);
300 assert(first_defined([2,3,4]) == 2);
301 assert(first_defined([[undef,undef],[undef,true],[false,undef]],recursive=true) == [undef, true]);
302}
303test_first_defined();
304
305
306module test_one_defined() {
307 assert_equal(one_defined([27,undef,undef], "length,L,l") ,27);
308 assert_equal(one_defined([undef,28,undef], "length,L,l") ,28);
309 assert_equal(one_defined([undef,undef,29], "length,L,l") ,29);
310 assert_equal(one_defined([undef,undef,undef], "length,L,l", dflt=undef), undef);
311 assert_equal(one_defined([27,undef,undef], ["length","L","l"]) ,27);
312 assert_equal(one_defined([undef,28,undef], ["length","L","l"]) ,28);
313 assert_equal(one_defined([undef,undef,29], ["length","L","l"]) ,29);
314 assert_equal(one_defined([undef,undef,undef], ["length","L","l"], dflt=undef), undef);
315}
316test_one_defined();
317
318
319module test_num_defined() {
320 assert(num_defined([undef,undef,true,false,undef]) == 2);
321 assert(num_defined([9,undef,true,false,undef]) == 3);
322 assert(num_defined([undef,9,true,false,undef]) == 3);
323 assert(num_defined(["foo",9,true,false,undef]) == 4);
324}
325test_num_defined();
326
327
328module test_any_defined() {
329 assert(!any_defined([undef,undef,undef,undef,undef]));
330 assert(any_defined([3,undef,undef,undef,undef]));
331 assert(any_defined([undef,3,undef,undef,undef]));
332 assert(any_defined([undef,undef,3,undef,undef]));
333 assert(any_defined([undef,undef,undef,3,undef]));
334 assert(any_defined([undef,undef,undef,undef,3]));
335 assert(any_defined([3,undef,undef,undef,3]));
336 assert(any_defined([3,3,3,3,3]));
337 assert(any_defined(["foo",undef,undef,undef,undef]));
338 assert(any_defined([undef,"foo",undef,undef,undef]));
339 assert(any_defined([undef,undef,"foo",undef,undef]));
340 assert(any_defined([undef,undef,undef,"foo",undef]));
341 assert(any_defined([undef,undef,undef,undef,"foo"]));
342 assert(any_defined(["foo",undef,undef,undef,"foo"]));
343 assert(any_defined(["foo","foo","foo","foo","foo"]));
344 assert(any_defined([undef,undef,true,false,undef]));
345}
346test_any_defined();
347
348
349module test_all_defined() {
350 assert(!all_defined([undef,undef,undef,undef,undef]));
351 assert(!all_defined([3,undef,undef,undef,undef]));
352 assert(!all_defined([undef,3,undef,undef,undef]));
353 assert(!all_defined([undef,undef,3,undef,undef]));
354 assert(!all_defined([undef,undef,undef,3,undef]));
355 assert(!all_defined([undef,undef,undef,undef,3]));
356 assert(!all_defined([3,undef,undef,undef,3]));
357 assert(all_defined([3,3,3,3,3]));
358 assert(!all_defined(["foo",undef,undef,undef,undef]));
359 assert(!all_defined([undef,"foo",undef,undef,undef]));
360 assert(!all_defined([undef,undef,"foo",undef,undef]));
361 assert(!all_defined([undef,undef,undef,"foo",undef]));
362 assert(!all_defined([undef,undef,undef,undef,"foo"]));
363 assert(!all_defined(["foo",undef,undef,undef,"foo"]));
364 assert(all_defined(["foo","foo","foo","foo","foo"]));
365 assert(!all_defined([undef,undef,true,false,undef]));
366}
367test_all_defined();
368
369
370module test_get_anchor() {
371 assert_equal(get_anchor(UP,true,-[1,1,1],BOT),CENTER);
372 assert_equal(get_anchor(UP,false,-[1,1,1],BOT),-[1,1,1]);
373 assert_equal(get_anchor(UP,undef,-[1,1,1],BOT),UP);
374 assert_equal(get_anchor(undef,true,-[1,1,1],BOT),CENTER);
375 assert_equal(get_anchor(undef,false,-[1,1,1],BOT),-[1,1,1]);
376 assert_equal(get_anchor(undef,undef,-[1,1,1],BOT),BOT);
377}
378test_get_anchor();
379
380
381module test_get_radius() {
382 assert(get_radius(r1=100,d1=undef,r=undef,d=undef,dflt=23) == 100);
383 assert(get_radius(r1=undef,d1=200,r=undef,d=undef,dflt=23) == 100);
384 assert(get_radius(r1=undef,d1=undef,r=100,d=undef,dflt=23) == 100);
385 assert(get_radius(r1=undef,d1=undef,r=undef,d=200,dflt=23) == 100);
386 assert(get_radius(r1=50,d1=undef,r=undef,d=undef,dflt=23) == 50);
387 assert(get_radius(r1=undef,d1=100,r=undef,d=undef,dflt=23) == 50);
388 assert(get_radius(r1=undef,d1=undef,r=50,d=undef,dflt=23) == 50);
389 assert(get_radius(r1=undef,d1=undef,r=undef,d=100,dflt=23) == 50);
390 assert(get_radius(r1=undef,d1=undef,r=undef,d=undef,dflt=23) == 23);
391 assert(get_radius(r1=undef,d1=undef,r=undef,d=undef,dflt=undef) == undef);
392}
393test_get_radius();
394
395
396module test_scalar_vec3() {
397 assert(scalar_vec3(undef) == undef);
398 assert(scalar_vec3(3) == [3,3,3]);
399 assert(scalar_vec3(3,dflt=1) == [3,1,1]);
400 assert(scalar_vec3([3]) == [3,0,0]);
401 assert(scalar_vec3([3,4]) == [3,4,0]);
402 assert(scalar_vec3([3,4],dflt=1) == [3,4,1]);
403 assert(scalar_vec3([3,"a"],dflt=1) == [3,"a",1]);
404 assert(scalar_vec3([3,[2]],dflt=1) == [3,[2],1]);
405 assert(scalar_vec3([3],dflt=1) == [3,1,1]);
406 assert(scalar_vec3([3,4,5]) == [3,4,5]);
407 assert(scalar_vec3([3,4,5,6]) == [3,4,5]);
408 assert(scalar_vec3([3,4,5,6]) == [3,4,5]);
409}
410test_scalar_vec3();
411
412
413module test_segs() {
414 assert_equal(segs(50,$fn=8), 8);
415 assert_equal(segs(50,$fa=2,$fs=2), 158);
416 assert(segs(1)==5);
417 assert(segs(11)==30);
418 // assert(segs(1/0)==5);
419 // assert(segs(0/0)==5);
420 // assert(segs(undef)==5);
421}
422test_segs();
423
424// vim: expandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap