1use crate::{Angle, Box2D, Point2D, Rect, Size2D, Transform2D, Vector2D};
7
8pub fn register_adam_types(registry: &mut adam_lang::TypeRegistry) {
23 registry.register::<Point2D>("Point2D");
24 registry.register::<Vector2D>("Vector2D");
25 registry.register::<Size2D>("Size2D");
26 registry.register::<Rect>("Rect");
27 registry.register::<Box2D>("Box2D");
28 registry.register::<Angle>("Angle");
29 registry.register::<Transform2D>("Transform2D");
30}
31
32#[cfg(test)]
33mod tests {
34 use super::*;
35
36 #[test]
38 fn every_alias_has_its_euclid_default() {
39 let mut registry = adam_lang::TypeRegistry::new();
40 register_adam_types(&mut registry);
41 macro_rules! check {
43 ($ty:ty, $expected:expr) => {{
44 let entry = registry.get(stringify!($ty)).unwrap();
45 assert_eq!(entry.type_id, std::any::TypeId::of::<$ty>());
46 let value = entry.default_fn.expect("Euclid implements Default")();
47 assert_eq!(*value.downcast::<$ty>().unwrap(), $expected);
48 }};
49 }
50 check!(Point2D, Point2D::new(0.0, 0.0));
51 check!(Vector2D, Vector2D::new(0.0, 0.0));
52 check!(Size2D, Size2D::new(0.0, 0.0));
53 check!(Rect, Rect::new(Point2D::zero(), Size2D::zero()));
54 check!(Box2D, Box2D::new(Point2D::zero(), Point2D::zero()));
55 check!(Angle, Angle::radians(0.0));
56 check!(Transform2D, Transform2D::identity());
57 }
58}