use chijin::{utils::{revolve_section, stretch_vector}, Shape};
use glam::DVec3;
fn dvec3(x: f64, y: f64, z: f64) -> DVec3 {
DVec3::new(x, y, z)
}
fn test_box() -> Shape {
Shape::box_from_corners(dvec3(0.0, 0.0, 0.0), dvec3(10.0, 10.0, 10.0))
}
#[test]
fn test_stretch_vector_volume() {
let shape = test_box();
let result = stretch_vector(&shape, dvec3(5.0, 0.0, 0.0), dvec3(1.0, 0.0, 0.0)).unwrap();
let v = result.volume();
assert!((v - 1100.0).abs() < 1e-3, "expected volume ≈ 1100, got {v}");
}
#[test]
fn test_revolve_section_volume() {
let shape = test_box();
let result = revolve_section(
&shape,
dvec3(0.0, 5.0, 0.0), dvec3(0.0, 0.0, 1.0), dvec3(0.0, 1.0, 0.0), std::f64::consts::TAU,
)
.unwrap();
let v = result.volume();
std::fs::create_dir_all("out").unwrap();
let mut file = std::fs::File::create("out/revolve_section.step").unwrap();
result.write_step(&mut file).expect("STEP write failed");
let expected = std::f64::consts::PI * 10.0f64.powi(2) * 10.0;
assert!((v - expected).abs() < 1.0, "expected volume ≈ {expected:.2}, got {v}");
}