diff options
-rw-r--r-- | testdata/scad/misc/children-tests.scad | 64 | ||||
-rw-r--r-- | tests/CMakeLists.txt | 3 | ||||
-rw-r--r-- | tests/regression/echotest/children-tests-expected.echo | 35 |
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" |