summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--testdata/scad/misc/children-tests.scad64
-rw-r--r--tests/CMakeLists.txt3
-rw-r--r--tests/regression/echotest/children-tests-expected.echo35
3 files changed, 101 insertions, 1 deletions
diff --git a/testdata/scad/misc/children-tests.scad b/testdata/scad/misc/children-tests.scad
new file mode 100644
index 0000000..a9a3cf9
--- /dev/null
+++ b/testdata/scad/misc/children-tests.scad
@@ -0,0 +1,64 @@
+
+module child1() {
+ echo("child1");
+}
+module child2() {
+ echo("child2");
+}
+module child3() {
+ echo("child3");
+}
+module child4() {
+ echo("child4");
+}
+module child5() {
+ echo("child5");
+}
+
+module test_children_empty() {
+ echo("Children empty: begin");
+ children();
+ echo("Children empty: end");
+}
+test_children_empty() {
+ child1();child2();child3();child4();child5();
+}
+
+module test_children_scalar() {
+ echo("Children scalar: begin");
+ children(0); // child1
+ children(4); // child5
+ children(2); // child3
+ children(5); // out
+ children(-1); // out
+ echo("Children scalar: end");
+}
+test_children_scalar() {
+ child1();child2();child3();child4();child5();
+}
+
+module test_children_vector() {
+ echo("Children vector: begin");
+ children([4]); // child5 last
+ children([0,3,1]); // child1, child4, child2
+ children([5,-1]); // out, out
+ echo("Children vector: end");
+}
+test_children_vector() {
+ child1();child2();child3();child4();child5();
+}
+
+module test_children_range() {
+ echo("Children range: begin");
+ children([0:4]); // all
+ children([1:2]); // child2, child3
+ children([0:2:4]); // child1, child3, child5
+ children([4:-1:0]); // out, out
+ echo("Children range: end");
+}
+test_children_range() {
+ child1();child2();child3();child4();child5();
+}
+
+// to avoid no object error
+cube(1.0);
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index ab94e64..d9aef2e 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -772,7 +772,8 @@ list(APPEND ECHO_FILES ${FUNCTION_FILES}
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/value-reassignment-tests2.scad
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/variable-scope-tests.scad
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/lookup-tests.scad
- ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/expression-shortcircuit-tests.scad)
+ ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/expression-shortcircuit-tests.scad
+ ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/children-tests.scad)
list(APPEND DUMPTEST_FILES ${FEATURES_FILES} ${EXAMPLE_FILES})
list(APPEND DUMPTEST_FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/escape-test.scad
diff --git a/tests/regression/echotest/children-tests-expected.echo b/tests/regression/echotest/children-tests-expected.echo
new file mode 100644
index 0000000..7b8278a
--- /dev/null
+++ b/tests/regression/echotest/children-tests-expected.echo
@@ -0,0 +1,35 @@
+ECHO: "Children empty: begin"
+ECHO: "child1"
+ECHO: "child2"
+ECHO: "child3"
+ECHO: "child4"
+ECHO: "child5"
+ECHO: "Children empty: end"
+ECHO: "Children scalar: begin"
+ECHO: "child1"
+ECHO: "child5"
+ECHO: "child3"
+WARNING: Children index (5) out of bounds (5 children)
+WARNING: Negative children index (-1) not allowed
+ECHO: "Children scalar: end"
+ECHO: "Children vector: begin"
+ECHO: "child5"
+ECHO: "child1"
+ECHO: "child4"
+ECHO: "child2"
+WARNING: Children index (5) out of bounds (5 children)
+WARNING: Negative children index (-1) not allowed
+ECHO: "Children vector: end"
+ECHO: "Children range: begin"
+ECHO: "child1"
+ECHO: "child2"
+ECHO: "child3"
+ECHO: "child4"
+ECHO: "child5"
+ECHO: "child2"
+ECHO: "child3"
+ECHO: "child1"
+ECHO: "child3"
+ECHO: "child5"
+WARNING: Bad range parameter for children: too many elements (-4).
+ECHO: "Children range: end"
contact: Jan Huwald // Impressum