Add some unit tests for StringExtractor::GetNameColonValue.

These are helpful on their own, but will be even more useful
once the GetNameColonValue is updated to return StringRefs
instead of std::strings.

llvm-svn: 279919
This commit is contained in:
Zachary Turner 2016-08-27 16:35:15 +00:00
parent 0b2628df1a
commit 05c4ceba3d
1 changed files with 53 additions and 0 deletions

View File

@ -403,4 +403,57 @@ TEST_F (StringExtractorTest, GetHexBytesAvail_Partial)
ASSERT_EQ('2', *ex.Peek());
}
TEST_F(StringExtractorTest, GetNameColonValueSuccess)
{
const char kNameColonPairs[] = "key1:value1;key2:value2;";
StringExtractor ex(kNameColonPairs);
std::string name;
std::string value;
EXPECT_TRUE(ex.GetNameColonValue(name, value));
EXPECT_EQ("key1", name);
EXPECT_EQ("value1", value);
EXPECT_TRUE(ex.GetNameColonValue(name, value));
EXPECT_EQ("key2", name);
EXPECT_EQ("value2", value);
EXPECT_EQ(0, ex.GetBytesLeft());
}
TEST_F(StringExtractorTest, GetNameColonValueContainsColon)
{
const char kNameColonPairs[] = "key1:value1:value2;key2:value3;";
StringExtractor ex(kNameColonPairs);
std::string name;
std::string value;
EXPECT_TRUE(ex.GetNameColonValue(name, value));
EXPECT_EQ("key1", name);
EXPECT_EQ("value1:value2", value);
EXPECT_TRUE(ex.GetNameColonValue(name, value));
EXPECT_EQ("key2", name);
EXPECT_EQ("value3", value);
EXPECT_EQ(0, ex.GetBytesLeft());
}
TEST_F(StringExtractorTest, GetNameColonValueNoSemicolon)
{
const char kNameColonPairs[] = "key1:value1";
StringExtractor ex(kNameColonPairs);
std::string name;
std::string value;
EXPECT_FALSE(ex.GetNameColonValue(name, value));
EXPECT_EQ(0, ex.GetBytesLeft());
}
TEST_F(StringExtractorTest, GetNameColonValueNoColon)
{
const char kNameColonPairs[] = "key1value1;";
StringExtractor ex(kNameColonPairs);
std::string name;
std::string value;
EXPECT_FALSE(ex.GetNameColonValue(name, value));
EXPECT_EQ(0, ex.GetBytesLeft());
}