123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #include <catch2/catch.hpp>
- #include "libslic3r/Model.hpp"
- #include "libslic3r/Format/STL.hpp"
- using namespace Slic3r;
- static inline std::string stl_path(const char* path)
- {
- return std::string(TEST_DATA_DIR) + "/test_stl/" + path;
- }
- SCENARIO("Reading an STL file", "[stl]") {
- GIVEN("umlauts in the path of a binary STL file, Czech characters in the file name") {
- WHEN("STL file is read") {
- Slic3r::Model model;
- THEN("load should succeed") {
- REQUIRE(Slic3r::load_stl(stl_path("Geräte/20mmbox-čřšřěá.stl").c_str(), &model));
- REQUIRE(is_approx(model.objects.front()->volumes.front()->mesh().size(), Vec3d(20, 20, 20)));
- }
- }
- }
- GIVEN("in ASCII format") {
- WHEN("line endings LF") {
- Slic3r::Model model;
- THEN("load should succeed") {
- REQUIRE(Slic3r::load_stl(stl_path("ASCII/20mmbox-LF.stl").c_str(), &model));
- REQUIRE(is_approx(model.objects.front()->volumes.front()->mesh().size(), Vec3d(20, 20, 20)));
- }
- }
- WHEN("line endings CRLF") {
- Slic3r::Model model;
- THEN("load should succeed") {
- REQUIRE(Slic3r::load_stl(stl_path("ASCII/20mmbox-CRLF.stl").c_str(), &model));
- REQUIRE(is_approx(model.objects.front()->volumes.front()->mesh().size(), Vec3d(20, 20, 20)));
- }
- }
- #if 0
- // ASCII STLs ending with just carriage returns are not supported. These were used by the old Macs, while the Unix based MacOS uses LFs as any other Unix.
- WHEN("line endings CR") {
- Slic3r::Model model;
- THEN("load should succeed") {
- REQUIRE(Slic3r::load_stl(stl_path("ASCII/20mmbox-CR.stl").c_str(), &model));
- REQUIRE(is_approx(model.objects.front()->volumes.front()->mesh().size(), Vec3d(20, 20, 20)));
- }
- }
- #endif
- WHEN("nonstandard STL file (text after ending tags, invalid normals, for example infinities)") {
- Slic3r::Model model;
- THEN("load should succeed") {
- REQUIRE(Slic3r::load_stl(stl_path("ASCII/20mmbox-nonstandard.stl").c_str(), &model));
- REQUIRE(is_approx(model.objects.front()->volumes.front()->mesh().size(), Vec3d(20, 20, 20)));
- }
- }
- }
- }
|