mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-05 14:51:06 +00:00
Covers src/slic3r/Utils, src/slic3r/plugin, src/slic3r/Config, src/libvgcode, src/dev-utils, src/OrcaSlicer.cpp and tests/, the directories left after src/slic3r/GUI and src/libslic3r. Generated with clang-tidy misc-include-cleaner. libvgcode's own headers are included by relative path as in the rest of that library, and Catch2 and pybind11 with angle brackets as elsewhere in the repo.
55 lines
1.6 KiB
C++
55 lines
1.6 KiB
C++
#include <catch2/catch_all.hpp>
|
|
#include "libnest2d/libnest2d.hpp"
|
|
#include <vector>
|
|
#include <cstddef>
|
|
#include "libnest2d/nester.hpp"
|
|
|
|
#include <catch2/catch_test_macros.hpp>
|
|
#include "libnest2d_test_utils.hpp"
|
|
|
|
using namespace libnest2d;
|
|
|
|
// Basic behaviour of the Item type and the high-level nest() entry point:
|
|
// items copy independently, and nest() leaves degenerate or oversized items
|
|
// untouched.
|
|
|
|
TEST_CASE("Item construction and copy", "[Nesting]") {
|
|
Item sh = { {0, 0}, {1, 0}, {1, 1}, {0, 1} };
|
|
REQUIRE(sh.vertexCount() == 4u);
|
|
|
|
Item sh2({ {0, 0}, {1, 0}, {1, 1}, {0, 1} });
|
|
REQUIRE(sh2.vertexCount() == 4u);
|
|
|
|
Item sh3 = sh2; // copy
|
|
REQUIRE(sh3.vertexCount() == 4u);
|
|
|
|
sh2 = {}; // clearing the original leaves the copy intact
|
|
REQUIRE(sh2.vertexCount() == 0u);
|
|
REQUIRE(sh3.vertexCount() == 4u);
|
|
}
|
|
|
|
TEST_CASE("nest() leaves an empty or zero-area item untouched", "[Nesting]") {
|
|
auto bin = Box(250000000, 210000000);
|
|
|
|
std::vector<Item> items;
|
|
items.emplace_back(Item{}); // empty item
|
|
items.emplace_back(Item{ {0, 200} }); // zero-area item
|
|
|
|
size_t bins = nest(items, bin);
|
|
|
|
REQUIRE(bins == 0u);
|
|
for (const auto &itm : items) REQUIRE(itm.binId() == BIN_ID_UNSET);
|
|
}
|
|
|
|
TEST_CASE("nest() leaves an item larger than the bin untouched", "[Nesting]") {
|
|
auto bin = Box(250000000, 210000000);
|
|
|
|
std::vector<Item> items;
|
|
items.emplace_back(RectangleItem{250000001, 210000001}); // larger than the bin
|
|
|
|
size_t bins = nest(items, bin);
|
|
|
|
REQUIRE(bins == 0u);
|
|
REQUIRE(items.front().binId() == BIN_ID_UNSET);
|
|
}
|