From 4b05d00cb30904ed6139fb55731b38ea0cfbb21e Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 5 Jun 2024 20:46:06 +0200 Subject: [PATCH 01/10] Simplify construction of `Sketch` in test --- crates/fj-core/src/validate/sketch.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/crates/fj-core/src/validate/sketch.rs b/crates/fj-core/src/validate/sketch.rs index f60dc6f49..3dbb56899 100644 --- a/crates/fj-core/src/validate/sketch.rs +++ b/crates/fj-core/src/validate/sketch.rs @@ -113,7 +113,10 @@ impl SketchValidationError { mod tests { use crate::{ assert_contains_err, - operations::{build::BuildHalfEdge, insert::Insert}, + operations::{ + build::{BuildHalfEdge, BuildSketch}, + insert::Insert, + }, topology::{Cycle, HalfEdge, Region, Sketch, Vertex}, validate::{SketchValidationError, Validate, ValidationError}, Core, @@ -127,12 +130,7 @@ mod tests { let valid_outer_circle = HalfEdge::circle([0., 0.], 1., surface.clone(), &mut core); - let valid_exterior = - Cycle::new(vec![valid_outer_circle.clone()]).insert(&mut core); - let valid_sketch = Sketch::new( - surface.clone(), - vec![Region::new(valid_exterior.clone(), vec![]).insert(&mut core)], - ); + let valid_sketch = Sketch::circle([0., 0.], 1., &mut core); valid_sketch.validate_and_return_first_error(&core.layers.geometry)?; let invalid_outer_circle = HalfEdge::from_sibling( From 0bd5b70fa0dd7d605963546a6303c58f604b8d2b Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 5 Jun 2024 20:46:32 +0200 Subject: [PATCH 02/10] Simplify variable name --- crates/fj-core/src/validate/sketch.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/fj-core/src/validate/sketch.rs b/crates/fj-core/src/validate/sketch.rs index 3dbb56899..c5664ab1e 100644 --- a/crates/fj-core/src/validate/sketch.rs +++ b/crates/fj-core/src/validate/sketch.rs @@ -130,8 +130,8 @@ mod tests { let valid_outer_circle = HalfEdge::circle([0., 0.], 1., surface.clone(), &mut core); - let valid_sketch = Sketch::circle([0., 0.], 1., &mut core); - valid_sketch.validate_and_return_first_error(&core.layers.geometry)?; + let valid = Sketch::circle([0., 0.], 1., &mut core); + valid.validate_and_return_first_error(&core.layers.geometry)?; let invalid_outer_circle = HalfEdge::from_sibling( &valid_outer_circle, From cf47ffbcdece7e6dcaba9053f932c417407b5d42 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 5 Jun 2024 20:51:41 +0200 Subject: [PATCH 03/10] Simplify construction of `Sketch` in test --- crates/fj-core/src/validate/sketch.rs | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/crates/fj-core/src/validate/sketch.rs b/crates/fj-core/src/validate/sketch.rs index c5664ab1e..730c2be41 100644 --- a/crates/fj-core/src/validate/sketch.rs +++ b/crates/fj-core/src/validate/sketch.rs @@ -116,6 +116,8 @@ mod tests { operations::{ build::{BuildHalfEdge, BuildSketch}, insert::Insert, + reverse::Reverse, + update::{UpdateRegion, UpdateSketch}, }, topology::{Cycle, HalfEdge, Region, Sketch, Vertex}, validate::{SketchValidationError, Validate, ValidationError}, @@ -126,26 +128,17 @@ mod tests { fn should_find_clockwise_exterior_cycle() -> anyhow::Result<()> { let mut core = Core::new(); - let surface = core.layers.topology.surfaces.space_2d(); - - let valid_outer_circle = - HalfEdge::circle([0., 0.], 1., surface.clone(), &mut core); let valid = Sketch::circle([0., 0.], 1., &mut core); valid.validate_and_return_first_error(&core.layers.geometry)?; - let invalid_outer_circle = HalfEdge::from_sibling( - &valid_outer_circle, - Vertex::new().insert(&mut core), + let invalid_sketch = valid.update_region( + valid.regions().first(), + |region, core| { + [region + .update_exterior(|cycle, core| cycle.reverse(core), core)] + }, &mut core, ); - let invalid_exterior = - Cycle::new(vec![invalid_outer_circle.clone()]).insert(&mut core); - let invalid_sketch = Sketch::new( - surface, - vec![ - Region::new(invalid_exterior.clone(), vec![]).insert(&mut core) - ], - ); assert_contains_err!( core, invalid_sketch, From a3315e0600bcd9f6b3f3d98b33e77344d5f66f5e Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 5 Jun 2024 20:56:56 +0200 Subject: [PATCH 04/10] Simplify construction of `Cycle` in test --- crates/fj-core/src/validate/sketch.rs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/crates/fj-core/src/validate/sketch.rs b/crates/fj-core/src/validate/sketch.rs index 730c2be41..c38564795 100644 --- a/crates/fj-core/src/validate/sketch.rs +++ b/crates/fj-core/src/validate/sketch.rs @@ -114,12 +114,12 @@ mod tests { use crate::{ assert_contains_err, operations::{ - build::{BuildHalfEdge, BuildSketch}, + build::{BuildCycle, BuildHalfEdge, BuildSketch}, insert::Insert, reverse::Reverse, update::{UpdateRegion, UpdateSketch}, }, - topology::{Cycle, HalfEdge, Region, Sketch, Vertex}, + topology::{Cycle, HalfEdge, Region, Sketch}, validate::{SketchValidationError, Validate, ValidationError}, Core, }; @@ -160,15 +160,12 @@ mod tests { HalfEdge::circle([0., 0.], 2., surface.clone(), &mut core); let inner_circle = HalfEdge::circle([0., 0.], 1., surface.clone(), &mut core); - let cw_inner_circle = HalfEdge::from_sibling( - &inner_circle, - Vertex::new().insert(&mut core), - &mut core, - ); let exterior = Cycle::new(vec![outer_circle.clone()]).insert(&mut core); let valid_interior = - Cycle::new(vec![cw_inner_circle.clone()]).insert(&mut core); + Cycle::circle([0., 0.], 1., surface.clone(), &mut core) + .reverse(&mut core) + .insert(&mut core); let valid_sketch = Sketch::new( surface.clone(), vec![Region::new(exterior.clone(), vec![valid_interior]) From 1e4e3908bdeecb060a2879ba0ee2c3dfa5544b13 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 5 Jun 2024 20:58:53 +0200 Subject: [PATCH 05/10] Prepare for follow-on change --- crates/fj-core/src/validate/sketch.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/crates/fj-core/src/validate/sketch.rs b/crates/fj-core/src/validate/sketch.rs index c38564795..4e1859062 100644 --- a/crates/fj-core/src/validate/sketch.rs +++ b/crates/fj-core/src/validate/sketch.rs @@ -166,11 +166,9 @@ mod tests { Cycle::circle([0., 0.], 1., surface.clone(), &mut core) .reverse(&mut core) .insert(&mut core); - let valid_sketch = Sketch::new( - surface.clone(), - vec![Region::new(exterior.clone(), vec![valid_interior]) - .insert(&mut core)], - ); + let region = Region::new(exterior.clone(), vec![valid_interior]) + .insert(&mut core); + let valid_sketch = Sketch::new(surface.clone(), vec![region]); valid_sketch.validate_and_return_first_error(&core.layers.geometry)?; let invalid_interior = From 1e04b5d966350989d2a1ae318bc23b6534dc5625 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 5 Jun 2024 21:00:15 +0200 Subject: [PATCH 06/10] Prepare for follow-on change --- crates/fj-core/src/validate/sketch.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/crates/fj-core/src/validate/sketch.rs b/crates/fj-core/src/validate/sketch.rs index 4e1859062..94b2287db 100644 --- a/crates/fj-core/src/validate/sketch.rs +++ b/crates/fj-core/src/validate/sketch.rs @@ -114,7 +114,7 @@ mod tests { use crate::{ assert_contains_err, operations::{ - build::{BuildCycle, BuildHalfEdge, BuildSketch}, + build::{BuildCycle, BuildHalfEdge, BuildRegion, BuildSketch}, insert::Insert, reverse::Reverse, update::{UpdateRegion, UpdateSketch}, @@ -166,7 +166,8 @@ mod tests { Cycle::circle([0., 0.], 1., surface.clone(), &mut core) .reverse(&mut core) .insert(&mut core); - let region = Region::new(exterior.clone(), vec![valid_interior]) + let region = Region::circle([0., 0.], 2., surface.clone(), &mut core) + .add_interiors([valid_interior], &mut core) .insert(&mut core); let valid_sketch = Sketch::new(surface.clone(), vec![region]); valid_sketch.validate_and_return_first_error(&core.layers.geometry)?; From 488d0bb91bf72fec04d09ed4f2d2bdf7448678ac Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 5 Jun 2024 21:00:50 +0200 Subject: [PATCH 07/10] Inline redundant variable --- crates/fj-core/src/validate/sketch.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/crates/fj-core/src/validate/sketch.rs b/crates/fj-core/src/validate/sketch.rs index 94b2287db..762c742a1 100644 --- a/crates/fj-core/src/validate/sketch.rs +++ b/crates/fj-core/src/validate/sketch.rs @@ -162,12 +162,13 @@ mod tests { HalfEdge::circle([0., 0.], 1., surface.clone(), &mut core); let exterior = Cycle::new(vec![outer_circle.clone()]).insert(&mut core); - let valid_interior = - Cycle::circle([0., 0.], 1., surface.clone(), &mut core) - .reverse(&mut core) - .insert(&mut core); let region = Region::circle([0., 0.], 2., surface.clone(), &mut core) - .add_interiors([valid_interior], &mut core) + .add_interiors( + [Cycle::circle([0., 0.], 1., surface.clone(), &mut core) + .reverse(&mut core) + .insert(&mut core)], + &mut core, + ) .insert(&mut core); let valid_sketch = Sketch::new(surface.clone(), vec![region]); valid_sketch.validate_and_return_first_error(&core.layers.geometry)?; From 546c4934ef9b92d23d2a9fd713566415424ae899 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 5 Jun 2024 21:01:00 +0200 Subject: [PATCH 08/10] Remove redundant call --- crates/fj-core/src/validate/sketch.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/crates/fj-core/src/validate/sketch.rs b/crates/fj-core/src/validate/sketch.rs index 762c742a1..0a2cedf78 100644 --- a/crates/fj-core/src/validate/sketch.rs +++ b/crates/fj-core/src/validate/sketch.rs @@ -165,8 +165,7 @@ mod tests { let region = Region::circle([0., 0.], 2., surface.clone(), &mut core) .add_interiors( [Cycle::circle([0., 0.], 1., surface.clone(), &mut core) - .reverse(&mut core) - .insert(&mut core)], + .reverse(&mut core)], &mut core, ) .insert(&mut core); From 7fd69cbac55b890dbef83599c808df10712aca1a Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 5 Jun 2024 21:02:12 +0200 Subject: [PATCH 09/10] Simplify variable name --- crates/fj-core/src/validate/sketch.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/fj-core/src/validate/sketch.rs b/crates/fj-core/src/validate/sketch.rs index 0a2cedf78..75778950f 100644 --- a/crates/fj-core/src/validate/sketch.rs +++ b/crates/fj-core/src/validate/sketch.rs @@ -169,8 +169,8 @@ mod tests { &mut core, ) .insert(&mut core); - let valid_sketch = Sketch::new(surface.clone(), vec![region]); - valid_sketch.validate_and_return_first_error(&core.layers.geometry)?; + let valid = Sketch::new(surface.clone(), vec![region]); + valid.validate_and_return_first_error(&core.layers.geometry)?; let invalid_interior = Cycle::new(vec![inner_circle.clone()]).insert(&mut core); From e4817f4c93f121e144c8476b0acdc384a823ea20 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Wed, 5 Jun 2024 21:04:18 +0200 Subject: [PATCH 10/10] Simplify construction of `Sketch` in test --- crates/fj-core/src/validate/sketch.rs | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/crates/fj-core/src/validate/sketch.rs b/crates/fj-core/src/validate/sketch.rs index 75778950f..5e536c5f7 100644 --- a/crates/fj-core/src/validate/sketch.rs +++ b/crates/fj-core/src/validate/sketch.rs @@ -114,12 +114,12 @@ mod tests { use crate::{ assert_contains_err, operations::{ - build::{BuildCycle, BuildHalfEdge, BuildRegion, BuildSketch}, + build::{BuildCycle, BuildRegion, BuildSketch}, insert::Insert, reverse::Reverse, update::{UpdateRegion, UpdateSketch}, }, - topology::{Cycle, HalfEdge, Region, Sketch}, + topology::{Cycle, Region, Sketch}, validate::{SketchValidationError, Validate, ValidationError}, Core, }; @@ -156,12 +156,6 @@ mod tests { let surface = core.layers.topology.surfaces.space_2d(); - let outer_circle = - HalfEdge::circle([0., 0.], 2., surface.clone(), &mut core); - let inner_circle = - HalfEdge::circle([0., 0.], 1., surface.clone(), &mut core); - let exterior = Cycle::new(vec![outer_circle.clone()]).insert(&mut core); - let region = Region::circle([0., 0.], 2., surface.clone(), &mut core) .add_interiors( [Cycle::circle([0., 0.], 1., surface.clone(), &mut core) @@ -172,12 +166,16 @@ mod tests { let valid = Sketch::new(surface.clone(), vec![region]); valid.validate_and_return_first_error(&core.layers.geometry)?; - let invalid_interior = - Cycle::new(vec![inner_circle.clone()]).insert(&mut core); - let invalid_sketch = Sketch::new( - surface, - vec![Region::new(exterior.clone(), vec![invalid_interior]) - .insert(&mut core)], + let invalid_sketch = valid.update_region( + valid.regions().first(), + |region, core| { + [region.update_interior( + region.interiors().first(), + |cycle, core| [cycle.reverse(core)], + core, + )] + }, + &mut core, ); assert_contains_err!( core,