string splitting by regex: add test case

This commit is contained in:
Moritz Bunkus 2020-08-20 21:21:39 +02:00
parent 8080126194
commit de7b3dd8c5
No known key found for this signature in database
GPG Key ID: 74AF00ADF2E32C85

View File

@ -88,4 +88,97 @@ TEST(StringsEditing, SplittingByStringPatternAtEnd) {
EXPECT_EQ(""s, r[3]);
}
TEST(StringsEditing, SplittingRegexByStringEmptyPattern) {
auto r = mtx::string::split("This, and that, is stuff."s, std::regex{""s});
ASSERT_EQ(27, r.size());
EXPECT_EQ("", r[0]);
EXPECT_EQ("T", r[1]);
EXPECT_EQ("h", r[2]);
EXPECT_EQ("i", r[3]);
EXPECT_EQ("s", r[4]);
EXPECT_EQ(",", r[5]);
EXPECT_EQ(" ", r[6]);
EXPECT_EQ("a", r[7]);
EXPECT_EQ("n", r[8]);
EXPECT_EQ("d", r[9]);
EXPECT_EQ(" ", r[10]);
EXPECT_EQ("t", r[11]);
EXPECT_EQ("h", r[12]);
EXPECT_EQ("a", r[13]);
EXPECT_EQ("t", r[14]);
EXPECT_EQ(",", r[15]);
EXPECT_EQ(" ", r[16]);
EXPECT_EQ("i", r[17]);
EXPECT_EQ("s", r[18]);
EXPECT_EQ(" ", r[19]);
EXPECT_EQ("s", r[20]);
EXPECT_EQ("t", r[21]);
EXPECT_EQ("u", r[22]);
EXPECT_EQ("f", r[23]);
EXPECT_EQ("f", r[24]);
EXPECT_EQ(".", r[25]);
EXPECT_EQ("", r[26]);
}
TEST(StringsEditing, SplittingRegexByStringEmptyText) {
auto r = mtx::string::split(""s, std::regex{","s});
ASSERT_EQ(1, r.size());
EXPECT_EQ(""s, r[0]);
}
TEST(StringsEditing, SplittingRegexByStringOneCharPattern) {
auto r = mtx::string::split("This, and that, is stuff."s, std::regex{","s});
ASSERT_EQ(3, r.size());
EXPECT_EQ("This"s, r[0]);
EXPECT_EQ(" and that"s, r[1]);
EXPECT_EQ(" is stuff."s, r[2]);
}
TEST(StringsEditing, SplittingRegexByStringTwoCharsPattern) {
auto r = mtx::string::split("This, and that, is stuff."s, std::regex{", *"s});
ASSERT_EQ(3, r.size());
EXPECT_EQ("This"s, r[0]);
EXPECT_EQ("and that"s, r[1]);
EXPECT_EQ("is stuff."s, r[2]);
}
TEST(StringsEditing, SplittingRegexByStringLimit2) {
auto r = mtx::string::split("This, and that, is stuff."s, std::regex{", *"s}, 2);
ASSERT_EQ(2, r.size());
EXPECT_EQ("This"s, r[0]);
EXPECT_EQ("and that, is stuff."s, r[1]);
}
TEST(StringsEditing, SplittingRegexByStringLimit1) {
auto r = mtx::string::split("This, and that, is stuff."s, std::regex{", *"s}, 1);
ASSERT_EQ(1, r.size());
EXPECT_EQ("This, and that, is stuff."s, r[0]);
}
TEST(StringsEditing, SplittingRegexByStringPatternAtStart) {
auto r = mtx::string::split(",This, and that, is stuff."s, std::regex{", *"s});
ASSERT_EQ(4, r.size());
EXPECT_EQ(""s, r[0]);
EXPECT_EQ("This"s, r[1]);
EXPECT_EQ("and that"s, r[2]);
EXPECT_EQ("is stuff."s, r[3]);
}
TEST(StringsEditing, SplittingRegexByStringPatternAtEnd) {
auto r = mtx::string::split("This, and that, is stuff.,"s, std::regex{", *"s});
ASSERT_EQ(4, r.size());
EXPECT_EQ("This"s, r[0]);
EXPECT_EQ("and that"s, r[1]);
EXPECT_EQ("is stuff."s, r[2]);
EXPECT_EQ(""s, r[3]);
}
}