#![allow(
clippy::float_cmp,
reason = "Coordinates are read back unchanged from literals."
)]
use geometry_cs::Cartesian;
use geometry_tag::PointTag;
use geometry_trait::{Geometry, Point, check_point};
#[derive(Default)]
struct RoPoint(f64, f64);
impl Geometry for RoPoint {
type Kind = PointTag;
type Point = Self;
}
impl Point for RoPoint {
type Scalar = f64;
type Cs = Cartesian;
const DIM: usize = 2;
#[inline]
fn get<const D: usize>(&self) -> f64 {
if D == 0 { self.0 } else { self.1 }
}
}
#[test]
fn ro_point_satisfies_point_concept() {
check_point::<RoPoint>();
}
#[test]
fn ro_point_round_trip_read() {
let p = RoPoint(3.0, 4.0);
assert_eq!(p.get::<0>(), 3.0);
assert_eq!(p.get::<1>(), 4.0);
}