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