#![allow(clippy::single_range_in_vec_init)]
use crate::normalize::paving::*;
#[test]
fn test_dim2() {
let grid_empty: Paving2D<i32, i32, bool> = Paving2D::default();
let mut grid_1 = grid_empty.clone();
grid_1.set(
&EmptyPavingSelector
.dim_front::<i32>([1..5])
.dim_front::<i32>([3..6]),
&true,
);
assert_ne!(grid_empty, grid_1);
let mut grid_2 = grid_empty.clone();
grid_2.set(
&EmptyPavingSelector.dim_front([1..4]).dim_front([3..4]),
&true,
); grid_2.set(
&EmptyPavingSelector.dim_front([2..5]).dim_front([3..4]),
&true,
); grid_2.set(
&EmptyPavingSelector.dim_front([1..5]).dim_front([4..6]),
&true,
); assert_eq!(grid_1, grid_2);
}
#[test]
fn test_pop_trivial() {
let grid_empty = Paving2D::default();
let mut grid = grid_empty.clone();
grid.set(
&EmptyPavingSelector.dim_front([1..4]).dim_front([3..4]),
&true,
); grid.set(
&EmptyPavingSelector.dim_front([2..5]).dim_front([3..4]),
&true,
); grid.set(
&EmptyPavingSelector.dim_front([1..5]).dim_front([4..6]),
&true,
);
assert_eq!(
grid.pop_filter(|x| *x).unwrap().1,
EmptyPavingSelector.dim_front([1..5]).dim_front([3..6]),
);
assert_eq!(grid, grid_empty);
assert_eq!(grid.pop_filter(|x| *x), None);
}
#[test]
fn test_pop_disjoint() {
let grid_empty = Paving2D::default();
let mut grid = grid_empty.clone();
grid.set(
&EmptyPavingSelector
.dim_front([1..2, 4..7])
.dim_front([3..6]),
&true,
);
assert_eq!(
grid.pop_filter(|x| *x).unwrap().1,
EmptyPavingSelector
.dim_front([1..2, 4..7])
.dim_front([3..6]),
);
assert_eq!(grid, grid_empty);
assert_eq!(grid.pop_filter(|x| *x), None);
}
#[test]
fn test_debug() {
let mut grid = Paving2D::default();
grid.set(
&EmptyPavingSelector
.dim_front([1..2, 4..7])
.dim_front([3..6]),
&true,
);
assert_eq!(format!("{grid:?}"), "Dim { [3, 6[: Dim { [1, 2[: Cell { inner: true }, [2, 4[: Cell { inner: false }, [4, 7[: Cell { inner: true } } }")
}