summaryrefslogtreecommitdiff
path: root/testdata/scad/features
diff options
context:
space:
mode:
Diffstat (limited to 'testdata/scad/features')
-rw-r--r--testdata/scad/features/background-modifier.scad6
-rw-r--r--testdata/scad/features/difference-2d-tests.scad29
-rw-r--r--testdata/scad/features/difference-tests.scad22
-rw-r--r--testdata/scad/features/for-tests.scad36
-rw-r--r--testdata/scad/features/intersection-tests.scad19
-rw-r--r--testdata/scad/features/linear_extrude-tests.scad7
-rw-r--r--testdata/scad/features/minkowski2-tests.scad10
-rw-r--r--testdata/scad/features/minkowski3-tests.scad3
-rw-r--r--testdata/scad/features/primitive-inf-tests.scad9
9 files changed, 135 insertions, 6 deletions
diff --git a/testdata/scad/features/background-modifier.scad b/testdata/scad/features/background-modifier.scad
index d67270e..b60f6d0 100644
--- a/testdata/scad/features/background-modifier.scad
+++ b/testdata/scad/features/background-modifier.scad
@@ -8,3 +8,9 @@ difference() {
color("green") cube([10,4,10], center=true);
color("red") translate([0,-2,0]) sphere(3);
}
+
+// Test modifiers work with minkowski children
+translate([25,0,0]) minkowski() {
+ %cube(10, center=true);
+ cube(5, center=true);
+}
diff --git a/testdata/scad/features/difference-2d-tests.scad b/testdata/scad/features/difference-2d-tests.scad
new file mode 100644
index 0000000..bb798c2
--- /dev/null
+++ b/testdata/scad/features/difference-2d-tests.scad
@@ -0,0 +1,29 @@
+difference() {
+ square(10, center=true);
+ circle(r=4);
+}
+
+translate([12,0]) difference() {
+ square(10, center=true);
+ translate([2,2]) circle(r=2);
+ translate([-2,-2]) circle(r=2);
+}
+
+// Subtracting something from nothing
+translate([12,12]) difference() {
+ square([0,10], center=true);
+ # circle(r=4);
+}
+
+// Non-geometry (echo) statement as first child should be ignored
+translate([0,12]) difference() {
+ echo("difference-2d-tests");
+ square(10, center=true);
+ circle(r=4);
+}
+
+// Subtract 3D from 2D
+translate([24,0]) difference() {
+ square(10, center=true);
+ sphere(r=4);
+}
diff --git a/testdata/scad/features/difference-tests.scad b/testdata/scad/features/difference-tests.scad
index b770764..0751213 100644
--- a/testdata/scad/features/difference-tests.scad
+++ b/testdata/scad/features/difference-tests.scad
@@ -3,27 +3,26 @@ difference();
// No children
difference() { }
+// Basic
difference() {
cube([10,10,10], center=true);
cylinder(r=4, h=20, center=true);
}
-translate([12,0,0]) difference() {
- cube([10,10,10], center=true);
- cylinder(r=4, h=10.5, center=true);
-}
-
+// Two negative objects
translate([0,12,0]) difference() {
cube([10,10,10], center=true);
cylinder(r=4, h=11, center=true);
rotate([0,90,0]) cylinder(r=4, h=11, center=true);
}
+// Not intersecting
translate([12,12,0]) difference() {
cube([10,10,10], center=true);
translate([0,0,7.01]) cylinder(r=4, h=4, center=true);
}
+// Barely intersecting
translate([24,0,0]) difference() {
cube([10,10,10], center=true);
translate([0,0,6.99]) cylinder(r=4, h=4, center=true);
@@ -34,3 +33,16 @@ translate([24,12,0]) difference() {
cube([0,10,10], center=true);
# cylinder(r=4, h=20, center=true);
}
+
+// Non-geometry (echo) statement as first child should be ignored
+translate([24,-12,0]) difference() {
+ echo("difference-tests");
+ cube([10,10,10], center=true);
+ cylinder(r=4, h=20, center=true);
+}
+
+// Subtracting 2D from 3D
+translate([12,0,0]) difference() {
+ cube([10,10,10], center=true);
+ circle(r=6);
+}
diff --git a/testdata/scad/features/for-tests.scad b/testdata/scad/features/for-tests.scad
index 10295b1..6bb7f69 100644
--- a/testdata/scad/features/for-tests.scad
+++ b/testdata/scad/features/for-tests.scad
@@ -39,3 +39,39 @@ for(r=[1:true:5]) translate([r*10-60,50,0]) cylinder(r=r);
// Vector
for(r=[1,2,5]) translate([r*10-30,0,0]) cylinder(r=r);
+
+nan = 0/0;
+inf = 1/0;
+ninf = -1/0;
+
+echo(nan);
+echo(inf);
+echo(ninf);
+
+// validate step values
+for(i=[0:nan:0]) { echo("NAN", i); }
+for(i=[0:inf:0]) { echo("INF", i); }
+for(i=[0:ninf:0]) { echo("-INF", i); }
+
+for(i=[0:nan:1]) { echo("NAN", i); }
+for(i=[0:inf:1]) { echo("INF", i); }
+for(i=[0:ninf:1]) { echo("-INF", i); }
+
+for(i=[1:nan:0]) { echo("NAN", i); }
+for(i=[1:inf:0]) { echo("INF", i); }
+for(i=[1:ninf:0]) { echo("-INF", i); }
+
+// validate begin / end values
+for(i = [0:inf]) {}
+for(i = [0:ninf]) {}
+for(i = [inf:0]) {}
+for(i = [ninf:0]) {}
+
+for(i = [0:2:inf]) {}
+for(i = [0:2:ninf]) {}
+for(i = [inf:2:0]) {}
+for(i = [ninf:2:0]) {}
+for(i = [inf:2:inf]) {}
+for(i = [ninf:2:ninf]) {}
+for(i = [inf:2:ninf]) {}
+for(i = [ninf:2:inf]) {}
diff --git a/testdata/scad/features/intersection-tests.scad b/testdata/scad/features/intersection-tests.scad
index 4a1d7e3..d4e32db 100644
--- a/testdata/scad/features/intersection-tests.scad
+++ b/testdata/scad/features/intersection-tests.scad
@@ -39,3 +39,22 @@ translate([-12,12,0]) intersection() {
cube([10,10,10], center=true);
translate([0,-9.99,-9.99]) cube([10,10,10], center=true);
}
+
+// Intersecting something with nothing
+translate([0,-12,0]) intersection() {
+ cylinder(r=4, h=5, center=true);
+ cube(0);
+}
+
+// Intersecting 2D with 3D
+translate([12,-12,0]) intersection() {
+ cube([5,5,5], center=true);
+ circle(r=2);
+}
+
+// Non-geometry (echo) statement as first child should be ignored
+translate([24,-12,0]) intersection() {
+ echo("difference-tests");
+ cube([5,5,5], center=true);
+ cylinder(r=2, h=20, center=true);
+}
diff --git a/testdata/scad/features/linear_extrude-tests.scad b/testdata/scad/features/linear_extrude-tests.scad
index 680bf53..fbd1858 100644
--- a/testdata/scad/features/linear_extrude-tests.scad
+++ b/testdata/scad/features/linear_extrude-tests.scad
@@ -9,7 +9,12 @@ linear_extrude(height=10) square([10,10]);
translate([19,5,0]) linear_extrude(height=10, center=true) difference() {circle(5); circle(3);}
translate([31.5,2.5,0]) linear_extrude(height=10, twist=-45) polygon(points = [[-5,-2.5], [5,-2.5], [0,2.5]]);
-translate([0,20,0]) linear_extrude(height=20, twist=45, slices=2) square([10,10]);
+translate([0,20,0]) linear_extrude(height=20, twist=30, slices=2) {
+ difference() {
+ square([10,10]);
+ translate([1,1]) square([8,8]);
+ }
+}
translate([19,20,0]) linear_extrude(height=20, twist=45, slices=10) square([10,10]);
translate([0,-15,0]) linear_extrude(5) square([10,10]);
diff --git a/testdata/scad/features/minkowski2-tests.scad b/testdata/scad/features/minkowski2-tests.scad
index 08f3d98..92a7dca 100644
--- a/testdata/scad/features/minkowski2-tests.scad
+++ b/testdata/scad/features/minkowski2-tests.scad
@@ -29,3 +29,13 @@ module roundedBox2dHole() {
translate([-20,5,0]) roundedBox2dHole();
translate([0,0,0]) roundedBox2dCut();
translate([25,0,0]) roundedBox2dSimple();
+
+// One child
+translate([0,-20,0]) minkowski() { square(10); }
+
+// >2 children
+translate([-20,-20,0]) minkowski() {
+ square(10);
+ square(2, center=true);
+ circle(1);
+}
diff --git a/testdata/scad/features/minkowski3-tests.scad b/testdata/scad/features/minkowski3-tests.scad
index 0451b57..61a1dee 100644
--- a/testdata/scad/features/minkowski3-tests.scad
+++ b/testdata/scad/features/minkowski3-tests.scad
@@ -29,6 +29,9 @@ translate([-20,30,0]) roundedBox3dHole();
translate([0,25,0]) roundedBox3dCut();
translate([25,25,0]) roundedBox3dSimple();
+// One child
+translate([0,0,0]) minkowski() { cube([10,10,5]); }
+
// Empty
minkowski();
// No children
diff --git a/testdata/scad/features/primitive-inf-tests.scad b/testdata/scad/features/primitive-inf-tests.scad
new file mode 100644
index 0000000..a0bca32
--- /dev/null
+++ b/testdata/scad/features/primitive-inf-tests.scad
@@ -0,0 +1,9 @@
+cube(1/0);
+cube([0,0,1/0]);
+cylinder(h=10, r=1/0);
+cylinder(h=10, r1=1, r2=1/0);
+cylinder(h=1/0);
+sphere(1/0);
+polygon([[0,0,0],[1,0,0],[1,1/0,0]]);
+polyhedron(points = [[1/0,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]],
+ triangles = [[0,4,2],[0,2,5],[0,3,4],[0,5,3],[1,2,4],[1,5,2],[1,4,3], [1,3,5]]);
contact: Jan Huwald // Impressum