diff --git a/test/src/test_Buffer.cc b/test/src/test_Buffer.cc index b00a57a..76384dc 100644 --- a/test/src/test_Buffer.cc +++ b/test/src/test_Buffer.cc @@ -138,11 +138,14 @@ TEST(BufferTest, adds_a_newline_after_inserted_character_when_inserting_in_an_em Buffer b; auto it = b.add_cursor(); EXPECT_EQ(0u, it->offset()); + EXPECT_FALSE(it->valid()); b.enter_insert_mode(); b.insert_code_point(*it, C('J')); EXPECT_EQ(ss("J\n"), b.get_string()); EXPECT_EQ(C('\n'), **it); + EXPECT_TRUE(it->valid()); + EXPECT_EQ(0u, it->line()); b.exit_insert_mode(); } @@ -465,3 +468,31 @@ TEST(BufferTest, inserting_at_beginning_and_end_of_line_in_insert_mode_creates_p b.redo(); EXPECT_EQ("12abc34\ndef\n", b.get_string()); } + +TEST(BufferTest, inserts_and_undoes_properly_starting_from_empty_buffer) +{ + Buffer b; + auto it = b.add_cursor(); + + b.enter_insert_mode(); + EXPECT_FALSE(it->valid()); + b.insert_code_point(*it, C('1')); + EXPECT_TRUE(it->valid()); + EXPECT_EQ(0u, it->line()); + b.insert_code_point(*it, C('\n')); + EXPECT_EQ(1u, it->line()); + b.insert_code_point(*it, C('2')); + EXPECT_EQ(1u, it->line()); + b.insert_code_point(*it, C('\n')); + EXPECT_EQ(2u, it->line()); + b.insert_code_point(*it, C('3')); + EXPECT_EQ(2u, it->line()); + b.exit_insert_mode(); + + EXPECT_EQ(2u, it->line()); + EXPECT_EQ("1\n2\n3\n", b.get_string()); + + b.undo(); + EXPECT_EQ("", b.get_string()); + EXPECT_EQ(0u, it->line()); +}