Skip to main content

bihashmap/
bihashmap.rs

1// SPDX-FileCopyrightText: 2026 undoredo contributors
2//
3// SPDX-License-Identifier: MIT OR Apache-2.0
4
5use bidimap::BiHashMap;
6use undoredo::aliases::{BiHashMapDelta, BiHashMapHalfDelta};
7use undoredo::{Recorder, UndoRedo};
8
9fn main() {
10    let mut map = BiHashMap::new();
11    map.insert("A", 1);
12    map.insert("BB", 2);
13    map.insert("CCC", 3);
14
15    let mut recorder: Recorder<BiHashMap<&str, usize>, BiHashMapHalfDelta<&str, usize>> =
16        Recorder::new(map);
17    let mut undoredo: UndoRedo<BiHashMapDelta<&str, usize>> = UndoRedo::new();
18
19    assert_eq!(recorder.get_by_left(&"A"), Some(&1));
20    assert_eq!(recorder.get_by_right(&2), Some(&"BB"));
21
22    assert_eq!(recorder.remove_by_left(&"A"), Some(1));
23    assert_eq!(recorder.remove_by_right(&3), Some("CCC"));
24    undoredo.commit(&mut recorder);
25
26    assert_eq!(recorder.get_by_left(&"A"), None);
27    assert_eq!(recorder.get_by_right(&3), None);
28
29    undoredo.undo(&mut recorder);
30    assert_eq!(recorder.get_by_left(&"A"), Some(&1));
31    assert_eq!(recorder.get_by_left(&"CCC"), Some(&3));
32
33    undoredo.redo(&mut recorder);
34    assert_eq!(recorder.get_by_left(&"A"), None);
35    assert_eq!(recorder.get_by_right(&3), None);
36}
37
38#[test]
39fn test() {
40    main();
41}