1use rstar::RTree;
6use undoredo::{Insert, Recorder, UndoRedo};
7
8fn main() {
9 let mut recorder: Recorder<(i32, i32), (), RTree<(i32, i32)>> = Recorder::new(RTree::new());
10 let mut undoredo: UndoRedo<RTree<(i32, i32)>> = UndoRedo::new();
11
12 recorder.insert((1, 1), ());
13 undoredo.commit(recorder.flush());
14
15 recorder.insert((2, 2), ());
16 undoredo.commit(recorder.flush());
17
18 recorder.insert((3, 3), ());
19 undoredo.commit(recorder.flush());
20
21 assert_eq!(
22 recorder.collection().iter().collect::<Vec<_>>(),
23 RTree::bulk_load(vec![(1, 1), (2, 2), (3, 3)])
24 .iter()
25 .collect::<Vec<_>>()
26 );
27
28 undoredo.undo(&mut recorder);
29 assert_eq!(
30 *recorder.collection().iter().collect::<Vec<_>>(),
31 RTree::bulk_load(vec![(1, 1), (2, 2)])
32 .iter()
33 .collect::<Vec<_>>()
34 );
35
36 undoredo.undo(&mut recorder);
37 assert_eq!(
38 *recorder.collection().iter().collect::<Vec<_>>(),
39 RTree::bulk_load(vec![(1, 1)]).iter().collect::<Vec<_>>()
40 );
41
42 undoredo.redo(&mut recorder);
43 assert_eq!(
44 *recorder.collection().iter().collect::<Vec<_>>(),
45 RTree::bulk_load(vec![(1, 1), (2, 2)])
46 .iter()
47 .collect::<Vec<_>>()
48 );
49
50 undoredo.redo(&mut recorder);
51 assert_eq!(
52 *recorder.collection().iter().collect::<Vec<_>>(),
53 RTree::bulk_load(vec![(1, 1), (2, 2), (3, 3)])
54 .iter()
55 .collect::<Vec<_>>()
56 );
57}
58
59#[test]
60fn test() {
61 main();
62}