use moonlight_triangulation::Moonlight;
#[test]
fn immutable_mesh_algebra_and_dense_projection() {
let engine = Moonlight::initialize().expect("runtime");
let left = engine
.delaunay(&[[0.0, 0.0], [2.0, 0.0], [0.0, 2.0], [2.0, 2.0]])
.expect("left mesh");
let right = engine
.delaunay(&[[2.0, 0.0], [4.0, 0.0], [2.0, 2.0], [4.0, 2.0]])
.expect("right mesh");
let union = left.union(&right).expect("union");
let intersection = left.intersection(&right).expect("intersection");
let difference = left.difference(&right).expect("difference");
let symmetric = left
.symmetric_difference(&right)
.expect("symmetric difference");
let extended = left
.insert_many(&[[1.0, 1.0], [3.0, 1.0]])
.expect("batch insertion");
assert_eq!(left.vertex_count().expect("left count"), 4);
assert_eq!(union.vertex_count().expect("union count"), 6);
assert_eq!(intersection.vertex_count().expect("intersection count"), 2);
assert_eq!(difference.vertex_count().expect("difference count"), 2);
assert_eq!(symmetric.vertex_count().expect("symmetric count"), 4);
assert_eq!(extended.vertex_count().expect("extended count"), 6);
assert_eq!(
left.vertices().expect("vertices").len(),
left.vertex_count().expect("vertex count")
);
assert_eq!(
left.triangles().expect("triangles").len(),
left.triangle_count().expect("triangle count")
);
}
#[test]
fn invalid_coordinate_preserves_typed_witness() {
let engine = Moonlight::initialize().expect("runtime");
let failure = engine
.delaunay(&[[0.0, 0.0], [f64::NAN, 1.0], [1.0, 0.0]])
.err()
.expect("invalid coordinate refusal");
assert_eq!(failure.status, 4);
assert_eq!(failure.code, 1);
assert_eq!(failure.coordinate_error, 1);
assert_eq!(failure.input_index, 1);
}