1use std::collections::BTreeSet;
6
7use undoredo::{Insert, Recorder, UndoRedo};
8
9fn main() {
10 let mut recorder: Recorder<char, (), BTreeSet<char>> = Recorder::new(BTreeSet::new());
11 let mut undoredo: UndoRedo<BTreeSet<char>> = UndoRedo::new();
12
13 recorder.insert('A', ());
14 undoredo.commit(recorder.flush());
15
16 recorder.insert('B', ());
17 recorder.insert('B', ());
21 undoredo.commit(recorder.flush());
22
23 recorder.insert('C', ());
24 undoredo.commit(recorder.flush());
25
26 assert_eq!(*recorder.collection(), BTreeSet::from(['A', 'B', 'C']));
27
28 undoredo.undo(&mut recorder);
29 assert_eq!(*recorder.collection(), BTreeSet::from(['A', 'B']));
30
31 undoredo.undo(&mut recorder);
32 assert_eq!(*recorder.collection(), BTreeSet::from(['A']));
33
34 undoredo.redo(&mut recorder);
35 assert_eq!(*recorder.collection(), BTreeSet::from(['A', 'B']));
36
37 undoredo.redo(&mut recorder);
38 assert_eq!(*recorder.collection(), BTreeSet::from(['A', 'B', 'C']));
39}
40
41#[test]
42fn test() {
43 main();
44}