use std::collections::HashMap;
use rstar::{AABB, primitives::Rectangle};
use rstared::RTreed;
use undoredo::aliases::{RTreedDelta, RTreedHalfDelta};
use undoredo::{Recorder, UndoRedo};
fn main() {
let rect_hashmap: HashMap<i32, Rectangle<(i32, i32)>> = HashMap::new();
let mut recorder = Recorder::<
RTreed<HashMap<i32, Rectangle<(i32, i32)>>>,
RTreedHalfDelta<i32, Rectangle<(i32, i32)>>,
>::new(RTreed::new(rect_hashmap));
let mut undoredo: UndoRedo<RTreedDelta<i32, Rectangle<(i32, i32)>>> = UndoRedo::new();
recorder.insert(1, Rectangle::from_corners((0, 0), (1, 1)));
undoredo.commit(&mut recorder);
recorder.insert(2, Rectangle::from_corners((1, 1), (2, 2)));
undoredo.commit(&mut recorder);
assert_eq!(
recorder
.container()
.rtree()
.locate_in_envelope(&AABB::from_corners((0, 0), (2, 2)))
.count(),
2
);
undoredo.undo(&mut recorder);
assert_eq!(
recorder
.container()
.rtree()
.locate_in_envelope(&AABB::from_corners((0, 0), (2, 2)))
.count(),
1
);
undoredo.undo(&mut recorder);
assert_eq!(
recorder
.container()
.rtree()
.locate_in_envelope(&AABB::from_corners((0, 0), (2, 2)))
.count(),
0
);
undoredo.redo(&mut recorder);
assert_eq!(
recorder
.container()
.rtree()
.locate_in_envelope(&AABB::from_corners((0, 0), (2, 2)))
.count(),
1
);
undoredo.redo(&mut recorder);
assert_eq!(
recorder
.container()
.rtree()
.locate_in_envelope(&AABB::from_corners((0, 0), (2, 2)))
.count(),
2
);
}
#[test]
fn test() {
main();
}