rstar/
rstar.rs

1// SPDX-FileCopyrightText: 2025 undoredo contributors
2//
3// SPDX-License-Identifier: MIT OR Apache-2.0
4
5use rstar::RTree;
6use undoredo::{Insert, Recorder, UndoRedo};
7
8fn main() {
9    let mut recorder: Recorder<(i32, i32), (), RTree<(i32, i32)>> = Recorder::new(RTree::new());
10    let mut undoredo: UndoRedo<RTree<(i32, i32)>> = UndoRedo::new();
11
12    recorder.insert((1, 1), ());
13    undoredo.commit(recorder.flush());
14
15    recorder.insert((2, 2), ());
16    undoredo.commit(recorder.flush());
17
18    recorder.insert((3, 3), ());
19    undoredo.commit(recorder.flush());
20
21    assert_eq!(
22        recorder.collection().iter().collect::<Vec<_>>(),
23        RTree::bulk_load(vec![(1, 1), (2, 2), (3, 3)])
24            .iter()
25            .collect::<Vec<_>>()
26    );
27
28    undoredo.undo(&mut recorder);
29    assert_eq!(
30        *recorder.collection().iter().collect::<Vec<_>>(),
31        RTree::bulk_load(vec![(1, 1), (2, 2)])
32            .iter()
33            .collect::<Vec<_>>()
34    );
35
36    undoredo.undo(&mut recorder);
37    assert_eq!(
38        *recorder.collection().iter().collect::<Vec<_>>(),
39        RTree::bulk_load(vec![(1, 1)]).iter().collect::<Vec<_>>()
40    );
41
42    undoredo.redo(&mut recorder);
43    assert_eq!(
44        *recorder.collection().iter().collect::<Vec<_>>(),
45        RTree::bulk_load(vec![(1, 1), (2, 2)])
46            .iter()
47            .collect::<Vec<_>>()
48    );
49
50    undoredo.redo(&mut recorder);
51    assert_eq!(
52        *recorder.collection().iter().collect::<Vec<_>>(),
53        RTree::bulk_load(vec![(1, 1), (2, 2), (3, 3)])
54            .iter()
55            .collect::<Vec<_>>()
56    );
57}
58
59#[test]
60fn test() {
61    main();
62}