use std::collections::BTreeMap;
use rstar::RTree;
use undoredo::{Recorder, UndoRedo};
fn main() {
let mut recorder: Recorder<RTree<(i32, i32)>, BTreeMap<(i32, i32), ()>> =
Recorder::new(RTree::new());
let mut undoredo: UndoRedo<BTreeMap<(i32, i32), ()>> = UndoRedo::new();
recorder.insert((1, 1), ());
undoredo.commit(recorder.flush_delta());
recorder.insert((2, 2), ());
undoredo.commit(recorder.flush_delta());
recorder.insert((3, 3), ());
undoredo.commit(recorder.flush_delta());
assert_eq!(
recorder.collection().iter().collect::<Vec<_>>(),
RTree::bulk_load(vec![(1, 1), (2, 2), (3, 3)])
.iter()
.collect::<Vec<_>>()
);
undoredo.undo(&mut recorder);
assert_eq!(
*recorder.collection().iter().collect::<Vec<_>>(),
RTree::bulk_load(vec![(1, 1), (2, 2)])
.iter()
.collect::<Vec<_>>()
);
undoredo.undo(&mut recorder);
assert_eq!(
*recorder.collection().iter().collect::<Vec<_>>(),
RTree::bulk_load(vec![(1, 1)]).iter().collect::<Vec<_>>()
);
undoredo.redo(&mut recorder);
assert_eq!(
*recorder.collection().iter().collect::<Vec<_>>(),
RTree::bulk_load(vec![(1, 1), (2, 2)])
.iter()
.collect::<Vec<_>>()
);
undoredo.redo(&mut recorder);
assert_eq!(
*recorder.collection().iter().collect::<Vec<_>>(),
RTree::bulk_load(vec![(1, 1), (2, 2), (3, 3)])
.iter()
.collect::<Vec<_>>()
);
}
#[test]
fn test() {
main();
}