diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 61bbe4e74..f21fe3132 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -67,9 +67,13 @@ find_package(Boost REQUIRED COMPONENTS system thread filesystem) set(LIBDIR ${CMAKE_CURRENT_SOURCE_DIR}/../xs/src/) set(GUI_LIBDIR ${CMAKE_CURRENT_SOURCE_DIR}/GUI/) + set(TESTDIR ${CMAKE_CURRENT_SOURCE_DIR}/test) set(GUI_TESTDIR ${CMAKE_CURRENT_SOURCE_DIR}/test/GUI/) +# directory that contains the dependent non-source files, like models and configurations +set(TESTFILE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/test/inputs/) + include_directories(${LIBDIR}) include_directories(${LIBDIR}/libslic3r) include_directories(${LIBDIR}/slic3r/GUI/) @@ -376,11 +380,14 @@ if (SLIC3R_BUILD_TESTS) target_include_directories(Catch INTERFACE ${CMAKE_BINARY_DIR}/external/Catch/include) target_compile_definitions(Catch INTERFACE $<$:_SILENCE_CXX17_UNCAUGHT_EXCEPTION_DEPRECATION_WARNING>) endif() + include_directories(${LIBDIR}/test) + configure_file("${LIBDIR}/test/test_options.hpp.in" "${LIBDIR}/test/test_options.hpp") add_executable(slic3r_test ${SLIC3R_TEST_SOURCES}) add_test(NAME TestSlic3r COMMAND slic3r_test) + target_link_libraries(slic3r_test PUBLIC libslic3r Catch ${LIBSLIC3R_DEPENDS}) endif() if (BUILD_EXTRUDE_TIN) target_link_libraries (extrude-tin libslic3r ${LIBSLIC3R_DEPENDS}) -endif() +endif( diff --git a/src/test/inputs/README.md b/src/test/inputs/README.md new file mode 100644 index 000000000..4faa8a7dd --- /dev/null +++ b/src/test/inputs/README.md @@ -0,0 +1,12 @@ +Directory containing test-specific input files that are not source code. + +=== + +Rules +=== +* Each folder shall be named for the test that it supports. + * `test_config` directory supports `test_config.cpp`, etc. +* If a specific test file is reused across multiple tests, it should go in the `common` directory. +* Each extra input file should be named in such a way that it is relevant to the specific feature of it. +* No files should have special characters in the name (unless those special characters are part of the test). +* No spaces should be in the file paths (again, unless testing the presence of spaces is part of the test). diff --git a/src/test/inputs/test_config/new_from_ini.ini b/src/test/inputs/test_config/new_from_ini.ini new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/libslic3r/test_config.cpp b/src/test/libslic3r/test_config.cpp index e49fcf9be..0aeb8f0f0 100644 --- a/src/test/libslic3r/test_config.cpp +++ b/src/test/libslic3r/test_config.cpp @@ -1,8 +1,12 @@ #include #include "Config.hpp" +#include + +#include using namespace Slic3r; +using namespace std::string_literals; SCENARIO("Generic config validation performs as expected.", "[!mayfail]") { GIVEN("A config generated from default options") { @@ -96,5 +100,10 @@ SCENARIO("Config accessor functions perform as expected.", "[!mayfail]") { } SCENARIO("Config ini load/save interface", "[!mayfail]") { + WHEN("new_from_ini is called") { + auto config {Slic3r::Config::new_from_config(std::string(testfile_dir) + "test_config/new_from_ini.ini"s) }; + THEN("Config object contains ini file options.") { + } + } REQUIRE(false); } diff --git a/src/test/test_options.hpp.in b/src/test/test_options.hpp.in new file mode 100644 index 000000000..8e75ecda6 --- /dev/null +++ b/src/test/test_options.hpp.in @@ -0,0 +1,6 @@ +#ifndef TEST_OPTIONS_HPP + +/// Directory path, passed in from the outside, for the path to the test inputs dir. +constexpr auto* testfile_dir {U"@TESTFILE_DIR@"}; + +#endif // TEST_OPTIONS_HPP