Fix Buffer::Iterator::go_previous_line()
This commit is contained in:
parent
3c73b9ae97
commit
1862d867f6
@ -153,18 +153,16 @@ bool Buffer::Iterator::go_right_in_line(bool allow_eol)
|
|||||||
bool Buffer::Iterator::go_previous_line()
|
bool Buffer::Iterator::go_previous_line()
|
||||||
{
|
{
|
||||||
Iterator i2 = *this;
|
Iterator i2 = *this;
|
||||||
i2.go_back();
|
while (i2.valid())
|
||||||
while (i2.valid() && (*i2 != '\n'))
|
|
||||||
{
|
{
|
||||||
i2.go_back();
|
i2.go_back();
|
||||||
}
|
if (*i2 == '\n')
|
||||||
i2.go_back();
|
{
|
||||||
if (i2.valid())
|
i2.go_start_of_line();
|
||||||
{
|
m_line--;
|
||||||
m_line--;
|
m_offset = i2.m_offset;
|
||||||
m_offset = i2.m_offset;
|
return true;
|
||||||
go_start_of_line();
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
5
test/files/blank_lines.txt
Normal file
5
test/files/blank_lines.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
abc
|
||||||
|
|
||||||
|
def
|
||||||
|
|
||||||
|
end
|
@ -67,3 +67,28 @@ TEST(BufferTest, allows_navigating_using_iterators)
|
|||||||
EXPECT_EQ(0u, iterator->line());
|
EXPECT_EQ(0u, iterator->line());
|
||||||
ASSERT_EQ((uint32_t)'H', **iterator);
|
ASSERT_EQ((uint32_t)'H', **iterator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(BufferTest, allows_navigating_using_iterators2)
|
||||||
|
{
|
||||||
|
Buffer b("test/files/blank_lines.txt");
|
||||||
|
auto iterator = b.add_iterator();
|
||||||
|
|
||||||
|
EXPECT_EQ(0u, iterator->line());
|
||||||
|
EXPECT_EQ((uint32_t)'a', **iterator);
|
||||||
|
|
||||||
|
EXPECT_TRUE(iterator->go_next_line());
|
||||||
|
EXPECT_EQ(1u, iterator->line());
|
||||||
|
EXPECT_EQ((uint32_t)'\n', **iterator);
|
||||||
|
|
||||||
|
EXPECT_TRUE(iterator->go_next_line());
|
||||||
|
EXPECT_EQ(2u, iterator->line());
|
||||||
|
EXPECT_EQ((uint32_t)'d', **iterator);
|
||||||
|
|
||||||
|
EXPECT_TRUE(iterator->go_previous_line());
|
||||||
|
EXPECT_EQ(1u, iterator->line());
|
||||||
|
EXPECT_EQ((uint32_t)'\n', **iterator);
|
||||||
|
|
||||||
|
EXPECT_TRUE(iterator->go_previous_line());
|
||||||
|
EXPECT_EQ(0u, iterator->line());
|
||||||
|
EXPECT_EQ((uint32_t)'a', **iterator);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user