add unit test for basic undo/redo of erases
This commit is contained in:
parent
441c33821e
commit
6ba280e75d
@ -193,3 +193,52 @@ TEST(BufferTest, allows_undo_and_redo_of_inserts)
|
||||
EXPECT_EQ(ss("12abc\nd3ef$\nghi\n"), b.get_string());
|
||||
EXPECT_EQ(C('d'), **it);
|
||||
}
|
||||
|
||||
TEST(BufferTest, allows_undo_and_redo_of_erases)
|
||||
{
|
||||
std::string s("abc\ndef\nghi\n");
|
||||
Buffer b((const uint8_t *)&s[0], s.size());
|
||||
auto it = b.add_cursor();
|
||||
|
||||
b.erase_code_point(*it);
|
||||
EXPECT_EQ(ss("bc\ndef\nghi\n"), b.get_string());
|
||||
EXPECT_EQ(C('b'), **it);
|
||||
|
||||
it->go_next_line();
|
||||
it->go_right_in_line(false);
|
||||
b.erase_code_point(*it);
|
||||
EXPECT_EQ(ss("bc\ndf\nghi\n"), b.get_string());
|
||||
EXPECT_EQ(C('f'), **it);
|
||||
|
||||
it->go_end_of_line(true);
|
||||
b.erase_code_point(*it);
|
||||
EXPECT_EQ(ss("bc\ndfghi\n"), b.get_string());
|
||||
EXPECT_EQ(C('g'), **it);
|
||||
|
||||
it->go_left_in_line();
|
||||
EXPECT_EQ(C('f'), **it);
|
||||
|
||||
b.undo();
|
||||
EXPECT_EQ(ss("bc\ndf\nghi\n"), b.get_string());
|
||||
EXPECT_EQ(C('f'), **it);
|
||||
|
||||
b.undo();
|
||||
EXPECT_EQ(ss("bc\ndef\nghi\n"), b.get_string());
|
||||
EXPECT_EQ(C('f'), **it);
|
||||
|
||||
b.undo();
|
||||
EXPECT_EQ(ss("abc\ndef\nghi\n"), b.get_string());
|
||||
EXPECT_EQ(C('f'), **it);
|
||||
|
||||
b.redo();
|
||||
EXPECT_EQ(ss("bc\ndef\nghi\n"), b.get_string());
|
||||
EXPECT_EQ(C('f'), **it);
|
||||
|
||||
b.redo();
|
||||
EXPECT_EQ(ss("bc\ndf\nghi\n"), b.get_string());
|
||||
EXPECT_EQ(C('f'), **it);
|
||||
|
||||
b.redo();
|
||||
EXPECT_EQ(ss("bc\ndfghi\n"), b.get_string());
|
||||
EXPECT_EQ(C('f'), **it);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user