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],
["t02", "An odd integer", 1],
["t03", "An small even integer", 10],
["t04", "A large integer", 100000000],
[
"t05",
"A small decimal (epsilon)",
aeps],
["t09", "The invalid number nan", 0 / 0],
["t10", "The boolean true", true],
["t11", "The boolean false", false],
["t12", "A character string", "a"],
["t13", "A string", "This is a longer string"],
["t16", "A 1-tuple list of undef", [undef]],
["t17", "A 1-tuple list", [10]],
["t18", "A 3-tuple list", [1, 2, 3]],
["t19", "A list of lists", [[1,2,3], [4,5,6], [7,8,9]]],
["t20", "A shorthand range", [0:9]],
["t21", "A range", [0:0.5:9]]
];
good_c =
pmerge([concat(
"id", test_ids), concat(
"identifier", test_ids)]);
t = true;
f = false;
u = undef;
s = -1;
good_r =
[
["is_defined", f, t, t, t, t, t, t, t, t, t, t, t, t, t, t, t, t, t, t, t, t],
["not_defined", t, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f],
["is_nan", f, f, f, f, f, f, f, f, t, f, f, f, f, f, f, f, f, f, f, f, f],
["is_inf", f, f, f, f, f, f, f, t, f, f, f, f, f, f, f, f, f, f, f, f, f],
["is_scalar", t, t, t, t, t, t, t, t, t, t, t, f, f, f, f, f, f, f, f, s, s],
["is_iterable", f, f, f, f, f, f, f, f, f, f, f, t, t, t, t, t, t, t, t, s, s],
["is_empty", f, f, f, f, f, f, f, f, f, f, f, f, f, t, t, f, f, f, f, f, f],
["is_number", f, t, t, t, t, t, t, t, t, f, f, f, f, f, f, f, f, f, f, f, f],
["is_integer", f, t, t, t, f, t, t, f, f, f, f, f, f, f, f, f, f, f, f, f, f],
["is_decimal", f, f, f, f, t, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f],
["is_boolean", f, f, f, f, f, f, f, f, f, t, t, f, f, f, f, f, f, f, f, f, f],
["is_string", f, f, f, f, f, f, f, f, f, f, f, t, t, t, f, f, f, f, f, f, f],
["is_list", f, f, f, f, f, f, f, f, f, f, f, f, f, f, t, t, t, t, t, s, s],
["is_range", f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, t, t],
["is_even", s, f, t, t, f, t, t, s, s, s, s, s, s, s, s, s, s, s, s, s, s],
["is_odd", s, t, f, f, f, f, f, s, s, s, s, s, s, s, s, s, s, s, s, s, s],
["is_between_MM", f, t, t, t, t, t, t, f, f, t, t, f, f, f, f, f, f, f, f, f, f]
];
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=pass_value, pf=
true );
test_text =
validate( str(fname,
"(", get_value(vid),
")=", pass_value), fresult, pass_value );
if ( pass_value != s )
{
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(
"is_defined",
is_defined(get_value(vid)), vid );
for (vid=test_ids) run_test(
"not_defined",
not_defined(get_value(vid)), vid );
for (vid=test_ids) run_test(
"is_nan",
is_nan(get_value(vid)), vid );
for (vid=test_ids) run_test(
"is_inf",
is_inf(get_value(vid)), vid );
for (vid=test_ids) run_test(
"is_scalar",
is_scalar(get_value(vid)), vid );
for (vid=test_ids) run_test(
"is_iterable",
is_iterable(get_value(vid)), vid );
for (vid=test_ids) run_test(
"is_empty",
is_empty(get_value(vid)), vid );
for (vid=test_ids) run_test(
"is_number",
is_number(get_value(vid)), vid );
for (vid=test_ids) run_test(
"is_integer",
is_integer(get_value(vid)), vid );
for (vid=test_ids) run_test(
"is_decimal",
is_decimal(get_value(vid)), vid );
for (vid=test_ids) run_test(
"is_boolean",
is_boolean(get_value(vid)), vid );
for (vid=test_ids) run_test(
"is_string",
is_string(get_value(vid)), vid );
for (vid=test_ids) run_test(
"is_list",
is_list(get_value(vid)), vid );
for (vid=test_ids) run_test(
"is_range",
is_range(get_value(vid)), vid );
for (vid=test_ids) run_test(
"is_even",
is_even(get_value(vid)), vid );
for (vid=test_ids) run_test(
"is_odd",
is_odd(get_value(vid)), vid );