1use undoredo::aliases::VecDelta;
6use undoredo::{Recorder, UndoRedo};
7
8fn main() {
9 let mut recorder: Recorder<Vec<char>> = Recorder::new(Vec::new());
10 let mut undoredo: UndoRedo<VecDelta<char>> = UndoRedo::new();
11
12 recorder.push('A');
13 recorder.push('B');
14 recorder.push('C');
15 recorder.push('D');
16 undoredo.commit(&mut recorder);
17
18 assert_eq!(*recorder.container(), vec!['A', 'B', 'C', 'D']);
19
20 recorder.swap_remove(&1);
24 undoredo.commit(&mut recorder);
25
26 assert_eq!(*recorder.container(), vec!['A', 'D', 'C']);
28
29 undoredo.undo(&mut recorder);
30 assert_eq!(*recorder.container(), vec!['A', 'B', 'C', 'D']);
31
32 undoredo.redo(&mut recorder);
33 assert_eq!(*recorder.container(), vec!['A', 'D', 'C']);
34
35 recorder.swap_remove(&2);
37 undoredo.commit(&mut recorder);
38 assert_eq!(*recorder.container(), vec!['A', 'D']);
39
40 undoredo.undo(&mut recorder);
41 assert_eq!(*recorder.container(), vec!['A', 'D', 'C']);
42
43 undoredo.redo(&mut recorder);
44 assert_eq!(*recorder.container(), vec!['A', 'D']);
45}
46
47#[test]
48fn test() {
49 main();
50}