]> git.proxmox.com Git - rustc.git/blob - src/librustc_data_structures/snapshot_map/tests.rs
New upstream version 1.47.0+dfsg1
[rustc.git] / src / librustc_data_structures / snapshot_map / tests.rs
1 use super::SnapshotMap;
2
3 #[test]
4 fn basic() {
5 let mut map = SnapshotMap::default();
6 map.insert(22, "twenty-two");
7 let snapshot = map.snapshot();
8 map.insert(22, "thirty-three");
9 assert_eq!(map[&22], "thirty-three");
10 map.insert(44, "forty-four");
11 assert_eq!(map[&44], "forty-four");
12 assert_eq!(map.get(&33), None);
13 map.rollback_to(snapshot);
14 assert_eq!(map[&22], "twenty-two");
15 assert_eq!(map.get(&33), None);
16 assert_eq!(map.get(&44), None);
17 }
18
19 #[test]
20 #[should_panic]
21 fn out_of_order() {
22 let mut map = SnapshotMap::default();
23 map.insert(22, "twenty-two");
24 let snapshot1 = map.snapshot();
25 map.insert(33, "thirty-three");
26 let snapshot2 = map.snapshot();
27 map.insert(44, "forty-four");
28 map.rollback_to(snapshot1); // bogus, but accepted
29 map.rollback_to(snapshot2); // asserts
30 }
31
32 #[test]
33 fn nested_commit_then_rollback() {
34 let mut map = SnapshotMap::default();
35 map.insert(22, "twenty-two");
36 let snapshot1 = map.snapshot();
37 let snapshot2 = map.snapshot();
38 map.insert(22, "thirty-three");
39 map.commit(snapshot2);
40 assert_eq!(map[&22], "thirty-three");
41 map.rollback_to(snapshot1);
42 assert_eq!(map[&22], "twenty-two");
43 }