Add Buffer::n_lines()

This commit is contained in:
Josh Holtrop 2018-03-26 10:34:19 -04:00
parent 8fbd7252de
commit 65be7c3a6f
3 changed files with 14 additions and 0 deletions

View File

@ -502,3 +502,14 @@ void Buffer::set_filename(const std::string & filename)
{ {
m_filename = std::make_shared<std::string>(filename); m_filename = std::make_shared<std::string>(filename);
} }
size_t Buffer::n_lines() const
{
auto it = end();
it.go_back();
if (it.valid())
{
return it.line() + 1u;
}
return 0u;
}

View File

@ -192,6 +192,7 @@ public:
void pop_operation(); void pop_operation();
void undo(); void undo();
void redo(); void redo();
size_t n_lines() const;
#ifndef ENABLE_TESTING #ifndef ENABLE_TESTING
protected: protected:

View File

@ -33,11 +33,13 @@ TEST(BufferTest, writes_an_empty_file_for_an_empty_buffer)
Buffer b; Buffer b;
ASSERT_TRUE(b.write_to_file("test/tmp/f")); ASSERT_TRUE(b.write_to_file("test/tmp/f"));
TestSupport::compare_files("test/files/empty.txt", "test/tmp/f"); TestSupport::compare_files("test/files/empty.txt", "test/tmp/f");
ASSERT_EQ(0u, b.n_lines());
} }
TEST(BufferTest, allows_navigating_using_iterators) TEST(BufferTest, allows_navigating_using_iterators)
{ {
Buffer b("test/files/line_endings/lf_format.txt"); Buffer b("test/files/line_endings/lf_format.txt");
ASSERT_EQ(2u, b.n_lines());
auto iterator = b.add_cursor(); auto iterator = b.add_cursor();
EXPECT_EQ(0u, iterator->line()); EXPECT_EQ(0u, iterator->line());