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 =
[
["lstr",
undef,
"[0 : 0.5 : 9]",
"A string",
"orangeapplegrapebanana",
"bananas",
"undef",
"[1, 2][2, 3]",
"ab[1, 2][2, 3][4, 5]",
"[1, 2, 3][4, 5, 6][7, 8, 9][\"a\", \"b\", \"c\"]",
"0123456789101112131415"
],
["lstr_html_B",
"<b>undef</b>",
"<b>[0 : 0.5 : 9]</b>",
"<b>A string</b>",
"<b>orange</b><b>apple</b><b>grape</b><b>banana</b>",
"<b>b</b><b>a</b><b>n</b><b>a</b><b>n</b><b>a</b><b>s</b>",
"<b>undef</b>",
"<b>[1, 2]</b><b>[2, 3]</b>",
"<b>ab</b><b>[1, 2]</b><b>[2, 3]</b><b>[4, 5]</b>",
"<b>[1, 2, 3]</b><b>[4, 5, 6]</b><b>[7, 8, 9]</b><b>[\"a\", \"b\", \"c\"]</b>",
"<b>0</b><b>1</b><b>2</b><b>3</b><b>4</b><b>5</b><b>6</b><b>7</b><b>8</b><b>9</b><b>10</b><b>11</b><b>12</b><b>13</b><b>14</b><b>15</b>"
],
["consts",
empty_lst
],
["get_index",
[0,1,2,3,4,5,6,7],
[0,1,2,3],
[0,1,2,3,4,5,6],
[0],
[0,1],
[0,1,2,3],
[0,1,2,3],
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
],
["pad_9",
[undef,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0],
[[0:0.5:9],0,0,0,0,0,0,0,0],
["A string",0],
["orange","apple","grape","banana",0,0,0,0,0],
["b","a","n","a","n","a","s",0,0],
[undef,0,0,0,0,0,0,0,0],
[[1,2],[2,3],0,0,0,0,0,0,0],
["ab",[1,2],[2,3],[4,5],0,0,0,0,0],
[[1,2,3],[4,5,6],[7,8,9],["a","b","c"],0,0,0,0,0],
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
],
["limit_12",
undef,
[0:0.5:9],
"A string",
["orange","apple","grape","banana"],
["b","a","n","a","n","a","s"],
[undef],
[[1,2],[2,2]],
["ab",[1,2],[2,2],[2,2]],
[[1,2,2],[2,2,2],[2,2,2],["a","b","c"]],
[1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2]
],
["sum",
undef,
0,
85.5,
undef,
undef,
undef,
undef,
[3,5],
undef,
[undef,undef,undef],
120
],
["mean",
undef,
0,
4.5,
undef,
undef,
undef,
undef,
[1.5,2.5],
undef,
[undef,undef,undef],
7.5
],
["eselect_F",
undef,
undef,
["A"," ","s","t","r","i","n","g"],
["o","a","g","b"],
["b","a","n","a","n","a","s"],
[undef],
[1,2],
["a",1,2,4],
[1,4,7,"a"],
skip
],
["eselect_L",
undef,
undef,
["A"," ","s","t","r","i","n","g"],
["e","e","e","a"],
["b","a","n","a","n","a","s"],
[undef],
[2,3],
["b",2,3,5],
[3,6,9,"c"],
skip
],
["eselect_1",
undef,
undef,
skip,
["r","p","r","a"],
skip,
[undef],
[2,3],
["b",2,3,5],
[2,5,8,"b"],
skip
],
["smerge",
undef,
[[0:0.5:9]],
["A string"],
["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]
],
["pmerge",
undef,
undef,
["A string"],
[
["o","a","g","b"],["r","p","r","a"],
["a","p","a","n"],["n","l","p","a"],
["g","e","e","n"]
],
[["b","a","n","a","n","a","s"]],
undef,
[[1,2],[2,3]],
[["a",1,2,4],["b",2,3,5]],
[[1,4,7,"a"],[2,5,8,"b"],[3,6,9,"c"]],
undef
],
["qsort",
undef,
undef,
undef,
["apple","banana","grape","orange"],
["a","a","a","b","n","n","s"],
[undef],
skip,
skip,
skip,
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
],
["qsort_1R",
undef,
undef,
undef,
["orange","grape","apple","banana"],
skip,
skip,
[[2,3],[1,2]],
[[4,5],[2,3],[1,2],"ab"],
[[7,8,9],[4,5,6],[1,2,3],["a","b","c"]],
skip
],
["qsort2_1R",
undef,
undef,
undef,
["orange","grape","apple","banana"],
skip,
skip,
[[2,3],[1,2]],
["ab",[4,5],[2,3],[1,2]],
[["a","b","c"],[7,8,9],[4,5,6],[1,2,3]],
skip
],
["qsort2_HR",
undef,
undef,
undef,
["orange","grape","banana","apple"],
["s","n","n","b","a","a","a"],
[undef],
[[3,2],[2,1]],
[[5,4],[3,2],[2,1],"ab"],
[["c","b","a"],[9,8,7],[6,5,4],[3,2,1]],
[15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0]
]
];
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(
"lstr",
lstr(get_value(vid)), vid );
for (vid=test_ids) run_test(
"lstr_html_B",
lstr_html(get_value(vid),p=
"b"), vid );
for (vid=test_ids) run_test(
"consts",
consts(get_value(vid)), vid );
for (vid=test_ids) run_test(
"get_index",
get_index(get_value(vid)), vid );
for (vid=test_ids) run_test(
"pad_9",
pad(get_value(vid), w=9), vid );
for (vid=test_ids) run_test(
"limit_12",
limit(get_value(vid),1,2), vid );
for (vid=test_ids) run_test(
"sum",
sum(get_value(vid)), vid );
for (vid=test_ids) run_test(
"mean",
mean(get_value(vid)), vid );
for (vid=test_ids) run_test(
"eselect_F",
eselect(get_value(vid),f=
true), vid );
for (vid=test_ids) run_test(
"eselect_L",
eselect(get_value(vid),l=
true), vid );
for (vid=test_ids) run_test(
"eselect_1",
eselect(get_value(vid),i=1), vid );
for (vid=test_ids) run_test(
"smerge",
smerge(get_value(vid)), vid );
for (vid=test_ids) run_test(
"pmerge",
pmerge(get_value(vid)), vid );
for (vid=test_ids) run_test(
"qsort",
qsort(get_value(vid)), vid );
for (vid=test_ids) run_test(
"qsort_1R",
qsort(get_value(vid), i=1, r=
true), vid );
for (vid=test_ids) run_test(
"qsort2_1R",
qsort2(get_value(vid), i=1, r=
true), vid );
for (vid=test_ids) run_test(
"qsort2_HR",
qsort2(get_value(vid), d=5, r=
true), vid );