use std::collections::{BTreeMap, BTreeSet};
use undoredo::{Recorder, UndoRedo};
fn main() {
let mut recorder: Recorder<BTreeSet<char>, BTreeMap<char, ()>> = Recorder::new(BTreeSet::new());
let mut undoredo: UndoRedo<BTreeMap<char, ()>> = UndoRedo::new();
recorder.insert('A', ());
undoredo.commit(recorder.flush_delta());
recorder.insert('B', ());
recorder.insert('B', ());
undoredo.commit(recorder.flush_delta());
recorder.insert('C', ());
undoredo.commit(recorder.flush_delta());
assert_eq!(*recorder.collection(), BTreeSet::from(['A', 'B', 'C']));
undoredo.undo(&mut recorder);
assert_eq!(*recorder.collection(), BTreeSet::from(['A', 'B']));
undoredo.undo(&mut recorder);
assert_eq!(*recorder.collection(), BTreeSet::from(['A']));
undoredo.redo(&mut recorder);
assert_eq!(*recorder.collection(), BTreeSet::from(['A', 'B']));
undoredo.redo(&mut recorder);
assert_eq!(*recorder.collection(), BTreeSet::from(['A', 'B', 'C']));
}
#[test]
fn test() {
main();
}