Move tests closer to the code it covers

This commit is contained in:
Hanno Braun 2024-05-17 14:37:16 +02:00
parent d5d00348d7
commit b93abf66c3
2 changed files with 78 additions and 61 deletions

View File

@ -315,71 +315,11 @@ mod tests {
UpdateShell,
},
},
topology::{Curve, HalfEdge, Shell},
topology::{Curve, Shell},
validate::{shell::ShellValidationError, Validate, ValidationError},
Core,
};
#[test]
fn curve_geometry_mismatch() -> anyhow::Result<()> {
let mut core = Core::new();
let valid = Shell::tetrahedron(
[[0., 0., 0.], [0., 1., 0.], [1., 0., 0.], [0., 0., 1.]],
&mut core,
);
let invalid = valid.shell.update_face(
&valid.abc.face,
|face, core| {
[face.update_region(
|region, core| {
region.update_exterior(
|cycle, core| {
cycle.update_half_edge(
cycle.half_edges().nth_circular(0),
|half_edge, core| {
let mut geometry = *core
.layers
.geometry
.of_half_edge(half_edge);
geometry.path = geometry.path.reverse();
geometry.boundary =
geometry.boundary.reverse();
[HalfEdge::new(
half_edge.curve().clone(),
half_edge.start_vertex().clone(),
)
.insert(core)
.set_geometry(
geometry,
&mut core.layers.geometry,
)]
},
core,
)
},
core,
)
},
core,
)]
},
&mut core,
);
valid
.shell
.validate_and_return_first_error(&core.layers.geometry)?;
assert_contains_err!(
core,
invalid,
ValidationError::CurveGeometryMismatch(..)
);
Ok(())
}
#[test]
fn half_edge_has_no_sibling() -> anyhow::Result<()> {
let mut core = Core::new();

View File

@ -128,3 +128,80 @@ impl ValidationCheck<Shell> for CurveGeometryMismatch {
.flatten()
}
}
#[cfg(test)]
mod tests {
use crate::{
assert_contains_err,
operations::{
build::BuildShell,
geometry::UpdateHalfEdgeGeometry,
insert::Insert,
update::{UpdateCycle, UpdateFace, UpdateRegion, UpdateShell},
},
topology::{HalfEdge, Shell},
validate::Validate,
validation::ValidationError,
Core,
};
#[test]
fn curve_geometry_mismatch() -> anyhow::Result<()> {
let mut core = Core::new();
let valid = Shell::tetrahedron(
[[0., 0., 0.], [0., 1., 0.], [1., 0., 0.], [0., 0., 1.]],
&mut core,
);
let invalid = valid.shell.update_face(
&valid.abc.face,
|face, core| {
[face.update_region(
|region, core| {
region.update_exterior(
|cycle, core| {
cycle.update_half_edge(
cycle.half_edges().nth_circular(0),
|half_edge, core| {
let mut geometry = *core
.layers
.geometry
.of_half_edge(half_edge);
geometry.path = geometry.path.reverse();
geometry.boundary =
geometry.boundary.reverse();
[HalfEdge::new(
half_edge.curve().clone(),
half_edge.start_vertex().clone(),
)
.insert(core)
.set_geometry(
geometry,
&mut core.layers.geometry,
)]
},
core,
)
},
core,
)
},
core,
)]
},
&mut core,
);
valid
.shell
.validate_and_return_first_error(&core.layers.geometry)?;
assert_contains_err!(
core,
invalid,
ValidationError::CurveGeometryMismatch(..)
);
Ok(())
}
}