use undoredo::aliases::VecDelta;
use undoredo::{Recorder, UndoRedo};
fn main() {
let mut recorder: Recorder<Vec<char>> = Recorder::new(Vec::new());
let mut undoredo: UndoRedo<VecDelta<char>> = UndoRedo::new();
recorder.push('A');
recorder.push('B');
recorder.push('C');
recorder.push('D');
undoredo.commit(&mut recorder);
assert_eq!(*recorder.container(), vec!['A', 'B', 'C', 'D']);
recorder.swap_remove(&1);
undoredo.commit(&mut recorder);
assert_eq!(*recorder.container(), vec!['A', 'D', 'C']);
undoredo.undo(&mut recorder);
assert_eq!(*recorder.container(), vec!['A', 'B', 'C', 'D']);
undoredo.redo(&mut recorder);
assert_eq!(*recorder.container(), vec!['A', 'D', 'C']);
recorder.swap_remove(&2);
undoredo.commit(&mut recorder);
assert_eq!(*recorder.container(), vec!['A', 'D']);
undoredo.undo(&mut recorder);
assert_eq!(*recorder.container(), vec!['A', 'D', 'C']);
undoredo.redo(&mut recorder);
assert_eq!(*recorder.container(), vec!['A', 'D']);
}
#[test]
fn test() {
main();
}