use std::collections::HashMap;
use undoredo::aliases::{HashMapDelta, HashMapHalfDelta};
use undoredo::{Recorder, UndoRedo};
fn main() {
let mut recorder: Recorder<HashMap<usize, char>, HashMapHalfDelta<usize, char>> =
Recorder::new(HashMap::new());
let mut undoredo: UndoRedo<HashMapDelta<usize, char>> = UndoRedo::new();
recorder.insert(1, 'A');
recorder.insert(2, 'B');
recorder.insert(3, 'C');
assert!(*recorder.container() == HashMap::from([(1, 'A'), (2, 'B'), (3, 'C')]));
undoredo.commit(&mut recorder);
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 (hashmap, ..) = recorder.dissolve();
assert!(hashmap == HashMap::from([(1, 'A'), (2, 'B'), (3, 'C')]));
}
#[test]
fn test() {
main();
}