1use std::collections::HashMap;
6
7use rstar::{AABB, primitives::Rectangle};
8use rstared::RTreed;
9use undoredo::{Insert, Recorder, UndoRedo};
10
11fn main() {
12 let rect_hashmap: HashMap<i32, Rectangle<(i32, i32)>> = HashMap::new();
14 let mut recorder = Recorder::<
16 i32,
17 Rectangle<(i32, i32)>,
18 RTreed<i32, Rectangle<(i32, i32)>, HashMap<i32, Rectangle<(i32, i32)>>>,
19 >::new(RTreed::new(rect_hashmap));
20 let mut undoredo: UndoRedo<
21 RTreed<i32, Rectangle<(i32, i32)>, HashMap<i32, Rectangle<(i32, i32)>>>,
22 > = UndoRedo::new();
23
24 recorder.insert(1, Rectangle::from_corners((0, 0), (1, 1)));
26 undoredo.commit(recorder.flush());
27
28 recorder.insert(2, Rectangle::from_corners((1, 1), (2, 2)));
29 undoredo.commit(recorder.flush());
30
31 assert_eq!(
33 recorder
34 .collection()
35 .rtree()
36 .locate_in_envelope(&AABB::from_corners((0, 0), (2, 2)))
37 .count(),
38 2
39 );
40
41 undoredo.undo(&mut recorder);
42
43 assert_eq!(
45 recorder
46 .collection()
47 .rtree()
48 .locate_in_envelope(&AABB::from_corners((0, 0), (2, 2)))
49 .count(),
50 1
51 );
52
53 undoredo.undo(&mut recorder);
54
55 assert_eq!(
57 recorder
58 .collection()
59 .rtree()
60 .locate_in_envelope(&AABB::from_corners((0, 0), (2, 2)))
61 .count(),
62 0
63 );
64
65 undoredo.redo(&mut recorder);
66
67 assert_eq!(
69 recorder
70 .collection()
71 .rtree()
72 .locate_in_envelope(&AABB::from_corners((0, 0), (2, 2)))
73 .count(),
74 1
75 );
76
77 undoredo.redo(&mut recorder);
78
79 assert_eq!(
81 recorder
82 .collection()
83 .rtree()
84 .locate_in_envelope(&AABB::from_corners((0, 0), (2, 2)))
85 .count(),
86 2
87 );
88}
89
90#[test]
91fn test() {
92 main();
93}