improve GapBuffer test coverage
This commit is contained in:
parent
24eb47b0ad
commit
e78a3672c5
@ -56,7 +56,7 @@ bool Buffer::load_from_file(const char * filename)
|
||||
return false;
|
||||
}
|
||||
|
||||
size_t buffer_size = ((unsigned long)file_size + 2u * System::page_size) & System::page_base_mask;
|
||||
size_t buffer_size = ((unsigned long)file_size + System::page_size + (64u * 1024u)) & System::page_base_mask;
|
||||
uint8_t * buffer = (uint8_t *)System::alloc_pages(buffer_size >> System::page_size_log);
|
||||
if (buffer == NULL)
|
||||
{
|
||||
|
@ -4,7 +4,8 @@
|
||||
|
||||
GapBuffer::GapBuffer()
|
||||
{
|
||||
m_buffer = (uint8_t *)System::alloc_pages(1u);
|
||||
int num_pages = (64u * 1024u + System::page_size - 1u) >> System::page_size_log;
|
||||
m_buffer = (uint8_t *)System::alloc_pages(num_pages);
|
||||
m_buffer_size = System::page_size;
|
||||
m_size = 0u;
|
||||
m_gap_position = 0u;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#include "gtest/gtest.h"
|
||||
#include "GapBuffer.h"
|
||||
#include "System.h"
|
||||
#include <string>
|
||||
|
||||
TEST(GapBufferTest, creates_an_empty_buffer)
|
||||
{
|
||||
@ -22,12 +23,16 @@ TEST(GapBufferTest, allows_inserting)
|
||||
GapBuffer gp;
|
||||
|
||||
gp.insert(0u, (const uint8_t *)"test", 4u);
|
||||
EXPECT_EQ("test", gp.get_string());
|
||||
EXPECT_EQ('s', *gp.address(2u));
|
||||
EXPECT_EQ(4u, gp.size());
|
||||
EXPECT_EQ("test", gp.get_string());
|
||||
|
||||
gp.insert(2u, (const uint8_t *)"12", 2u);
|
||||
EXPECT_EQ("te12st", gp.get_string());
|
||||
/* The gap should be between the '2' and 's' now */
|
||||
EXPECT_GT(gp.address(4u) - gp.address(3u), 100u);
|
||||
EXPECT_EQ('s', *gp.address(4u));
|
||||
EXPECT_EQ(6u, gp.size());
|
||||
EXPECT_EQ("te12st", gp.get_string());
|
||||
|
||||
gp.insert(0u, (const uint8_t *)"-", 1u);
|
||||
EXPECT_EQ("-te12st", gp.get_string());
|
||||
@ -37,3 +42,18 @@ TEST(GapBufferTest, allows_inserting)
|
||||
EXPECT_EQ("-te12st!", gp.get_string());
|
||||
EXPECT_EQ(8u, gp.size());
|
||||
}
|
||||
|
||||
TEST(GapBufferTest, allocates_more_memory_and_copies_buffer_contents_when_needed)
|
||||
{
|
||||
GapBuffer gp;
|
||||
std::string s("ABCD");
|
||||
|
||||
gp.insert(0u, (const uint8_t *)"ABCDEFGH", 8u);
|
||||
for (size_t i = 0u; i < (80u * 1024u); i++)
|
||||
{
|
||||
gp.insert(4u, (const uint8_t *)"-", 1u);
|
||||
s += "-";
|
||||
}
|
||||
s += "EFGH";
|
||||
EXPECT_EQ(s, gp.get_string());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user