diff options
Diffstat (limited to 'testdata/scad/features')
-rw-r--r-- | testdata/scad/features/background-modifier.scad | 6 | ||||
-rw-r--r-- | testdata/scad/features/difference-2d-tests.scad | 29 | ||||
-rw-r--r-- | testdata/scad/features/difference-tests.scad | 22 | ||||
-rw-r--r-- | testdata/scad/features/for-tests.scad | 36 | ||||
-rw-r--r-- | testdata/scad/features/intersection-tests.scad | 19 | ||||
-rw-r--r-- | testdata/scad/features/linear_extrude-tests.scad | 7 | ||||
-rw-r--r-- | testdata/scad/features/minkowski2-tests.scad | 10 | ||||
-rw-r--r-- | testdata/scad/features/minkowski3-tests.scad | 3 | ||||
-rw-r--r-- | testdata/scad/features/primitive-inf-tests.scad | 9 |
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]]); |