use cgmath::vec3;
use dmc::dmc::*;
use dmc::octree::*;
mod trait_impls;
use trait_impls::Node;
#[test]
fn null_cube_marching() {
let mut octree = HashedOctree::new(Node {
density: 1.,
normal: vec3(0., 0., 0.),
});
octree.subdivide(MortonKey::root()).for_each(drop);
let mc = mesh_from_octree(&octree, 1.);
assert_eq!(mc.vertices, vec![]);
}
#[test]
fn simple_single_point_cube_marching() {
let mut octree = HashedOctree::new(Node {
density: 1.,
normal: vec3(0., 0., 0.),
});
octree.subdivide(MortonKey::root()).for_each(drop);
octree.value_mut(MortonKey(0b1000)).unwrap().density = -1.;
let mc = mesh_from_octree(&octree, 1.);
dbg!(&mc);
assert_eq!(mc.vertices.len(), 3);
}
#[test]
fn simple_double_point_cube_marching() {
let mut octree = HashedOctree::new(Node {
density: 1.,
normal: vec3(0., 0., 0.),
});
octree.subdivide(MortonKey::root()).for_each(drop);
octree.value_mut(MortonKey(0b1000)).unwrap().density = -1.;
octree.value_mut(MortonKey(0b1111)).unwrap().density = -1.;
let mc = mesh_from_octree(&octree, 1.);
dbg!(&mc);
assert_eq!(mc.vertices.len(), 6);
}