1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-12 09:44:16 +02:00

refactor to use assertEqualNum

This commit is contained in:
Justin Lin
2019-06-11 14:32:21 +08:00
parent df0f293825
commit 6b64ca01ab
16 changed files with 63 additions and 175 deletions

View File

@@ -35,7 +35,7 @@ function round_pts(points, float_digits = 4) =
let(n = pow(10, float_digits))
[for(pt = points) mul_round_pt(pt, n) / n];
module assertEqualPoint(expected, actual, float_digits = 4) {
module assertEqualPoint(expected, actual, epsilon = 0.0001) {
leng_expected = len(expected);
leng_actual = len(actual);
@@ -46,27 +46,19 @@ module assertEqualPoint(expected, actual, float_digits = 4) {
", but: ", leng_actual)
);
} else {
n = pow(10, float_digits);
shifted_expected = mul_round_pt(
expected, n
);
shifted_actual = mul_round_pt(
actual, n
);
if(shifted_expected != shifted_actual) {
fail(
"Point",
str("expected: ", shifted_expected / n,
", but: ", shifted_actual / n)
);
for(elem = (expected - actual)) {
if(abs(elem) > epsilon) {
fail(
"Point",
str("expected: ", expected,
", but: ", actual)
);
}
}
}
}
module assertEqualPoints(expected, actual, float_digits = 4) {
module assertEqualPoints(expected, actual, epsilon = 0.0001) {
leng_expected = len(expected);
leng_actual = len(actual);
@@ -78,20 +70,17 @@ module assertEqualPoints(expected, actual, float_digits = 4) {
);
} else {
for(i = [0:len(actual) - 1]) {
assertEqualPoint(expected[i], actual[i], float_digits);
assertEqualPoint(expected[i], actual[i], epsilon);
}
}
}
module assertEqual(expected, actual, float_digits = 4) {
r_expected = is_num(expected) ? round_n(expected, float_digits) : expected;
r_actual = is_num(actual) ? round_n(actual, float_digits) : actual;
if(r_expected != r_actual) {
module assertEqualNum(expected, actual, epsilon = 0.0001) {
if(abs(expected - actual) > epsilon) {
fail(
"Equality",
str("expected: ", r_expected,
", but: ", r_actual)
str("expected: ", expected,
", but: ", actual)
);
}
}

View File

@@ -14,7 +14,7 @@ module test_archimedean_spiral() {
expected_points = [[-5, 0], [-3.3333, -5.7735], [1.9153, -7.6542], [6.9287, -5.6121], [9.7591, -1.1017], [9.7906, 4.1666], [7.2895, 8.7588], [3.0136, 11.7181], [-2.0901, 12.5895], [-7.0994, 11.3524], [-11.25, 8.3116], [-14.0047, 3.9802], [-15.0734, -1.03], [-14.3991, -6.0996], [-12.1214, -10.6703], [-8.5301, -14.2915], [-4.013, -16.6466], [0.9931, -17.5619], [6.0464, -17.0006], [10.7367, -15.0488], [14.7127, -11.8925], [17.7005, -7.7927], [19.5144, -3.0584], [20.0591, 1.9792], [19.327, 6.9904], [17.3894, 11.6667], [14.385, 15.7377], [10.5054, 18.9824], [5.9805, 21.2371], [1.0622, 22.3994], [-3.9897, 22.4281], [-8.9216, 21.3404], [-13.4974, 19.2066], [-17.5086, 16.1426], [-20.7812, 12.3017], [-23.1817, 7.8645], [-24.6193, 3.0301], [-25.0472, -1.9943], [-24.4614, -7.0016], [-22.8983, -11.7935], [-20.4309, -16.1876], [-17.1632, -20.0228], [-13.2255, -23.1648], [-8.7672, -25.5085], [-3.9513, -26.9808], [1.0527, -27.5407], [6.0742, -27.1795], [10.9476, -25.9189], [15.5171, -23.8091], [19.6415, -20.9256], [23.1974, -17.3655], [26.0825, -13.2437], [28.2172, -8.6885], [29.5463, -3.8373], [30.0392, 1.168], [29.6895, 6.1848], [28.5147, 11.0741], [26.5539, 15.704], [23.8664, 19.9529], [20.5291, 23.7124], [16.6337, 26.8894], [12.2839, 29.4078], [7.5924, 31.21], [2.6774, 32.2573], [-2.3402, 32.5302], [-7.3397, 32.0283], [-12.2036, 30.7692], [-16.8203, 28.7878], [-21.0862, 26.1347], [-24.9077, 22.8745], [-28.2033, 19.084], [-30.9046, 14.8497], [-32.9575, 10.2661], [-34.3228, 5.4333], [-34.9764, 0.4543], [-34.9096, -4.5667], [-34.1286, -9.5267], [-32.6536, -14.326], [-30.5187, -18.8701], [-27.77, -23.0711], [-24.4648, -26.8496], [-20.67, -30.1356], [-16.4604, -32.8699], [-11.9176, -35.0046], [-7.1276, -36.5038], [-2.1794, -37.3437], [2.8365, -37.513], [7.83, -37.0127], [12.713, -35.8552], [17.4007, -34.0647], [21.8134, -31.6755], [25.8769, -28.7318], [29.5245, -25.2864], [32.6974, -21.3997], [35.3456, -17.1384], [37.4285, -12.5742], [38.9152, -7.7828], [39.7851, -2.8422], [40.0275, 2.1685], [39.6416, 7.1699]];
expected_angles = [180, 240, 285, 321, 354, 384, 411, 436, 460, 483, 504, 525, 544, 563, 582, 600, 617, 634, 650, 666, 682, 697, 712, 726, 740, 754, 768, 782, 795, 808, 821, 833, 846, 858, 870, 882, 893, 905, 916, 928, 939, 950, 961, 972, 982, 993, 1003, 1013, 1024, 1034, 1044, 1054, 1063, 1073, 1083, 1092, 1102, 1111, 1120, 1130, 1139, 1148, 1157, 1166, 1175, 1183, 1192, 1201, 1209, 1218, 1226, 1235, 1243, 1252, 1260, 1268, 1276, 1284, 1292, 1300, 1308, 1316, 1324, 1332, 1339, 1347, 1355, 1362, 1370, 1378, 1385, 1393, 1400, 1407, 1415, 1422, 1429, 1436, 1444, 1451];
expected_angles = [181, 241, 285, 321, 354, 384, 411, 436, 460, 483, 504, 525, 544, 563, 582, 600, 617, 634, 650, 666, 682, 697, 712, 726, 740, 754, 768, 782, 795, 808, 821, 833, 846, 858, 870, 882, 893, 905, 916, 928, 939, 950, 961, 972, 982, 993, 1003, 1013, 1024, 1034, 1044, 1054, 1063, 1073, 1083, 1092, 1102, 1111, 1120, 1130, 1139, 1148, 1157, 1166, 1175, 1183, 1192, 1201, 1209, 1218, 1226, 1235, 1243, 1252, 1260, 1268, 1276, 1284, 1292, 1300, 1308, 1316, 1324, 1332, 1339, 1347, 1355, 1362, 1370, 1378, 1385, 1393, 1400, 1407, 1415, 1422, 1429, 1436, 1444, 1451];
actual_points = [for(pa = points_angles) pa[0]];
// ceil for annoying float errors when echoing...XD
@@ -23,7 +23,7 @@ module test_archimedean_spiral() {
assertEqualPoints(expected_points, actual_points);
for(i = [0:0]) {
assertEqual(expected_angles[i], actual_angles[i]);
assertEqualNum(expected_angles[i], actual_angles[i]);
}
}

File diff suppressed because one or more lines are too long

View File

@@ -13,7 +13,7 @@ module test_bend() {
expected_angle = 11.25;
assertEqualPoints(expected_points, points);
assertEqual(expected_angle, angle);
assertEqualNum(expected_angle, angle);
}
bend(size = [x, y, z], angle = 270)

View File

@@ -13,11 +13,11 @@ module test_ellipse_extrude() {
expected_zs = [0, 0.392295, 0.782172, 1.16723, 1.54508, 1.91342, 2.26995, 2.61249, 2.93893, 3.24724, 3.53553, 3.80203, 4.04508, 4.2632, 4.45503, 4.6194, 4.75528, 4.86185, 4.93844, 4.98459, 5];
for(i = [0:len(expected_fs) - 1]) {
assertEqual(expected_fs[i], child_fs[i]);
assertEqualNum(expected_fs[i], child_fs[i]);
}
for(i = [0:len(expected_zs) - 1]) {
assertEqual(expected_zs[i], pre_zs[i]);
assertEqualNum(expected_zs[i], pre_zs[i]);
}

View File

@@ -23,7 +23,7 @@ module test_golden_spiral() {
assertEqualPoints(expected_pts, actual_pts);
for(i = [0:len(expected_angles) - 1]) {
assertEqual(
assertEqualNum(
expected_angles[i],
actual_angles[i]
);

View File

@@ -10,7 +10,7 @@ module test_hexagons_lv2() {
include <hexagons.scad>;
module test_each_hexagon(hex_r, pts_all_lines) {
assertEqual(19, hex_r);
assertEqualNum(19, hex_r);
expects = [
[[-34.641, 0], [0, 0], [34.641, 0]],
@@ -40,7 +40,7 @@ module test_hexagons_lv3() {
include <hexagons.scad>;
module test_each_hexagon(hex_r, pts_all_lines) {
assertEqual(19, hex_r);
assertEqualNum(19, hex_r);
expects = [
[[-69.282, 0], [-34.641, 0], [0, 0], [34.641, 0], [69.282, 0]],

View File

@@ -12,7 +12,7 @@ module test_hull_polyline2d() {
module test_line_segment(index, point1, point2, radius) {
assertEqualPoint(points[index - 1], point1);
assertEqualPoint(points[index], point2);
assertEqual(line_width, radius * 2);
assertEqualNum(line_width, radius * 2);
}
hull_polyline2d(

View File

@@ -17,7 +17,7 @@ module test_hull_polyline3d() {
module test_line_segment(index, point1, point2, radius) {
assertEqualPoint(points[index - 1], point1);
assertEqualPoint(points[index], point2);
assertEqual(thickness, radius * 2);
assertEqualNum(thickness, radius * 2);
}
hull_polyline3d(
@@ -47,7 +47,7 @@ module test_hull_polyline3d_helix() {
module test_line_segment(index, point1, point2, radius) {
assertEqualPoint(points[index - 1], point1);
assertEqualPoint(points[index], point2);
assertEqual(thickness, radius * 2);
assertEqualNum(thickness, radius * 2);
}
for(i = [0:7]) {

View File

@@ -19,10 +19,10 @@ module test_line2d() {
}
module test_line2d_line(angle, length, width, frags) {
assertEqual(0, angle);
assertEqual(5, length);
assertEqual(1, width);
assertEqual(24, frags);
assertEqualNum(0, angle);
assertEqualNum(5, length);
assertEqualNum(1, width);
assertEqualNum(24, frags);
}
line2d(p1 = p1, p2 = p2, width = width);
@@ -41,10 +41,10 @@ module test_line2d() {
}
module test_line2d_line(angle, length, width, frags) {
assertEqual(0, angle);
assertEqual(5, length);
assertEqual(1, width);
assertEqual(24, frags);
assertEqualNum(0, angle);
assertEqualNum(5, length);
assertEqualNum(1, width);
assertEqualNum(24, frags);
}
line2d(p1 = p1, p2 = p2, width = width,
@@ -64,10 +64,10 @@ module test_line2d() {
}
module test_line2d_line(angle, length, width, frags) {
assertEqual(0, angle);
assertEqual(5, length);
assertEqual(1, width);
assertEqual(24, frags);
assertEqualNum(0, angle);
assertEqualNum(5, length);
assertEqualNum(1, width);
assertEqualNum(24, frags);
}
line2d(p1 = p1, p2 = p2, width = width,

View File

@@ -13,17 +13,17 @@ module test_line3d() {
module test_line3d_butt(p, r, frags, length, angles) {
assertEqualPoint(p1, p);
assertEqual(thickness / 2, r);
assertEqual(fn, frags);
assertEqual(14.2829, length);
assertEqualNum(thickness / 2, r);
assertEqualNum(fn, frags);
assertEqualNum(14.2829, length);
assertEqualPoint([0, 45.5618, 11.3099], angles);
}
module test_line3d_cap(p, r, frags, cap_leng, angles) {
assert(p == p1 || p == p2);
assertEqual(thickness / 2, r);
assertEqual(fn, frags);
assertEqual(0.3536, cap_leng);
assertEqualNum(thickness / 2, r);
assertEqualNum(fn, frags);
assertEqualNum(0.3536, cap_leng);
assertEqualPoint([0, 45.5618, 11.3099], angles);
}
@@ -43,9 +43,9 @@ module test_line3d() {
module test_line3d_butt(p, r, frags, length, angles) {
assertEqualPoint(p1, p);
assertEqual(thickness / 2, r);
assertEqual(fn, frags);
assertEqual(14.2829, length);
assertEqualNum(thickness / 2, r);
assertEqualNum(fn, frags);
assertEqualNum(14.2829, length);
assertEqualPoint([0, 45.5618, 11.3099], angles);
}
@@ -70,17 +70,17 @@ module test_line3d() {
module test_line3d_butt(p, r, frags, length, angles) {
assertEqualPoint(p1, p);
assertEqual(thickness / 2, r);
assertEqual(fn, frags);
assertEqual(14.2829, length);
assertEqualNum(thickness / 2, r);
assertEqualNum(fn, frags);
assertEqualNum(14.2829, length);
assertEqualPoint([0, 45.5618, 11.3099], angles);
}
module test_line3d_cap(p, r, frags, cap_leng, angles) {
assert(p == p1 || p == p2);
assertEqual(thickness / 2, r);
assertEqual(fn, frags);
assertEqual(0.5043, cap_leng);
assertEqualNum(thickness / 2, r);
assertEqualNum(fn, frags);
assertEqualNum(0.5043, cap_leng);
assertEqualPoint([0, 45.5618, 11.3099], angles);
}

View File

@@ -6,8 +6,8 @@ module test_parse_number() {
include <split_str.scad>;
include <parse_number.scad>;
assertEqual(11, parse_number("10") + 1);
assertEqual(-0.1, parse_number("-1.1") + 1);
assertEqualNum(11, parse_number("10") + 1);
assertEqualNum(-0.1, parse_number("-1.1") + 1);
}
test_parse_number();

View File

@@ -11,7 +11,7 @@ module test_polyline2d() {
module assertCorrectSegment(index, point1, point2, width) {
assertEqualPoint(points[index - 1], point1);
assertEqualPoint(points[index], point2);
assertEqual(line_width, width);
assertEqualNum(line_width, width);
}
module assertCorrectCaps(startStyle, endStyle, index, p1Style, p2Style) {

View File

@@ -17,7 +17,7 @@ module test_polyline3d() {
module assertCorrectSegment(expected, actual, thickness) {
assertEqualPoint(expected[0], actual[0]);
assertEqualPoint(expected[1], actual[1]);
assertEqual(line_thickness, thickness);
assertEqualNum(line_thickness, thickness);
}
module assertCorrectCaps(leng_pts, startStyle, endStyle, index, p1Style, p2Style) {

View File

@@ -5,7 +5,7 @@ module test_split_str() {
include <sub_str.scad>;
include <split_str.scad>;
assertEqual(["hello", "world"], split_str("hello,world", ","));
assert(["hello", "world"] == split_str("hello,world", ","));
}
test_split_str();

View File

@@ -4,8 +4,8 @@ module test_sub_str() {
include <unittest.scad>;
include <sub_str.scad>;
assertEqual("hello", sub_str("helloworld", 0, 5));
assertEqual("world", sub_str("helloworld", 5));
assert("hello" == sub_str("helloworld", 0, 5));
assert("world" == sub_str("helloworld", 5));
}
test_sub_str();