include <console.scad>;
include <datatypes/datatypes-base.scad>;
include <datatypes/datatypes_table.scad>;
include <validation.scad>;
show_passing = true;
show_skipped = true;
echo( str("OpenSCAD Version ", version()) );
test_c =
[
["id", "identifier"],
["td", "description"],
["tv", "test value"]
];
test_r =
[
["t01", "The undefined value", undef],
["t03", "A range", [0:0.5:9]],
["t04", "A string", "A string"],
["t05", "Test list 01", ["orange","apple","grape","banana"]],
["t06", "Test list 02", ["b","a","n","a","n","a","s"]],
["t07", "Test list 03", [undef]],
["t08", "Test list 04", [[1,2],[2,3]]],
["t09", "Test list 05", ["ab",[1,2],[2,3],[4,5]]],
["t10", "Test list 06", [[1,2,3],[4,5,6],[7,8,9],["a","b","c"]]],
["t11", "Vector of integers 0 to 15", [for (i=[0:15]) i]]
];
good_c =
pmerge([concat(
"id", test_ids), concat(
"identifier", test_ids)]);
skip = -1;
good_r =
[
["edefined_or_DE3",
"default",
"default",
"default",
"t",
"banana",
"a",
"default",
"default",
[4,5],
["a","b","c"],
3
],
["find_12",
[0],
[1],
empty_lst
],
["count_S1",
0,
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
],
["exists_S1",
false,
false,
false,
false,
false,
false,
false,
true,
true,
true,
true
],
["first",
undef,
undef,
0,
"A",
"orange",
"b",
undef,
[1,2],
"ab",
[1,2,3],
0
],
["second",
undef,
undef,
0.5,
" ",
"apple",
"a",
undef,
[2,3],
[1,2],
[4,5,6],
1
],
["third",
undef,
undef,
9,
"s",
"grape",
"n",
undef,
undef,
[2,3],
[7,8,9],
2
],
["last",
undef,
undef,
undef,
"g",
"banana",
"s",
undef,
[2,3],
[4,5],
["a","b","c"],
15
],
["nfirst_1",
undef,
undef,
undef,
["A"],
["orange"],
["b"],
[undef],
[[1,2]],
["ab"],
[[1,2,3]],
[0]
],
["nlast_1",
undef,
undef,
undef,
["g"],
["banana"],
["s"],
[undef],
[[2,3]],
[[4,5]],
[["a","b","c"]],
[15]
],
["nhead_1",
undef,
undef,
undef,
["A"," ","s","t","r","i","n"],
["orange","apple","grape"],
["b","a","n","a","n","a"],
[[1,2]],
["ab",[1,2],[2,3]],
[[1,2,3],[4,5,6],[7,8,9]],
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]
],
["ntail_1",
undef,
undef,
undef,
[" ","s","t","r","i","n","g"],
["apple","grape","banana"],
["a","n","a","n","a","s"],
[[2,3]],
[[1,2],[2,3],[4,5]],
[[4,5,6],[7,8,9],["a","b","c"]],
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
],
["reverse",
undef,
undef,
["g","n","i","r","t","s"," ","A"],
["banana","grape","apple","orange"],
["s","a","n","a","n","a","b"],
[undef],
[[2,3],[1,2]],
[[4,5],[2,3],[1,2],"ab"],
[["a","b","c"],[7,8,9],[4,5,6],[1,2,3]],
[15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0]
],
["rselect_02",
undef,
undef,
["A"," ","s"],
["orange","apple","grape"],
["b","a","n"],
undef,
undef,
["ab",[1,2],[2,3]],
[[1,2,3],[4,5,6],[7,8,9]],
[0,1,2]
],
["nssequence_31",
[
["A"," ","s"],[" ","s","t"],["s","t","r"],
["t","r","i"],["r","i","n"],["i","n","g"]
],
[
["orange","apple","grape"],
["apple","grape","banana"]
],
[
["b","a","n"],["a","n","a"],["n","a","n"],
["a","n","a"],["n","a","s"]
],
[["ab",[1,2],[2,3]],[[1,2],[2,3],[4,5]]],
[
[[1,2,3],[4,5,6],[7,8,9]],
[[4,5,6],[7,8,9],["a","b","c"]]
],
[
[0,1,2],[1,2,3],[2,3,4],[3,4,5],[4,5,6],[5,6,7],
[6,7,8],[7,8,9],[8,9,10],[9,10,11],[10,11,12],
[11,12,13],[12,13,14],[13,14,15]
]
],
["eappend_T0",
undef,
[[0]],
undef,
[
["A",0],[" ",0],["s",0],["t",0],
["r",0],["i",0],["n",0],["g",0]
],
[
["orange",0],["apple",0],
["grape",0],["banana",0]
],
[
["b",0],["a",0],["n",0],["a",0],
["n",0],["a",0],["s",0]
],
[[undef,0]],
[[1,2,0],[2,3,0]],
[["ab",0],[1,2,0],[2,3,0],[4,5,0]],
[[1,2,3,0],[4,5,6,0],[7,8,9,0],["a","b","c",0]],
[
[0,0],[1,0],[2,0],[3,0],[4,0],[5,0],
[6,0],[7,0],[8,0],[9,0],[10,0],[11,0],
[12,0],[13,0],[14,0],[15,0]
]
],
["insert_T0",
undef,
undef,
undef,
undef,
["orange",0,"apple","grape","banana"],
["b","a","n","a","n","a",0,"s"],
undef,
[[1,2],0,[2,3]],
["ab",[1,2],0,[2,3],[4,5]],
undef,
[0,1,2,3,4,0,5,6,7,8,9,10,11,12,13,14,15]
],
["delete_T0",
undef,
undef,
["A"," ","s","t","r","i","n","g"],
["orange","grape","banana"],
["b","a","n","a","n","a"],
[undef],
[[1,2]],
["ab",[1,2],[4,5]],
[[1,2,3],[4,5,6],[7,8,9],["a","b","c"]],
[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15]
],
["strip",
undef,
undef,
["A"," ","s","t","r","i","n","g"],
["orange","apple","grape","banana"],
["b","a","n","a","n","a","s"],
[undef],
[[1,2],[2,3]],
["ab",[1,2],[2,3],[4,5]],
[[1,2,3],[4,5,6],[7,8,9],["a","b","c"]],
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
],
["unique",
undef,
undef,
["A"," ","s","t","r","i","n","g"],
["orange","apple","grape","banana"],
["b","a","n","s"],
[undef],
[[1,2],[2,3]],
["ab",[1,2],[2,3],[4,5]],
[[1,2,3],[4,5,6],[7,8,9],["a","b","c"]],
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
]
];
function get_value( vid ) =
get_table_v(test_r, test_c, vid,
"tv");
module run_test( fname, fresult, vid )
{
test_pass =
validate( cv=fresult, t=
"equals", ev=pass_value, pf=
true );
test_text =
validate( str(fname,
"(", get_value(vid),
")=", pass_value), fresult,
"equals", pass_value );
if ( pass_value != skip )
{
if ( !test_pass )
log_warn( str(vid,
"(", value_text,
") ", test_text) );
else if ( show_passing )
}
else if ( show_skipped )
log_info( str(vid,
" *skip*: '", fname,
"(", value_text,
")'") );
}
for (vid=test_ids) run_test(
"edefined_or_DE3",
edefined_or(get_value(vid),3,
"default"), vid );
for (vid=test_ids) run_test(
"find_12",
find([1,2],get_value(vid)), vid );
for (vid=test_ids) run_test(
"count_S1",
count(1,get_value(vid),
true), vid );
for (vid=test_ids) run_test(
"exists_S1",
exists(1,get_value(vid),
true), vid );
for (vid=test_ids) run_test(
"first",
first(get_value(vid)), vid );
for (vid=test_ids) run_test(
"second",
second(get_value(vid)), vid );
for (vid=test_ids) run_test(
"third",
third(get_value(vid)), vid );
for (vid=test_ids) run_test(
"last",
last(get_value(vid)), vid );
for (vid=test_ids) run_test(
"nfirst_1",
nfirst(get_value(vid),n=1), vid );
for (vid=test_ids) run_test(
"nlast_1",
nlast(get_value(vid),n=1), vid );
for (vid=test_ids) run_test(
"nhead_1",
nhead(get_value(vid),n=1), vid );
for (vid=test_ids) run_test(
"ntail_1",
ntail(get_value(vid),n=1), vid );
for (vid=test_ids) run_test(
"reverse",
reverse(get_value(vid)), vid );
for (vid=test_ids) run_test(
"rselect_02",
rselect(get_value(vid),i=[0:2]), vid );
for (vid=test_ids) run_test(
"nssequence_31",
nssequence(get_value(vid),n=3,s=1), vid );
for (vid=test_ids) run_test(
"eappend_T0",
eappend(0,get_value(vid)), vid );
for (vid=test_ids) run_test(
"insert_T0",
insert(0,get_value(vid),mv=[
"x",
"r",
"apple",
"s",[2,3],5]), vid );
for (vid=test_ids) run_test( "delete_T0", delete(get_value(vid),mv=["x","r","apple","s",[2,3],5]), vid );
for (vid=test_ids) run_test(
"strip",
strip(get_value(vid)), vid );
for (vid=test_ids) run_test(
"unique",
unique(get_value(vid)), vid );