Skip to main content

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::aliases::{StableVecDelta, StableVecHalfDelta};
7use undoredo::{Recorder, UndoRedo};
8
9fn main() {
10    let mut recorder: Recorder<StableVec<char>, StableVecHalfDelta<char>> =
11        Recorder::new(StableVec::new());
12    let mut undoredo: UndoRedo<StableVecDelta<char>> = UndoRedo::new();
13
14    recorder.push('A');
15    undoredo.commit(&mut recorder);
16
17    recorder.push('B');
18    recorder.push('B');
19    undoredo.commit(&mut recorder);
20
21    let key = recorder.push('X');
22    recorder.remove(&key);
23    recorder.push('C');
24    undoredo.commit(&mut recorder);
25
26    assert!(
27        recorder
28            .container()
29            .values()
30            .copied()
31            .eq(['A', 'B', 'B', 'C'])
32    );
33
34    undoredo.undo(&mut recorder);
35    assert!(recorder.container().values().copied().eq(['A', 'B', 'B']));
36
37    undoredo.undo(&mut recorder);
38    assert!(recorder.container().values().copied().eq(['A']));
39
40    undoredo.redo(&mut recorder);
41    assert!(recorder.container().values().copied().eq(['A', 'B', 'B']));
42
43    undoredo.redo(&mut recorder);
44    assert!(
45        recorder
46            .container()
47            .values()
48            .copied()
49            .eq(['A', 'B', 'B', 'C'])
50    );
51}
52
53#[test]
54fn test() {
55    main();
56}