improve GapBuffer test coverage

This commit is contained in:
josh committed 2016-12-18 19:20:48 -05:00
1 parent 24eb47b0ad
commit e78a3672c5
3 files changed
+25 -4

No files matched your search

+22 -2
View File
@@ -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());
}