From 1bbbfad5757c7174cf711a7be94a6ec5ed94ab05 Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Thu, 11 Dec 2014 17:24:35 -0500 Subject: [PATCH] #964 Added test for checking correct export of nonmanifold objects --- testdata/scad/misc/nonmanifold-polyhedron.scad | 16 ++++++++++++++++ tests/CMakeLists.txt | 5 +++++ .../nonmanifold-polyhedron-expected.png | Bin 0 -> 7957 bytes 3 files changed, 21 insertions(+) create mode 100644 testdata/scad/misc/nonmanifold-polyhedron.scad create mode 100644 tests/regression/monotonepngtest/nonmanifold-polyhedron-expected.png diff --git a/testdata/scad/misc/nonmanifold-polyhedron.scad b/testdata/scad/misc/nonmanifold-polyhedron.scad new file mode 100644 index 00000000..a1b56654 --- /dev/null +++ b/testdata/scad/misc/nonmanifold-polyhedron.scad @@ -0,0 +1,16 @@ +polyhedron(points=[ +[0,0,0], +[10,0,0], +[10,10,0], +[0,10,0], +[0,-20,20], +[10,-20,20], +[10,-20,30], +[0,-20,30] +], +faces = [[0,1,2,3],[4,5,6,7], +[1,2,5,4], +[2,3,6,5], +[3,0,6,5], +[0,1,4,7] +]); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d9b643e8..0cfb1f16 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1116,6 +1116,9 @@ list(APPEND EXPORT3D_TEST_FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/3D/features ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/bad-stl-wing.scad ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/rotate_extrude-hole.scad) +list(APPEND EXPORTCSG_TEST_FILES + ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/nonmanifold-polyhedron.scad) + disable_tests( # These don't output anything dxfpngtest_text-empty-tests @@ -1313,6 +1316,7 @@ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CTestCustom.cmake ${TMP}) # o stlpngtest: Export to STL, Re-import and render to PNG (--render=cgal) # o offpngtest: Export to OFF, Re-import and render to PNG (--render=cgal) # o dxfpngtest: Export to DXF, Re-import and render to PNG (--render=cgal) +# o stlcsgpngtest: Export to STL, Re-import and render to PNG (--preview) # add_cmdline_test(moduledumptest EXE ${OPENSCAD_BINPATH} ARGS -o SUFFIX ast FILES @@ -1356,6 +1360,7 @@ add_cmdline_test(monotonepngtest EXE ${OPENSCAD_BINPATH} ARGS --colorscheme=Mono add_cmdline_test(stlpngtest EXE ${PYTHON_EXECUTABLE} SCRIPT ${CMAKE_SOURCE_DIR}/export_import_pngtest.py ARGS --openscad=${OPENSCAD_BINPATH} --format=STL --render=cgal EXPECTEDDIR monotonepngtest SUFFIX png FILES ${EXPORT3D_TEST_FILES}) add_cmdline_test(offpngtest EXE ${PYTHON_EXECUTABLE} SCRIPT ${CMAKE_SOURCE_DIR}/export_import_pngtest.py ARGS --openscad=${OPENSCAD_BINPATH} --format=OFF --render=cgal EXPECTEDDIR monotonepngtest SUFFIX png FILES ${EXPORT3D_TEST_FILES}) add_cmdline_test(dxfpngtest EXE ${PYTHON_EXECUTABLE} SCRIPT ${CMAKE_SOURCE_DIR}/export_import_pngtest.py ARGS --openscad=${OPENSCAD_BINPATH} --format=DXF --render=cgal EXPECTEDDIR cgalpngtest SUFFIX png FILES ${FILES_2D}) +add_cmdline_test(stlcsgpngtest EXE ${PYTHON_EXECUTABLE} SCRIPT ${CMAKE_SOURCE_DIR}/export_import_pngtest.py ARGS --openscad=${OPENSCAD_BINPATH} --format=STL EXPECTEDDIR monotonepngtest SUFFIX png FILES ${EXPORTCSG_TEST_FILES}) # diff --git a/tests/regression/monotonepngtest/nonmanifold-polyhedron-expected.png b/tests/regression/monotonepngtest/nonmanifold-polyhedron-expected.png new file mode 100644 index 0000000000000000000000000000000000000000..f3e6fe724a224865300cf4579a988d7dd5be6b38 GIT binary patch literal 7957 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