mirror of
https://github.com/hannobraun/Fornjot
synced 2025-05-09 04:18:28 +00:00
Move tests closer to code under test
This commit is contained in:
parent
e1902bbf3b
commit
f2fb5334c4
@ -113,84 +113,12 @@ impl SketchValidationError {
|
|||||||
mod tests {
|
mod tests {
|
||||||
use crate::{
|
use crate::{
|
||||||
assert_contains_err,
|
assert_contains_err,
|
||||||
operations::{
|
operations::{build::BuildHalfEdge, insert::Insert},
|
||||||
build::BuildHalfEdge, build::BuildRegion, insert::Insert,
|
|
||||||
},
|
|
||||||
topology::{Cycle, HalfEdge, Region, Sketch, Vertex},
|
topology::{Cycle, HalfEdge, Region, Sketch, Vertex},
|
||||||
validate::{SketchValidationError, Validate, ValidationError},
|
validate::{SketchValidationError, Validate, ValidationError},
|
||||||
Core,
|
Core,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn should_find_cycle_multiple_references() -> anyhow::Result<()> {
|
|
||||||
let mut core = Core::new();
|
|
||||||
|
|
||||||
let surface = core.layers.topology.surfaces.space_2d();
|
|
||||||
|
|
||||||
let region = <Region as BuildRegion>::circle(
|
|
||||||
[0., 0.],
|
|
||||||
1.,
|
|
||||||
surface.clone(),
|
|
||||||
&mut core,
|
|
||||||
)
|
|
||||||
.insert(&mut core);
|
|
||||||
let valid_sketch = Sketch::new(surface.clone(), vec![region.clone()])
|
|
||||||
.insert(&mut core);
|
|
||||||
valid_sketch.validate_and_return_first_error(&core.layers.geometry)?;
|
|
||||||
|
|
||||||
let shared_cycle = region.exterior();
|
|
||||||
let invalid_sketch = Sketch::new(
|
|
||||||
surface,
|
|
||||||
vec![
|
|
||||||
Region::new(shared_cycle.clone(), vec![]).insert(&mut core),
|
|
||||||
Region::new(shared_cycle.clone(), vec![]).insert(&mut core),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
assert_contains_err!(
|
|
||||||
core,
|
|
||||||
invalid_sketch,
|
|
||||||
ValidationError::MultipleReferencesToCycle(_)
|
|
||||||
);
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn should_find_half_edge_multiple_references() -> anyhow::Result<()> {
|
|
||||||
let mut core = Core::new();
|
|
||||||
|
|
||||||
let surface = core.layers.topology.surfaces.space_2d();
|
|
||||||
|
|
||||||
let region = <Region as BuildRegion>::polygon(
|
|
||||||
[[0., 0.], [1., 1.], [0., 1.]],
|
|
||||||
surface.clone(),
|
|
||||||
&mut core,
|
|
||||||
)
|
|
||||||
.insert(&mut core);
|
|
||||||
let valid_sketch = Sketch::new(surface.clone(), vec![region.clone()])
|
|
||||||
.insert(&mut core);
|
|
||||||
valid_sketch.validate_and_return_first_error(&core.layers.geometry)?;
|
|
||||||
|
|
||||||
let exterior = region.exterior();
|
|
||||||
let cloned_edges: Vec<_> =
|
|
||||||
exterior.half_edges().iter().cloned().collect();
|
|
||||||
let interior = Cycle::new(cloned_edges).insert(&mut core);
|
|
||||||
|
|
||||||
let invalid_sketch = Sketch::new(
|
|
||||||
surface,
|
|
||||||
vec![
|
|
||||||
Region::new(exterior.clone(), vec![interior]).insert(&mut core)
|
|
||||||
],
|
|
||||||
);
|
|
||||||
assert_contains_err!(
|
|
||||||
core,
|
|
||||||
invalid_sketch,
|
|
||||||
ValidationError::MultipleReferencesToHalfEdge(_)
|
|
||||||
);
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn should_find_clockwise_exterior_cycle() -> anyhow::Result<()> {
|
fn should_find_clockwise_exterior_cycle() -> anyhow::Result<()> {
|
||||||
let mut core = Core::new();
|
let mut core = Core::new();
|
||||||
|
@ -104,3 +104,85 @@ impl<T, U> ReferenceCounter<T, U> {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use crate::{
|
||||||
|
assert_contains_err,
|
||||||
|
operations::{build::BuildRegion, insert::Insert},
|
||||||
|
topology::{Cycle, Region, Sketch},
|
||||||
|
validate::Validate,
|
||||||
|
validation::ValidationError,
|
||||||
|
Core,
|
||||||
|
};
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn should_find_cycle_multiple_references() -> anyhow::Result<()> {
|
||||||
|
let mut core = Core::new();
|
||||||
|
|
||||||
|
let surface = core.layers.topology.surfaces.space_2d();
|
||||||
|
|
||||||
|
let region = <Region as BuildRegion>::circle(
|
||||||
|
[0., 0.],
|
||||||
|
1.,
|
||||||
|
surface.clone(),
|
||||||
|
&mut core,
|
||||||
|
)
|
||||||
|
.insert(&mut core);
|
||||||
|
let valid_sketch = Sketch::new(surface.clone(), vec![region.clone()])
|
||||||
|
.insert(&mut core);
|
||||||
|
valid_sketch.validate_and_return_first_error(&core.layers.geometry)?;
|
||||||
|
|
||||||
|
let shared_cycle = region.exterior();
|
||||||
|
let invalid_sketch = Sketch::new(
|
||||||
|
surface,
|
||||||
|
vec![
|
||||||
|
Region::new(shared_cycle.clone(), vec![]).insert(&mut core),
|
||||||
|
Region::new(shared_cycle.clone(), vec![]).insert(&mut core),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
assert_contains_err!(
|
||||||
|
core,
|
||||||
|
invalid_sketch,
|
||||||
|
ValidationError::MultipleReferencesToCycle(_)
|
||||||
|
);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn should_find_half_edge_multiple_references() -> anyhow::Result<()> {
|
||||||
|
let mut core = Core::new();
|
||||||
|
|
||||||
|
let surface = core.layers.topology.surfaces.space_2d();
|
||||||
|
|
||||||
|
let region = <Region as BuildRegion>::polygon(
|
||||||
|
[[0., 0.], [1., 1.], [0., 1.]],
|
||||||
|
surface.clone(),
|
||||||
|
&mut core,
|
||||||
|
)
|
||||||
|
.insert(&mut core);
|
||||||
|
let valid_sketch = Sketch::new(surface.clone(), vec![region.clone()])
|
||||||
|
.insert(&mut core);
|
||||||
|
valid_sketch.validate_and_return_first_error(&core.layers.geometry)?;
|
||||||
|
|
||||||
|
let exterior = region.exterior();
|
||||||
|
let cloned_edges: Vec<_> =
|
||||||
|
exterior.half_edges().iter().cloned().collect();
|
||||||
|
let interior = Cycle::new(cloned_edges).insert(&mut core);
|
||||||
|
|
||||||
|
let invalid_sketch = Sketch::new(
|
||||||
|
surface,
|
||||||
|
vec![
|
||||||
|
Region::new(exterior.clone(), vec![interior]).insert(&mut core)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
assert_contains_err!(
|
||||||
|
core,
|
||||||
|
invalid_sketch,
|
||||||
|
ValidationError::MultipleReferencesToHalfEdge(_)
|
||||||
|
);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user