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