add unit test for basic undo/redo of inserts
This commit is contained in:
parent
e98454c771
commit
441c33821e
@ -139,3 +139,57 @@ TEST(BufferTest, adds_a_newline_after_inserted_character_when_inserting_in_an_em
|
|||||||
EXPECT_EQ(ss("J\n"), b.get_string());
|
EXPECT_EQ(ss("J\n"), b.get_string());
|
||||||
EXPECT_EQ(C('\n'), **it);
|
EXPECT_EQ(C('\n'), **it);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(BufferTest, allows_undo_and_redo_of_inserts)
|
||||||
|
{
|
||||||
|
std::string s("abc\ndef\nghi\n");
|
||||||
|
Buffer b((const uint8_t *)&s[0], s.size());
|
||||||
|
auto it = b.add_cursor();
|
||||||
|
|
||||||
|
b.enter_insert_mode();
|
||||||
|
b.insert_code_point(*it, C('1'));
|
||||||
|
b.insert_code_point(*it, C('2'));
|
||||||
|
b.exit_insert_mode();
|
||||||
|
EXPECT_EQ(ss("12abc\ndef\nghi\n"), b.get_string());
|
||||||
|
EXPECT_EQ(C('a'), **it);
|
||||||
|
|
||||||
|
it->go_next_line();
|
||||||
|
it->go_right_in_line(false);
|
||||||
|
b.enter_insert_mode();
|
||||||
|
b.insert_code_point(*it, C('3'));
|
||||||
|
b.exit_insert_mode();
|
||||||
|
EXPECT_EQ(ss("12abc\nd3ef\nghi\n"), b.get_string());
|
||||||
|
EXPECT_EQ(C('e'), **it);
|
||||||
|
|
||||||
|
it->go_end_of_line(true);
|
||||||
|
b.insert_code_point(*it, C('$'));
|
||||||
|
EXPECT_EQ(ss("12abc\nd3ef$\nghi\n"), b.get_string());
|
||||||
|
EXPECT_EQ(C('\n'), **it);
|
||||||
|
|
||||||
|
it->go_start_of_line();
|
||||||
|
EXPECT_EQ(C('d'), **it);
|
||||||
|
|
||||||
|
b.undo();
|
||||||
|
EXPECT_EQ(ss("12abc\nd3ef\nghi\n"), b.get_string());
|
||||||
|
EXPECT_EQ(C('d'), **it);
|
||||||
|
|
||||||
|
b.undo();
|
||||||
|
EXPECT_EQ(ss("12abc\ndef\nghi\n"), b.get_string());
|
||||||
|
EXPECT_EQ(C('d'), **it);
|
||||||
|
|
||||||
|
b.undo();
|
||||||
|
EXPECT_EQ(ss("abc\ndef\nghi\n"), b.get_string());
|
||||||
|
EXPECT_EQ(C('d'), **it);
|
||||||
|
|
||||||
|
b.redo();
|
||||||
|
EXPECT_EQ(ss("12abc\ndef\nghi\n"), b.get_string());
|
||||||
|
EXPECT_EQ(C('d'), **it);
|
||||||
|
|
||||||
|
b.redo();
|
||||||
|
EXPECT_EQ(ss("12abc\nd3ef\nghi\n"), b.get_string());
|
||||||
|
EXPECT_EQ(C('d'), **it);
|
||||||
|
|
||||||
|
b.redo();
|
||||||
|
EXPECT_EQ(ss("12abc\nd3ef$\nghi\n"), b.get_string());
|
||||||
|
EXPECT_EQ(C('d'), **it);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user