molgfx-core 0.2.1

The semantic scene graph: columnar tables, GPU record layouts, the borrowed coordinate seam.
Documentation
use super::*;

#[test]
fn a_plane_and_slab_retain_the_declared_half_spaces() {
    let plane = match ClipPlane::from_point_normal(Vec3::ZERO, Vec3::X) {
        Ok(plane) => plane,
        Err(error) => panic!("plane builds: {error}"),
    };
    assert!(plane.signed_distance(Vec3::X) > 0.0);
    assert!(plane.reversed().signed_distance(Vec3::X) < 0.0);
    let slab = match ClipSet::slab(Vec3::ZERO, Vec3::Z, 2.0) {
        Ok(slab) => slab,
        Err(error) => panic!("slab builds: {error}"),
    };
    assert!(slab.contains(Vec3::new(0.0, 0.0, 0.9)));
    assert!(!slab.contains(Vec3::new(0.0, 0.0, 1.1)));
    assert_eq!(slab.cap(), ClipCap::Open);
    assert_eq!(slab.with_cap(ClipCap::Solid).cap(), ClipCap::Solid);
}

#[test]
fn malformed_clipping_is_a_typed_error() {
    let Err(normal) = ClipPlane::from_point_normal(Vec3::ZERO, Vec3::ZERO) else {
        panic!("zero normal is invalid")
    };
    assert_eq!(normal.code(), "MOLGFX-E0033");
    let Err(thickness) = ClipSet::slab(Vec3::ZERO, Vec3::Z, 0.0) else {
        panic!("zero slab thickness is invalid")
    };
    assert_eq!(thickness.code(), "MOLGFX-E0033");
}