use rustsim_spaces::grid::{Grid2D, Grid2DSingle, GridError};
#[test]
fn grid2d_add_remove() {
let mut grid = Grid2D::new(4, 3, false);
assert!(grid.is_empty((1, 1)));
grid.add_agent((1, 1), 42).unwrap();
grid.add_agent((1, 1), 7).unwrap();
let ids = grid.ids_in_position((1, 1)).unwrap();
assert_eq!(ids.len(), 2);
assert!(grid.remove_agent((1, 1), 42).unwrap());
assert!(!grid.remove_agent((1, 1), 42).unwrap());
}
#[test]
fn grid2d_single_occupancy() {
let mut grid = Grid2DSingle::new(2, 2, false);
grid.add_agent((0, 0), 10).unwrap();
assert_eq!(grid.add_agent((0, 0), 11), Err(GridError::Occupied((0, 0))));
assert_eq!(grid.id_in_position((0, 0)), Some(10));
assert!(!grid.remove_agent((0, 0), 11).unwrap());
assert!(grid.remove_agent((0, 0), 10).unwrap());
assert_eq!(grid.id_in_position((0, 0)), None);
}