#include #include #include "libslic3r/AppConfig.hpp" using namespace Slic3r; TEST_CASE("AppConfig network version helpers", "[AppConfig]") { AppConfig config; SECTION("skipped versions starts empty") { auto skipped = config.get_skipped_network_versions(); REQUIRE(skipped.empty()); } SECTION("add and check skipped version") { config.add_skipped_network_version("02.01.01.52"); REQUIRE(config.is_network_version_skipped("02.01.01.52")); REQUIRE_FALSE(config.is_network_version_skipped("02.03.00.62")); } SECTION("multiple skipped versions") { config.add_skipped_network_version("02.01.01.52"); config.add_skipped_network_version("02.00.02.50"); auto skipped = config.get_skipped_network_versions(); REQUIRE(skipped.size() == 2); REQUIRE(config.is_network_version_skipped("02.01.01.52")); REQUIRE(config.is_network_version_skipped("02.00.02.50")); } SECTION("clear skipped versions") { config.add_skipped_network_version("02.01.01.52"); config.clear_skipped_network_versions(); REQUIRE_FALSE(config.is_network_version_skipped("02.01.01.52")); } SECTION("duplicate add is idempotent") { config.add_skipped_network_version("02.01.01.52"); config.add_skipped_network_version("02.01.01.52"); auto skipped = config.get_skipped_network_versions(); REQUIRE(skipped.size() == 1); REQUIRE(config.is_network_version_skipped("02.01.01.52")); } } TEST_CASE("Remembered checkbox settings retain both selections", "[AppConfig][Regression]") { AppConfig config; const bool checked = GENERATE(false, true); config.set("recent", "checkbox", checked ? "1" : "0"); CHECK(config.get("recent", "checkbox") == (checked ? "1" : "0")); } TEST_CASE("Boolean setters retain their established encoding", "[AppConfig][Regression]") { AppConfig config; const bool value = GENERATE(false, true); config.set("recent", "flag", value); CHECK(config.get("recent", "flag") == (value ? "true" : "false")); } TEST_CASE("Boolean reads use only the requested section", "[AppConfig][Regression]") { AppConfig config; const bool value = GENERATE(false, true); config.set("recent", "flag", std::string(value ? "1" : "0")); config.set("app", "flag", std::string(value ? "0" : "1")); CHECK(config.get_bool("recent", "flag") == value); } TEST_CASE("AppConfig Speed Dial recent count defaults, clamps and parses", "[AppConfig]") { AppConfig config; SECTION("unset falls back to the default") { REQUIRE(config.get_speed_dial_recent_count() == SPEED_DIAL_RECENT_COUNT_DEFAULT); } SECTION("zero disables recents") { config.set(SETTING_SPEED_DIAL_RECENT_COUNT, "0"); REQUIRE(config.get_speed_dial_recent_count() == 0); } SECTION("a value in range is returned as-is") { config.set(SETTING_SPEED_DIAL_RECENT_COUNT, "7"); REQUIRE(config.get_speed_dial_recent_count() == 7); } SECTION("the maximum is kept") { config.set(SETTING_SPEED_DIAL_RECENT_COUNT, "10"); REQUIRE(config.get_speed_dial_recent_count() == SPEED_DIAL_RECENT_COUNT_MAX); } SECTION("values above the maximum clamp down") { config.set(SETTING_SPEED_DIAL_RECENT_COUNT, "42"); REQUIRE(config.get_speed_dial_recent_count() == SPEED_DIAL_RECENT_COUNT_MAX); } SECTION("negative values clamp up to 0") { config.set(SETTING_SPEED_DIAL_RECENT_COUNT, "-3"); REQUIRE(config.get_speed_dial_recent_count() == 0); } SECTION("garbage falls back to the default") { config.set(SETTING_SPEED_DIAL_RECENT_COUNT, "abc"); REQUIRE(config.get_speed_dial_recent_count() == SPEED_DIAL_RECENT_COUNT_DEFAULT); } }