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