use sqrid;
use sqrid::Dir;
use anyhow::Result;
#[test]
fn test_sum_none() -> Result<()> {
type Pos = sqrid::Pos<0, 0>;
let center = Pos::default();
for dir in Dir::iter::<true>() {
assert!((center + dir).is_err());
}
Ok(())
}
#[test]
fn test_sum_some() -> Result<()> {
type Pos = sqrid::Pos<2, 2>;
let center = Pos::new_static::<1, 1>();
let neighs = Dir::iter::<true>()
.filter_map(|dir| (center + dir).ok())
.collect::<Vec<_>>();
assert_eq!(
neighs,
vec![
Pos::new_static::<1, 0>(), Pos::new_static::<2, 0>(), Pos::new_static::<2, 1>(), Pos::new_static::<2, 2>(), Pos::new_static::<1, 2>(), Pos::new_static::<0, 2>(), Pos::new_static::<0, 1>(), Pos::new_static::<0, 0>(), ]
);
let neighs = Dir::iter::<false>()
.filter_map(|dir| (center + dir).ok())
.collect::<Vec<_>>();
assert_eq!(
neighs,
vec![
Pos::new_static::<1, 0>(), Pos::new_static::<2, 1>(), Pos::new_static::<1, 2>(), Pos::new_static::<0, 1>(), ]
);
Ok(())
}