]> git.lizzy.rs Git - rust.git/blob - src/librustc_data_structures/snapshot_map/tests.rs
Auto merge of #63871 - BatmanAoD:FloatFnMustUse, r=withoutboats
[rust.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 }