use aper::{data_structures::atom_map::AtomMap, AperSync, Store};
#[test]
fn test_backtrack() {
let store = Store::default();
let mut map = AtomMap::<u8, u8>::attach(store.handle());
{
map.set(&1, &2);
map.set(&3, &4);
assert_eq!(map.get(&1), Some(2));
assert_eq!(map.get(&3), Some(4));
}
{
store.push_overlay();
assert_eq!(map.get(&1), Some(2));
assert_eq!(map.get(&3), Some(4));
map.set(&5, &6);
map.set(&7, &8);
assert_eq!(map.get(&5), Some(6));
assert_eq!(map.get(&7), Some(8));
map.set(&1, &10);
map.set(&3, &12);
assert_eq!(map.get(&1), Some(10));
assert_eq!(map.get(&3), Some(12));
map.delete(&1);
map.delete(&3);
assert_eq!(map.get(&1), None);
assert_eq!(map.get(&3), None);
}
{
store.pop_overlay();
assert_eq!(map.get(&1), Some(2));
assert_eq!(map.get(&3), Some(4));
}
}