1use stable_vec::StableVec;
6use undoredo::{Push, Recorder, Remove, UndoRedo};
7
8fn main() {
9 let mut recorder: Recorder<usize, char, StableVec<char>> = Recorder::new(StableVec::new());
10 let mut undoredo: UndoRedo<StableVec<char>> = UndoRedo::new();
11
12 recorder.push('A');
13 undoredo.commit(recorder.flush());
14
15 recorder.push('B');
16 recorder.push('B');
17 undoredo.commit(recorder.flush());
18
19 let key = recorder.push('X');
20 recorder.remove(&key);
21 recorder.push('C');
22 undoredo.commit(recorder.flush());
23
24 assert!(
25 recorder
26 .collection()
27 .values()
28 .copied()
29 .eq(['A', 'B', 'B', 'C'])
30 );
31
32 undoredo.undo(&mut recorder);
33 assert!(recorder.collection().values().copied().eq(['A', 'B', 'B']));
34
35 undoredo.undo(&mut recorder);
36 assert!(recorder.collection().values().copied().eq(['A']));
37
38 undoredo.redo(&mut recorder);
39 assert!(recorder.collection().values().copied().eq(['A', 'B', 'B']));
40
41 undoredo.redo(&mut recorder);
42 assert!(
43 recorder
44 .collection()
45 .values()
46 .copied()
47 .eq(['A', 'B', 'B', 'C'])
48 );
49}
50
51#[test]
52fn test() {
53 main();
54}