use std::collections::HashMap;
use undoredo::delta::{VecDelta, VecHalfDelta};
use undoredo::{Recorder, UndoRedo};
#[allow(unused_mut)]
fn main() {
let mut recorder: Recorder<HashMap<usize, char>, VecHalfDelta<char>> =
Recorder::new(HashMap::new());
let mut undoredo: UndoRedo<VecDelta<char>> = UndoRedo::new();
recorder.insert(1, 'A');
recorder.insert(2, 'B');
recorder.insert(3, 'C');
undoredo.commit(&mut recorder);
assert!(*recorder.container() == HashMap::from([(1, 'A'), (2, 'B'), (3, 'C')]));
undoredo.undo(&mut recorder);
assert!(*recorder.container() == HashMap::from([]));
undoredo.redo(&mut recorder);
assert!(*recorder.container() == HashMap::from([(1, 'A'), (2, 'B'), (3, 'C')]));
let (mut hashmap, ..) = recorder.dissolve();
assert!(hashmap == HashMap::from([(1, 'A'), (2, 'B'), (3, 'C')]));
}
#[test]
fn test() {
main();
}