module fail(title, message) {
echo(
str(
"",
"",
"FAIL: ", title,
"",
""
)
);
if(message != undef) {
echo(
str(
"",
" ",
message,
"",
""
)
);
}
}
function shift_to_int(point, digits) =
let(
pt = point * digits
)
len(pt) == 2 ?
[round(pt[0]), round(pt[1])] :
[round(pt[0]), round(pt[1]), round(pt[2])];
function all_shift_to_int(points, digits) =
[for(pt = points) shift_to_int(pt, digits) / digits];
module assertEqualPoint(expected, actual) {
leng_expected = len(expected);
leng_actual = len(actual);
if(leng_expected != leng_actual) {
fail(
"Point",
str("expected length: ", leng_expected,
", but: ", leng_actual)
);
} else {
n = 10000;
shifted_expected = shift_to_int(
expected, n
);
shifted_actual = shift_to_int(
actual, n
);
if(shifted_expected != shifted_actual) {
fail(
"Point",
str("expected: ", shifted_expected / n,
", but: ", shifted_actual / n)
);
}
}
}
module assertEqualPoints(expected, actual) {
leng_expected = len(expected);
leng_actual = len(actual);
if(leng_expected != leng_actual) {
fail(
"Points",
str("expected length: ", leng_expected,
", but: ", leng_actual)
);
} else {
for(i = [0:len(actual) - 1]) {
assertEqualPoint(expected[i], actual[i]);
}
}
}
module assertEqual(expected, actual) {
if(expected != actual) {
fail(
"Equality",
str("expected: ", expected,
", but: ", actual)
);
}
}
module assertTrue(truth) {
if(!truth) {
fail(
"Truth",
"expected: true, but: false"
);
}
}