From 64b93b72b45c4b00ebbcd8667a5fe9cee58545b2 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Tue, 7 May 2024 14:02:44 +0200 Subject: [PATCH 1/5] Use shared surfaces in reference tests This unlocks a fix, and otherwise makes no difference. --- crates/fj-core/src/validate/solid.rs | 44 ++++++++++------------------ 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/crates/fj-core/src/validate/solid.rs b/crates/fj-core/src/validate/solid.rs index 1f2a8a75c..0326c96a3 100644 --- a/crates/fj-core/src/validate/solid.rs +++ b/crates/fj-core/src/validate/solid.rs @@ -253,6 +253,12 @@ mod tests { fn should_find_region_multiple_references() -> anyhow::Result<()> { let mut core = Core::new(); + let surface = Surface::from_uv( + GlobalPath::circle_from_radius(1.), + [0., 0., 1.], + &mut core, + ); + let shared_region = Region::new( Cycle::new(vec![HalfEdge::circle( [0., 0.], @@ -266,24 +272,8 @@ mod tests { .insert(&mut core); let invalid_solid = Solid::new(vec![Shell::new(vec![ - Face::new( - Surface::from_uv( - GlobalPath::circle_from_radius(1.), - [0., 1., 1.], - &mut core, - ), - shared_region.clone(), - ) - .insert(&mut core), - Face::new( - Surface::from_uv( - GlobalPath::circle_from_radius(1.), - [0., 0., 1.], - &mut core, - ), - shared_region.clone(), - ) - .insert(&mut core), + Face::new(surface.clone(), shared_region.clone()).insert(&mut core), + Face::new(surface, shared_region.clone()).insert(&mut core), ]) .insert(&mut core)]) .insert(&mut core); @@ -309,6 +299,12 @@ mod tests { fn should_find_cycle_multiple_references() -> anyhow::Result<()> { let mut core = Core::new(); + let surface = Surface::from_uv( + GlobalPath::circle_from_radius(1.), + [0., 0., 1.], + &mut core, + ); + let shared_cycle = Cycle::new(vec![HalfEdge::circle( [0., 0.], 1., @@ -319,20 +315,12 @@ mod tests { let invalid_solid = Solid::new(vec![Shell::new(vec![ Face::new( - Surface::from_uv( - GlobalPath::circle_from_radius(1.), - [0., 1., 1.], - &mut core, - ), + surface.clone(), Region::new(shared_cycle.clone(), vec![]).insert(&mut core), ) .insert(&mut core), Face::new( - Surface::from_uv( - GlobalPath::circle_from_radius(1.), - [0., 0., 1.], - &mut core, - ), + surface, Region::new(shared_cycle, vec![]).insert(&mut core), ) .insert(&mut core), From a08b78d1fe7e1a402a6555bd622f3a19821a62b0 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Tue, 7 May 2024 14:09:01 +0200 Subject: [PATCH 2/5] Refactor to prepare for follow-on change --- crates/fj-core/src/validate/solid.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/crates/fj-core/src/validate/solid.rs b/crates/fj-core/src/validate/solid.rs index 0326c96a3..cda926989 100644 --- a/crates/fj-core/src/validate/solid.rs +++ b/crates/fj-core/src/validate/solid.rs @@ -349,6 +349,12 @@ mod tests { fn should_find_half_edge_multiple_references() -> anyhow::Result<()> { let mut core = Core::new(); + let surface = Surface::from_uv( + GlobalPath::circle_from_radius(1.), + [0., 0., 1.], + &mut core, + ); + let shared_edge = HalfEdge::circle( [0., 0.], 1., @@ -357,11 +363,7 @@ mod tests { ); let invalid_solid = Solid::new(vec![Shell::new(vec![Face::new( - Surface::from_uv( - GlobalPath::circle_from_radius(1.), - [0., 0., 1.], - &mut core, - ), + surface, Region::new( Cycle::new(vec![shared_edge.clone()]).insert(&mut core), vec![Cycle::new(vec![shared_edge.clone()]).insert(&mut core)], From 3b10f2281bb08786725cc1a1e9681f7c23b109b3 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Tue, 7 May 2024 14:03:34 +0200 Subject: [PATCH 3/5] Fix use of wrong surfaces in reference tests --- crates/fj-core/src/validate/solid.rs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/crates/fj-core/src/validate/solid.rs b/crates/fj-core/src/validate/solid.rs index cda926989..0275f3fcf 100644 --- a/crates/fj-core/src/validate/solid.rs +++ b/crates/fj-core/src/validate/solid.rs @@ -263,7 +263,7 @@ mod tests { Cycle::new(vec![HalfEdge::circle( [0., 0.], 1., - core.layers.topology.surfaces.space_2d(), + surface.clone(), &mut core, )]) .insert(&mut core), @@ -308,7 +308,7 @@ mod tests { let shared_cycle = Cycle::new(vec![HalfEdge::circle( [0., 0.], 1., - core.layers.topology.surfaces.space_2d(), + surface.clone(), &mut core, )]) .insert(&mut core); @@ -355,12 +355,8 @@ mod tests { &mut core, ); - let shared_edge = HalfEdge::circle( - [0., 0.], - 1., - core.layers.topology.surfaces.space_2d(), - &mut core, - ); + let shared_edge = + HalfEdge::circle([0., 0.], 1., surface.clone(), &mut core); let invalid_solid = Solid::new(vec![Shell::new(vec![Face::new( surface, From e9a49ffbe1ceaf600d6799fd432c13f20e019b62 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Tue, 7 May 2024 14:12:24 +0200 Subject: [PATCH 4/5] Refactor to prepare for follow-on change --- crates/fj-core/src/validate/solid.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/crates/fj-core/src/validate/solid.rs b/crates/fj-core/src/validate/solid.rs index 0275f3fcf..9aed0832c 100644 --- a/crates/fj-core/src/validate/solid.rs +++ b/crates/fj-core/src/validate/solid.rs @@ -197,12 +197,14 @@ mod tests { fn should_find_face_multiple_references() -> anyhow::Result<()> { let mut core = Core::new(); + let surface = Surface::from_uv( + GlobalPath::circle_from_radius(1.), + [0., 1., 1.], + &mut core, + ); + let shared_face = Face::new( - Surface::from_uv( - GlobalPath::circle_from_radius(1.), - [0., 1., 1.], - &mut core, - ), + surface, Region::new( Cycle::new(vec![HalfEdge::circle( [0., 0.], From 799813581603677b5e7e57bcb89340157004acf3 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Tue, 7 May 2024 14:12:55 +0200 Subject: [PATCH 5/5] Fix use of wrong surface in reference test --- crates/fj-core/src/validate/solid.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/fj-core/src/validate/solid.rs b/crates/fj-core/src/validate/solid.rs index 9aed0832c..682eac241 100644 --- a/crates/fj-core/src/validate/solid.rs +++ b/crates/fj-core/src/validate/solid.rs @@ -204,12 +204,12 @@ mod tests { ); let shared_face = Face::new( - surface, + surface.clone(), Region::new( Cycle::new(vec![HalfEdge::circle( [0., 0.], 1., - core.layers.topology.surfaces.space_2d(), + surface, &mut core, )]) .insert(&mut core),