From 6c37955d7550bdc1c09833ffcdb21936332992bc Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik <bubnikv@gmail.com> Date: Fri, 24 Sep 2021 11:32:10 +0200 Subject: [PATCH] Moved a commented out test for DynamicPrintConfig serialization / deserialization into a living unit test. --- src/slic3r/Utils/UndoRedo.cpp | 40 --------------------------------- tests/libslic3r/test_config.cpp | 35 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 40 deletions(-) diff --git a/src/slic3r/Utils/UndoRedo.cpp b/src/slic3r/Utils/UndoRedo.cpp index 6d6753ea2..a19788ab9 100644 --- a/src/slic3r/Utils/UndoRedo.cpp +++ b/src/slic3r/Utils/UndoRedo.cpp @@ -1102,43 +1102,3 @@ bool Stack::temp_snapshot_active() const { return pimpl->temp_snapshot_active(); } // namespace UndoRedo } // namespace Slic3r - - -//FIXME we should have unit tests for testing serialization of basic types as DynamicPrintConfig. -#if 0 -#include "libslic3r/Config.hpp" -#include "libslic3r/PrintConfig.hpp" -namespace Slic3r { - bool test_dynamic_print_config_serialization() { - FullPrintConfig full_print_config; - DynamicPrintConfig cfg; - cfg.apply(full_print_config, false); - - std::string serialized; - try { - std::ostringstream ss; - cereal::BinaryOutputArchive oarchive(ss); - oarchive(cfg); - serialized = ss.str(); - } catch (std::runtime_error e) { - e.what(); - } - - DynamicPrintConfig cfg2; - try { - std::stringstream ss(serialized); - cereal::BinaryInputArchive iarchive(ss); - iarchive(cfg2); - } catch (std::runtime_error e) { - e.what(); - } - - if (cfg == cfg2) { - printf("Yes!\n"); - return true; - } - printf("No!\n"); - return false; - } -} // namespace Slic3r -#endif diff --git a/tests/libslic3r/test_config.cpp b/tests/libslic3r/test_config.cpp index 97729ac8e..213105084 100644 --- a/tests/libslic3r/test_config.cpp +++ b/tests/libslic3r/test_config.cpp @@ -3,6 +3,11 @@ #include "libslic3r/PrintConfig.hpp" #include "libslic3r/LocalesUtils.hpp" +#include <cereal/types/polymorphic.hpp> +#include <cereal/types/string.hpp> +#include <cereal/types/vector.hpp> +#include <cereal/archives/binary.hpp> + using namespace Slic3r; SCENARIO("Generic config validation performs as expected.", "[Config]") { @@ -202,3 +207,33 @@ SCENARIO("Config ini load/save interface", "[Config]") { } } } + +SCENARIO("DynamicPrintConfig serialization", "[Config]") { + WHEN("DynamicPrintConfig is serialized and deserialized") { + FullPrintConfig full_print_config; + DynamicPrintConfig cfg; + cfg.apply(full_print_config, false); + + std::string serialized; + try { + std::ostringstream ss; + cereal::BinaryOutputArchive oarchive(ss); + oarchive(cfg); + serialized = ss.str(); + } catch (std::runtime_error e) { + e.what(); + } + + THEN("Config object contains ini file options.") { + DynamicPrintConfig cfg2; + try { + std::stringstream ss(serialized); + cereal::BinaryInputArchive iarchive(ss); + iarchive(cfg2); + } catch (std::runtime_error e) { + e.what(); + } + REQUIRE(cfg == cfg2); + } + } +}