Skip to content

Commit 8149539

Browse files
some unit tests for reversedWireFromReversedEdges
1 parent a64eb0d commit 8149539

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

packages/dev/occt/lib/services/shapes/wire.test.ts

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,82 @@ describe("OCCT wire unit tests", () => {
532532
w2.delete();
533533
});
534534

535+
it("should reverse closed polygon wire and have same start point using reversedWireFromReversedEdges", async () => {
536+
// Create a closed polygon (rectangle)
537+
const points = [[0, 0, 0], [10, 0, 0], [10, 0, 5], [0, 0, 5]] as Inputs.Base.Point3[];
538+
const w = wire.createPolygonWire({ points });
539+
540+
const startPt = wire.startPointOnWire({ shape: w });
541+
const endPt = wire.endPointOnWire({ shape: w });
542+
543+
// For a closed polygon, start and end should be the same
544+
expect(startPt[0]).toBeCloseTo(endPt[0], 5);
545+
expect(startPt[1]).toBeCloseTo(endPt[1], 5);
546+
expect(startPt[2]).toBeCloseTo(endPt[2], 5);
547+
548+
// Use reversedWireFromReversedEdges for closed wires to maintain start point
549+
const w2 = wire.reversedWireFromReversedEdges({ shape: w });
550+
551+
const startPtRev = wire.startPointOnWire({ shape: w2 });
552+
553+
// For a reversed closed polygon using reversedWireFromReversedEdges,
554+
// the start point should be the same as the original
555+
// User expectation: forward, left, back, right becomes left, forward, right, back
556+
// Same start/end point but opposite traversal direction
557+
expect(startPtRev[0]).toBeCloseTo(startPt[0], 5);
558+
expect(startPtRev[1]).toBeCloseTo(startPt[1], 5);
559+
expect(startPtRev[2]).toBeCloseTo(startPt[2], 5);
560+
561+
w.delete();
562+
w2.delete();
563+
});
564+
565+
it("should reverse closed polygon wire edges and have correct edge directions using reversedWireFromReversedEdges", async () => {
566+
// Create a closed polygon (rectangle)
567+
const points = [[0, 0, 0], [10, 0, 0], [10, 0, 5], [0, 0, 5]] as Inputs.Base.Point3[];
568+
const w = wire.createPolygonWire({ points });
569+
570+
const allEdges = edge.getEdgesAlongWire({ shape: w });
571+
const firstEdgeStart = edge.startPointOnEdge({ shape: allEdges[0] });
572+
573+
// Use reversedWireFromReversedEdges for closed wires
574+
const w2 = wire.reversedWireFromReversedEdges({ shape: w });
575+
576+
const allEdgesRev = edge.getEdgesAlongWire({ shape: w2 });
577+
const firstEdgeRevStart = edge.startPointOnEdge({ shape: allEdgesRev[0] });
578+
579+
// For a reversed wire using reversedWireFromReversedEdges,
580+
// the first edge's start should be the original first edge's start
581+
expect(firstEdgeRevStart[0]).toBeCloseTo(firstEdgeStart[0], 5);
582+
expect(firstEdgeRevStart[1]).toBeCloseTo(firstEdgeStart[1], 5);
583+
expect(firstEdgeRevStart[2]).toBeCloseTo(firstEdgeStart[2], 5);
584+
585+
allEdges.forEach(e => e.delete());
586+
allEdgesRev.forEach(e => e.delete());
587+
w.delete();
588+
w2.delete();
589+
});
590+
591+
it("should reverse closed rectangle wire and maintain start point using reversedWireFromReversedEdges", async () => {
592+
// Create a closed rectangle wire
593+
const w = wire.createRectangleWire({ width: 10, length: 5, center: [5, 0, 2.5], direction: [0, 1, 0] });
594+
595+
const startPt = wire.startPointOnWire({ shape: w });
596+
597+
// Use reversedWireFromReversedEdges for closed wires
598+
const w2 = wire.reversedWireFromReversedEdges({ shape: w });
599+
600+
const startPtRev = wire.startPointOnWire({ shape: w2 });
601+
602+
// The reversed wire should have the same start point as the original
603+
expect(startPtRev[0]).toBeCloseTo(startPt[0], 5);
604+
expect(startPtRev[1]).toBeCloseTo(startPt[1], 5);
605+
expect(startPtRev[2]).toBeCloseTo(startPt[2], 5);
606+
607+
w.delete();
608+
w2.delete();
609+
});
610+
535611
it("should get wire of a box at specific index", async () => {
536612
const b = occHelper.entitiesService.bRepPrimAPIMakeBox(3, 4, 5, [0, 0, 0]);
537613
const w = wire.getWire({ shape: b, index: 2 });

0 commit comments

Comments
 (0)