1use bidimap::BiHashMap;
6use undoredo::aliases::{BiHashMapDelta, BiHashMapHalfDelta};
7use undoredo::{Recorder, UndoRedo};
8
9fn main() {
10 let mut map = BiHashMap::new();
11 map.insert("A", 1);
12 map.insert("BB", 2);
13 map.insert("CCC", 3);
14
15 let mut recorder: Recorder<BiHashMap<&str, usize>, BiHashMapHalfDelta<&str, usize>> =
16 Recorder::new(map);
17 let mut undoredo: UndoRedo<BiHashMapDelta<&str, usize>> = UndoRedo::new();
18
19 assert_eq!(recorder.get_by_left(&"A"), Some(&1));
20 assert_eq!(recorder.get_by_right(&2), Some(&"BB"));
21
22 assert_eq!(recorder.remove_by_left(&"A"), Some(1));
23 assert_eq!(recorder.remove_by_right(&3), Some("CCC"));
24 undoredo.commit(&mut recorder);
25
26 assert_eq!(recorder.get_by_left(&"A"), None);
27 assert_eq!(recorder.get_by_right(&3), None);
28
29 undoredo.undo(&mut recorder);
30 assert_eq!(recorder.get_by_left(&"A"), Some(&1));
31 assert_eq!(recorder.get_by_left(&"CCC"), Some(&3));
32
33 undoredo.redo(&mut recorder);
34 assert_eq!(recorder.get_by_left(&"A"), None);
35 assert_eq!(recorder.get_by_right(&3), None);
36}
37
38#[test]
39fn test() {
40 main();
41}