Skip to content

Commit 073af57

Browse files
committed
tesrs pass
1 parent 683a392 commit 073af57

2 files changed

Lines changed: 16 additions & 21 deletions

File tree

src/core/Compressor.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,8 +185,12 @@ std::vector<Element> Compressor::compressSurf_(
185185
utils::GridTools::toCell(coords[surfs[s].vertices[2]])(d1);
186186
ext.second[1] =
187187
utils::GridTools::toCell(coords[surfs[s].vertices[2]])(d2);
188-
for (CellDir i = ext.first[0]; i < ext.second[0]; i++) {
189-
for (CellDir j = ext.first[1]; j < ext.second[1]; j++) {
188+
CellDir i0 = std::min(ext.first[0], ext.second[0]);
189+
CellDir i1 = std::max(ext.first[0], ext.second[0]);
190+
CellDir j0 = std::min(ext.first[1], ext.second[1]);
191+
CellDir j1 = std::max(ext.first[1], ext.second[1]);
192+
for (CellDir i = i0; i < i1; i++) {
193+
for (CellDir j = j0; j < j1; j++) {
190194
PlaneSurfel surfel = {{i, j}};
191195
surfels.insert(surfel);
192196
}

test/core/CompressorTest.cpp

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ TEST_F(CompressorTest, DoesNotCompressDisconnectedQuads) {
9393

9494
TEST_F(CompressorTest, CompressWithHoleCreatesInnerContour) {
9595
// Create 8 quads forming a ring with a hole in the middle
96-
// The ring decomposes into 3 rectangles (left col, right col, center cols)
96+
// The ring decomposes into 4 rectangles (left col, right col, top center, bottom center)
9797

9898
Mesh mesh;
9999
mesh.grid = grid_;
@@ -124,12 +124,13 @@ TEST_F(CompressorTest, CompressWithHoleCreatesInnerContour) {
124124

125125
auto finalCount = countMeshElementsIf(mesh, isQuad);
126126

127-
// Optimal decomposition: 3 rectangles
127+
// Optimal decomposition: 4 rectangles
128128
// - Left column (quads 1,3,5): cells x=0, y=0-3
129129
// - Right column (quads 2,4,6): cells x=2-3, y=0-3
130-
// - Center (quads 7,8): cells x=1-2, y=0 and y=2-3
131-
EXPECT_EQ(finalCount, 3u);
132-
EXPECT_EQ(merged, 5u); // 8 - 3 = 5 surfaces merged
130+
// - Top center (quad 8): cell x=1-2, y=2-3
131+
// - Bottom center (quad 7): cell x=1-2, y=0-1
132+
EXPECT_EQ(finalCount, 4u);
133+
EXPECT_EQ(merged, 4u); // 8 - 4 = 4 surfaces merged
133134
}
134135

135136
TEST_F(CompressorTest, DoesNotCompressQuadsWithDifferentNormals) {
@@ -170,18 +171,8 @@ TEST_F(CompressorTest, CompressAndSplit2x2GridRoundTrip) {
170171
EXPECT_EQ(merged, 3u);
171172
EXPECT_EQ(countMeshElementsIf(mesh, isQuad), 1u);
172173

173-
// Debug: print compressed surface
174-
std::cerr << "Compressed surface vertices: ";
175-
for (auto vid : mesh.groups[0].elements[0].vertices) {
176-
std::cerr << "(" << mesh.coordinates[vid](0) << ","
177-
<< mesh.coordinates[vid](1) << ","
178-
<< mesh.coordinates[vid](2) << ") ";
179-
}
180-
std::cerr << std::endl;
181-
182174
// Split: 1 surface -> 4 quads
183175
auto splitCount = core::Splitter::splitSurfaces(mesh);
184-
std::cout << "Split count: " << splitCount << std::endl;
185176
EXPECT_EQ(splitCount, 4u);
186177
EXPECT_EQ(countMeshElementsIf(mesh, isQuad), 4u);
187178
}
@@ -204,13 +195,13 @@ TEST_F(CompressorTest, CompressAndSplitRingRoundTrip) {
204195

205196
EXPECT_EQ(countMeshElementsIf(mesh, isQuad), 8u);
206197

207-
// Compress: 8 quads -> 3 surfaces
198+
// Compress: 8 quads -> 4 surfaces (left col, right col, top center, bottom center)
208199
auto merged = core::Compressor::compressSurfaces(mesh);
209-
EXPECT_EQ(merged, 5u);
200+
EXPECT_EQ(merged, 4u); // 8 - 4 = 4 surfaces merged
210201
auto compressedCount = countMeshElementsIf(mesh, isQuad);
211-
EXPECT_EQ(compressedCount, 3u);
202+
EXPECT_EQ(compressedCount, 4u);
212203

213-
// Split: 3 surfaces -> 8 quads
204+
// Split: 4 surfaces -> 8 quads
214205
auto splitCount = core::Splitter::splitSurfaces(mesh);
215206
EXPECT_EQ(splitCount, 8u);
216207
EXPECT_EQ(countMeshElementsIf(mesh, isQuad), 8u);

0 commit comments

Comments
 (0)