Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 5 additions & 7 deletions crates/operations/src/boolean/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1659,8 +1659,9 @@ fn compound_cut_matches_sequential_2x2_grid() {
#[test]
#[ignore = "flaky — multi-tool compound/sequential cuts through the mesh-boolean \
fallback are non-deterministic across processes (seed-dependent vertex \
welding) and under-cut faceted re-input; the `< box*0.99` oracle passes \
on garbage. Tracked in #747; revisit under the GFA rewrite."]
welding); with the oracle's box volume corrected to the actual \
make_box(10,10,2) = 200, both paths intermittently remove little or \
nothing. Tracked in #747; revisit under the GFA rewrite."]
fn compound_cut_matches_sequential_3x3_grid() {
use brepkit_math::mat::Mat4;

Expand Down Expand Up @@ -1704,7 +1705,7 @@ fn compound_cut_matches_sequential_3x3_grid() {
// Both paths use mesh boolean fallback for cylinder-box cuts, which
// can produce different volumes under different execution conditions.
// Assert each path individually: volume must be less than the uncut box.
let box_vol = 15.0 * 15.0 * 2.0;
let box_vol = 10.0 * 10.0 * 2.0;
assert!(
compound_vol < box_vol * 0.99,
"compound_cut should reduce volume: {compound_vol:.1} vs box {box_vol:.1}"
Expand Down Expand Up @@ -1779,9 +1780,8 @@ fn compound_cut_matches_sequential_4x4_grid() {

/// Test compound_cut with a shelled target + many box cutters.
/// This simulates the gridfinity honeycomb scenario where the target
/// has cylindrical fillets (rounded corners) and the tools are hex prisms.
/// has cylindrical fillets (rounded corners) and the tools are boxes.
#[test]
#[ignore = "flaky — vertex merge non-determinism for complex compound operations"]
fn compound_cut_shelled_target_many_tools() {
use brepkit_math::mat::Mat4;

Expand Down Expand Up @@ -2541,7 +2541,6 @@ fn test_boolean_concave_face_chord_clip() {
// does not break the common convex-face case. A large box minus a half-
// overlapping smaller box: expected volume = 8.0 - 0.5 = 7.5.
#[test]
#[ignore = "GFA pipeline limitation — old boolean pipeline removed"]
fn test_boolean_convex_face_chord_clip_regression() {
let mut topo = Topology::new();

Expand Down Expand Up @@ -2628,7 +2627,6 @@ fn boolean_fuse_overlapping_boxes_positive_volume() {
/// Sequential compound cut with many tools should produce a valid solid
/// with bounded face count (unify_faces prevents explosion).
#[test]
#[ignore = "flaky — compound boolean non-determinism can produce zero-volume result on CI"]
fn compound_cut_sequential_reduces_volume() {
let mut topo = Topology::new();
let target = crate::primitives::make_box(&mut topo, 10.0, 10.0, 10.0).unwrap();
Expand Down
2 changes: 0 additions & 2 deletions crates/operations/tests/boolean_edge_cases.rs
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,6 @@ fn test_sequential_cuts_volume() {
}

#[test]
#[ignore = "vertex drift 6.7% after 10 fuse+cut cycles on disjoint addons (threshold 5%)"]
fn test_sequential_boolean_vertex_drift() {
// Perform 10 fuse+cut cycles. Volume should return to original each time.
let mut topo = Topology::new();
Expand Down Expand Up @@ -303,7 +302,6 @@ fn test_sequential_boolean_vertex_drift() {
}

#[test]
#[ignore = "GFA pipeline limitation"]
fn test_alternating_union_cut() {
// A|B - C pattern.
// A: (0-2, 0-1, 0-1), B: (1-3, 0-1, 0-1), C: (1-2, 0-1, 0-1).
Expand Down
1 change: 0 additions & 1 deletion crates/operations/tests/boolean_invariants.rs
Original file line number Diff line number Diff line change
Expand Up @@ -619,7 +619,6 @@ fn fuse_thin_shell_with_containing_solid_preserves_larger_volume() {
// -- Cut cylinder from box ------------------------------------------------

#[test]
#[ignore = "GFA pipeline limitation"]
fn cut_cylinder_from_box_volume() {
// Cylinder centered in box, protruding above and below.
let mut topo = Topology::new();
Expand Down
2 changes: 0 additions & 2 deletions crates/operations/tests/boolean_stress.rs
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,6 @@ fn near_miss_cut_barely_touching() {
// ===========================================================================

#[test]
#[ignore = "GFA pipeline limitation — old boolean pipeline removed"]
fn thin_wall_cut() {
// Cut a thin slice from a box — result has very thin geometry.
let mut topo = Topology::new();
Expand Down Expand Up @@ -538,7 +537,6 @@ fn small_overlap_1_percent() {
// ===========================================================================

#[test]
#[ignore = "GFA pipeline limitation — old boolean pipeline removed"]
fn fuse_asymmetric_boxes() {
let mut topo = Topology::new();
let a = box_at(&mut topo, 0.0, 0.0, 0.0, 1.0, 2.0, 3.0);
Expand Down
8 changes: 1 addition & 7 deletions crates/operations/tests/coincident_proptest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,8 @@ proptest! {
}

// Rotation invariance: rotating both boxes of a face-stack by the
// same Z rotation should preserve volume. The boolean exhibits up
// to ~15% volume drift at certain non-axis-aligned angles, which
// is a known gap (see ignored cylinder/cone/torus SD tests for the
// related GFA-integration weakness on non-axis-aligned shapes).
// same Z rotation should preserve volume.
#[test]
#[ignore = "Gap: face-stack fuse exhibits up to ~15% volume drift at certain \
Z-rotation angles (e.g. 3.98 rad). Likely related to GFA face-splitting \
producing an extra internal face at off-axis rotations."]
fn prop_face_stack_z_rotation_invariant(angle in 0.0f64..std::f64::consts::TAU) {
let mut topo = Topology::default();
let a = make_box(&mut topo, 1.0, 1.0, 1.0).unwrap();
Expand Down
Loading