use ph_surfaces::{AxisLookup, BilinearSurface, BinaryAxis, SurfaceError};
static X: [u16; 2] = [100, 200];
static Y: [u16; 2] = [10, 30];
static VALUES: [[i32; 2]; 2] = [
[0, 100], [40, 180], ];
static SURFACE: BilinearSurface<2, 2> = BilinearSurface::new(&X, &Y, &VALUES);
fn main() {
assert_eq!(SURFACE.evaluate(100, 10), Ok(0));
assert_eq!(SURFACE.evaluate(125, 20), Ok(50));
assert_eq!(
SURFACE.evaluate(0, 20),
Err(SurfaceError::XBelow {
coordinate: 0,
bound: 100
})
);
assert_eq!(BilinearSurface::<2, 2>::VALUE_BYTES, 16);
assert_eq!(BilinearSurface::<2, 2>::PAYLOAD_BYTES, 24);
assert_eq!(BilinearSurface::<2, 2>::SUCCESS_INTERPOLATIONS, 3);
assert_eq!(BilinearSurface::<2, 2>::SUCCESS_GRID_READS, 4);
assert_eq!(<BinaryAxis<2>>::MAX_SEARCH_COMPARISONS, 1);
assert_eq!(
BilinearSurface::<2, 2>::HANDLE_BYTES,
core::mem::size_of::<BilinearSurface<2, 2>>()
);
}