Add Buffer::Iterator functions to move forward/backward on/up to characters in a line

This commit is contained in:
josh committed 2017-11-21 22:02:53 -05:00
1 parent 32b272b75c
commit 3c6b3bc49e
3 files changed
+113

No files matched your search

+35
View File
@@ -109,6 +109,41 @@ TEST(BufferTest, allows_navigating_using_iterators2)
EXPECT_EQ(C('a'), **iterator);
}
TEST(BufferTest, allows_navigating_using_iterators3)
{
std::string s("abcabc\n");
Buffer b((const uint8_t *)&s[0], s.size());
auto it = b.add_cursor();
EXPECT_FALSE(it->go_forward_in_line_up_to_char(C('d')));
EXPECT_EQ(0u, it->offset());
EXPECT_FALSE(it->go_forward_in_line_up_to_char(C('b')));
EXPECT_EQ(0u, it->offset());
EXPECT_TRUE(it->go_forward_in_line_up_to_char(C('c')));
EXPECT_EQ(1u, it->offset());
EXPECT_TRUE(it->go_forward_in_line_on_to_char(C('c')));
EXPECT_EQ(2u, it->offset());
EXPECT_TRUE(it->go_forward_in_line_on_to_char(C('c')));
EXPECT_EQ(5u, it->offset());
EXPECT_FALSE(it->go_forward_in_line_on_to_char(C('c')));
EXPECT_EQ(5u, it->offset());
EXPECT_FALSE(it->go_backward_in_line_up_to_char(C('d')));
EXPECT_EQ(5u, it->offset());
EXPECT_FALSE(it->go_backward_in_line_up_to_char(C('b')));
EXPECT_EQ(5u, it->offset());
EXPECT_TRUE(it->go_backward_in_line_up_to_char(C('a')));
EXPECT_EQ(4u, it->offset());
EXPECT_FALSE(it->go_backward_in_line_on_to_char(C('d')));
EXPECT_EQ(4u, it->offset());
EXPECT_TRUE(it->go_backward_in_line_on_to_char(C('a')));
EXPECT_EQ(3u, it->offset());
EXPECT_TRUE(it->go_backward_in_line_on_to_char(C('a')));
EXPECT_EQ(0u, it->offset());
}
TEST(BufferTest, allows_inserting_and_erasing_characters)
{
std::string s("abc\ndef\nghi\n");