Extend sla archive tests with read-back
This commit is contained in:
parent
0025a65611
commit
784105f5ad
5 changed files with 112 additions and 52 deletions
|
@ -4,7 +4,7 @@ add_executable(${_TEST_NAME}_tests ${_TEST_NAME}_tests_main.cpp
|
|||
sla_test_utils.hpp sla_test_utils.cpp
|
||||
sla_supptgen_tests.cpp
|
||||
sla_raycast_tests.cpp
|
||||
sla_archive_export_tests.cpp)
|
||||
sla_archive_readwrite_tests.cpp)
|
||||
target_link_libraries(${_TEST_NAME}_tests test_common libslic3r)
|
||||
set_property(TARGET ${_TEST_NAME}_tests PROPERTY FOLDER "tests")
|
||||
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
#include <catch2/catch.hpp>
|
||||
#include <test_utils.hpp>
|
||||
|
||||
#include "libslic3r/SLAPrint.hpp"
|
||||
#include "libslic3r/Format/SLAArchiveWriter.hpp"
|
||||
|
||||
#include <boost/filesystem.hpp>
|
||||
|
||||
using namespace Slic3r;
|
||||
|
||||
TEST_CASE("Archive export test", "[sla_archives]") {
|
||||
constexpr const char *PNAME = "20mm_cube";
|
||||
|
||||
for (auto &archname : SLAArchiveWriter::registered_archives()) {
|
||||
INFO(std::string("Testing archive type: ") + archname);
|
||||
SLAPrint print;
|
||||
SLAFullPrintConfig fullcfg;
|
||||
|
||||
auto m = Model::read_from_file(TEST_DATA_DIR PATH_SEPARATOR + std::string(PNAME) + ".obj", nullptr);
|
||||
|
||||
fullcfg.set("sla_archive_format", archname);
|
||||
fullcfg.set("supports_enable", false);
|
||||
fullcfg.set("pad_enable", false);
|
||||
|
||||
DynamicPrintConfig cfg;
|
||||
cfg.apply(fullcfg);
|
||||
|
||||
print.set_status_callback([](const PrintBase::SlicingStatus&) {});
|
||||
print.apply(m, cfg);
|
||||
print.process();
|
||||
|
||||
ThumbnailsList thumbnails;
|
||||
auto outputfname = std::string("output.") + SLAArchiveWriter::get_extension(archname);
|
||||
|
||||
print.export_print(outputfname, thumbnails, PNAME);
|
||||
|
||||
// Not much can be checked about the archives...
|
||||
REQUIRE(boost::filesystem::exists(outputfname));
|
||||
}
|
||||
}
|
68
tests/sla_print/sla_archive_readwrite_tests.cpp
Normal file
68
tests/sla_print/sla_archive_readwrite_tests.cpp
Normal file
|
@ -0,0 +1,68 @@
|
|||
#include <catch2/catch.hpp>
|
||||
#include <test_utils.hpp>
|
||||
|
||||
#include "libslic3r/SLAPrint.hpp"
|
||||
#include "libslic3r/TriangleMesh.hpp"
|
||||
#include "libslic3r/Format/SLAArchiveWriter.hpp"
|
||||
#include "libslic3r/Format/SLAArchiveReader.hpp"
|
||||
|
||||
#include <boost/filesystem.hpp>
|
||||
|
||||
using namespace Slic3r;
|
||||
|
||||
TEST_CASE("Archive export test", "[sla_archives]") {
|
||||
constexpr const char *PNAME = "extruder_idler";
|
||||
|
||||
for (auto &archname : SLAArchiveWriter::registered_archives()) {
|
||||
INFO(std::string("Testing archive type: ") + archname + " -- writing...");
|
||||
SLAPrint print;
|
||||
SLAFullPrintConfig fullcfg;
|
||||
|
||||
auto m = Model::read_from_file(TEST_DATA_DIR PATH_SEPARATOR + std::string(PNAME) + ".obj", nullptr);
|
||||
|
||||
fullcfg.printer_technology.setInt(ptSLA); // FIXME this should be ensured
|
||||
fullcfg.set("sla_archive_format", archname);
|
||||
fullcfg.set("supports_enable", false);
|
||||
fullcfg.set("pad_enable", false);
|
||||
|
||||
DynamicPrintConfig cfg;
|
||||
cfg.apply(fullcfg);
|
||||
|
||||
print.set_status_callback([](const PrintBase::SlicingStatus&) {});
|
||||
print.apply(m, cfg);
|
||||
print.process();
|
||||
|
||||
ThumbnailsList thumbnails;
|
||||
auto outputfname = std::string("output.") + SLAArchiveWriter::get_extension(archname);
|
||||
|
||||
print.export_print(outputfname, thumbnails, PNAME);
|
||||
|
||||
// Not much can be checked about the archives...
|
||||
REQUIRE(boost::filesystem::exists(outputfname));
|
||||
|
||||
double vol_written = m.mesh().volume();
|
||||
|
||||
auto readable_formats = SLAArchiveReader::registered_archives();
|
||||
if (std::any_of(readable_formats.begin(), readable_formats.end(),
|
||||
[&archname](const std::string &a) { return a == archname; })) {
|
||||
|
||||
INFO(std::string("Testing archive type: ") + archname + " -- reading back...");
|
||||
|
||||
indexed_triangle_set its;
|
||||
DynamicPrintConfig cfg;
|
||||
|
||||
try {
|
||||
import_sla_archive(outputfname, its, cfg);
|
||||
} catch (...) {
|
||||
REQUIRE(false);
|
||||
}
|
||||
|
||||
REQUIRE(!cfg.empty());
|
||||
REQUIRE(!its.empty());
|
||||
|
||||
double vol_read = its_volume(its);
|
||||
double rel_err = std::abs(vol_written - vol_read) / vol_written;
|
||||
REQUIRE(rel_err < 0.1);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue