Implement support for loading custom plugin binaries

This commit is contained in:
Maciej Wilczyński
2025-12-14 15:27:56 +01:00
parent a4d4bfff27
commit 0df673b0d3
11 changed files with 310 additions and 23 deletions

View File

@@ -5,6 +5,7 @@ add_executable(${_TEST_NAME}_tests
test_3mf.cpp
test_aabbindirect.cpp
test_appconfig.cpp
test_bambu_networking.cpp
test_clipper_offset.cpp
test_clipper_utils.cpp
test_config.cpp
@@ -30,6 +31,7 @@ if (TARGET OpenVDB::openvdb)
endif()
target_link_libraries(${_TEST_NAME}_tests test_common libslic3r Catch2::Catch2WithMain)
target_include_directories(${_TEST_NAME}_tests PRIVATE ${CMAKE_SOURCE_DIR}/src)
set_property(TARGET ${_TEST_NAME}_tests PROPERTY FOLDER "tests")
if (WIN32)

View File

@@ -0,0 +1,98 @@
#include <catch2/catch_all.hpp>
#include "slic3r/Utils/bambu_networking.hpp"
using namespace BBL;
TEST_CASE("extract_base_version", "[BambuNetworking]") {
SECTION("version without suffix returns unchanged") {
REQUIRE(extract_base_version("02.03.00.62") == "02.03.00.62");
REQUIRE(extract_base_version("01.00.00.00") == "01.00.00.00");
}
SECTION("version with suffix returns base only") {
REQUIRE(extract_base_version("02.03.00.62-mod") == "02.03.00.62");
REQUIRE(extract_base_version("02.03.00.62-patched") == "02.03.00.62");
REQUIRE(extract_base_version("02.03.00.62-test-build") == "02.03.00.62");
}
SECTION("empty string returns empty") {
REQUIRE(extract_base_version("") == "");
}
SECTION("suffix only returns empty") {
REQUIRE(extract_base_version("-mod") == "");
}
}
TEST_CASE("extract_suffix", "[BambuNetworking]") {
SECTION("version without suffix returns empty") {
REQUIRE(extract_suffix("02.03.00.62") == "");
REQUIRE(extract_suffix("01.00.00.00") == "");
}
SECTION("version with suffix returns suffix without dash") {
REQUIRE(extract_suffix("02.03.00.62-mod") == "mod");
REQUIRE(extract_suffix("02.03.00.62-patched") == "patched");
}
SECTION("version with multiple dashes returns everything after first dash") {
REQUIRE(extract_suffix("02.03.00.62-test-build") == "test-build");
}
SECTION("empty string returns empty") {
REQUIRE(extract_suffix("") == "");
}
SECTION("suffix only returns suffix without leading dash") {
REQUIRE(extract_suffix("-mod") == "mod");
}
}
TEST_CASE("NetworkLibraryVersionInfo::from_static", "[BambuNetworking]") {
SECTION("converts static version info correctly") {
NetworkLibraryVersion static_ver{"02.03.00.62", "02.03.00.62", nullptr, true, nullptr};
auto info = NetworkLibraryVersionInfo::from_static(static_ver);
REQUIRE(info.version == "02.03.00.62");
REQUIRE(info.base_version == "02.03.00.62");
REQUIRE(info.suffix == "");
REQUIRE(info.display_name == "02.03.00.62");
REQUIRE(info.url_override == "");
REQUIRE(info.is_latest == true);
REQUIRE(info.warning == "");
REQUIRE(info.is_discovered == false);
}
SECTION("handles version with warning") {
NetworkLibraryVersion static_ver{"02.00.02.50", "02.00.02.50", nullptr, false, "This is a warning"};
auto info = NetworkLibraryVersionInfo::from_static(static_ver);
REQUIRE(info.version == "02.00.02.50");
REQUIRE(info.is_latest == false);
REQUIRE(info.warning == "This is a warning");
REQUIRE(info.is_discovered == false);
}
SECTION("handles version with url override") {
NetworkLibraryVersion static_ver{"02.01.01.52", "02.01.01.52", "https://custom.url/plugin.zip", false, nullptr};
auto info = NetworkLibraryVersionInfo::from_static(static_ver);
REQUIRE(info.url_override == "https://custom.url/plugin.zip");
}
}
TEST_CASE("NetworkLibraryVersionInfo::from_discovered", "[BambuNetworking]") {
SECTION("creates discovered version info correctly") {
auto info = NetworkLibraryVersionInfo::from_discovered("02.03.00.62-mod", "02.03.00.62", "mod");
REQUIRE(info.version == "02.03.00.62-mod");
REQUIRE(info.base_version == "02.03.00.62");
REQUIRE(info.suffix == "mod");
REQUIRE(info.display_name == "02.03.00.62-mod");
REQUIRE(info.url_override == "");
REQUIRE(info.is_latest == false);
REQUIRE(info.warning == "");
REQUIRE(info.is_discovered == true);
}
}