fn main() {
use piece_tree::PieceTree;
let mut tree = PieceTree::new();
let mut cursor = 0;
tree.insert(cursor, "Hello "); cursor += 6;
tree.insert(cursor, "World!"); cursor += 6;
let snap = tree.take_snapshot(cursor);
tree.begin_undo_group(cursor);
tree.insert_no_commit(cursor, " Everything"); cursor += 11;
tree.insert_no_commit(cursor, " is great!"); cursor += 10;
tree.end_undo_group();
assert_eq!(tree.to_string(), "Hello World! Everything is great!");
cursor = tree.try_undo(cursor).unwrap();
assert_eq!(tree.to_string(), "Hello World!");
cursor = tree.try_redo(cursor).unwrap();
assert_eq!(tree.to_string(), "Hello World! Everything is great!");
cursor = tree.snap_to(snap, cursor);
assert_eq!(tree.to_string(), "Hello World!");
cursor = tree.try_undo(cursor).unwrap();
assert_eq!(tree.to_string(), "Hello World! Everything is great!");
}