From 5ce3d4ff8df274bbbb1b5dbd272179ad5765ded1 Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Thu, 8 Sep 2011 08:21:53 +0200 Subject: [PATCH] Added child-tests --- testdata/scad/features/child-tests.scad | 34 ++++++++++++++++++ tests/CMakeLists.txt | 3 +- .../cgalpngtest/child-tests-expected.png | Bin 0 -> 13034 bytes .../opencsgtest/child-tests-expected.png | Bin 0 -> 13600 bytes 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 testdata/scad/features/child-tests.scad create mode 100644 tests/regression/cgalpngtest/child-tests-expected.png create mode 100644 tests/regression/opencsgtest/child-tests-expected.png diff --git a/testdata/scad/features/child-tests.scad b/testdata/scad/features/child-tests.scad new file mode 100644 index 00000000..e4e35722 --- /dev/null +++ b/testdata/scad/features/child-tests.scad @@ -0,0 +1,34 @@ +$fn=16; + +module parent() { + for (i=[0:2]) { + translate([2.5*i,0,0]) child(i); + } +} + +// Normal +parent() { + sphere(); + cylinder(h=2, center=true); + cube(2, center=true); +} + +// No children +parent(); + +// Too few children +translate([0,3,0]) parent() { sphere(); } + +// No parameter to child +module parent2() { + child(); +} + +translate([2.5,3,0]) parent2() { cylinder(h=2, center=true); sphere(); } + +// Negative parameter to child +module parent3() { + child(-1); +} + +translate([5,3,0]) parent3() { cube(); sphere(); } diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index f7fd320c..1934b86f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -234,7 +234,8 @@ LIST(APPEND CGALPNGTEST_FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/features/render-tests.scad ${CMAKE_SOURCE_DIR}/../testdata/scad/features/projection-tests.scad ${CMAKE_SOURCE_DIR}/../testdata/scad/features/assign-tests.scad - ${CMAKE_SOURCE_DIR}/../testdata/scad/features/include-tests.scad) + ${CMAKE_SOURCE_DIR}/../testdata/scad/features/include-tests.scad + ${CMAKE_SOURCE_DIR}/../testdata/scad/features/child-tests.scad) #LIST(APPEND CGALPNGTEST_FILES ${CMAKE_SOURCE_DIR}/../examples/example001.scad) add_cmdline_test(cgalpngtest png ${CGALPNGTEST_FILES}) diff --git a/tests/regression/cgalpngtest/child-tests-expected.png b/tests/regression/cgalpngtest/child-tests-expected.png new file mode 100644 index 0000000000000000000000000000000000000000..ed6207c2ab2d10007232821fe628e6a444aa51cd GIT binary patch literal 13034 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 S8cqM_6JV%kru$LbCH8;Hu%3$m literal 0 HcmV?d00001