mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 12:41:20 -06:00 
			
		
		
		
	
		
			
				
	
	
		
			57 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #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)));
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 | 
