stable_vec/
stable_vec.rs

1// SPDX-FileCopyrightText: 2025 undoredo contributors
2//
3// SPDX-License-Identifier: MIT OR Apache-2.0
4
5use stable_vec::StableVec;
6use undoredo::{Push, Recorder, Remove, UndoRedo};
7
8fn main() {
9    let mut recorder: Recorder<usize, char, StableVec<char>> = Recorder::new(StableVec::new());
10    let mut undoredo: UndoRedo<StableVec<char>> = UndoRedo::new();
11
12    recorder.push('A');
13    undoredo.commit(recorder.flush());
14
15    recorder.push('B');
16    recorder.push('B');
17    undoredo.commit(recorder.flush());
18
19    let key = recorder.push('X');
20    recorder.remove(&key);
21    recorder.push('C');
22    undoredo.commit(recorder.flush());
23
24    assert!(
25        recorder
26            .collection()
27            .values()
28            .copied()
29            .eq(['A', 'B', 'B', 'C'])
30    );
31
32    undoredo.undo(&mut recorder);
33    assert!(recorder.collection().values().copied().eq(['A', 'B', 'B']));
34
35    undoredo.undo(&mut recorder);
36    assert!(recorder.collection().values().copied().eq(['A']));
37
38    undoredo.redo(&mut recorder);
39    assert!(recorder.collection().values().copied().eq(['A', 'B', 'B']));
40
41    undoredo.redo(&mut recorder);
42    assert!(
43        recorder
44            .collection()
45            .values()
46            .copied()
47            .eq(['A', 'B', 'B', 'C'])
48    );
49}
50
51#[test]
52fn test() {
53    main();
54}