Commit ce5e83f4 authored by Marcin Pawlowski's avatar Marcin Pawlowski Committed by Chip Turner

extend folly::split

Summary:
see task:
https://our.intern.facebook.com/intern/tasks/?t=4723861

Test Plan: unit tests

Reviewed By: marcelo.juchem@fb.com

FB internal diff: D1443223

Tasks: 4723861
parent 18fd7eb1
......@@ -448,7 +448,8 @@ void splitTo(const Delim& delimiter,
template <class T>
using IsSplitTargetType = std::integral_constant<bool,
std::is_arithmetic<T>::value ||
std::is_same<T, StringPiece>::value>;
std::is_same<T, StringPiece>::value ||
IsSomeString<T>::value>;
template<bool exact = true,
class Delim,
......
......@@ -902,6 +902,49 @@ TEST(Split, fixed) {
EXPECT_FALSE(folly::split('.', "a.b", a));
}
TEST(Split, std_string_fixed) {
std::string a, b, c, d;
EXPECT_TRUE(folly::split<false>('.', "a.b.c.d", a, b, c, d));
EXPECT_TRUE(folly::split<false>('.', "a.b.c", a, b, c));
EXPECT_TRUE(folly::split<false>('.', "a.b", a, b));
EXPECT_TRUE(folly::split<false>('.', "a", a));
EXPECT_TRUE(folly::split('.', "a.b.c.d", a, b, c, d));
EXPECT_TRUE(folly::split('.', "a.b.c", a, b, c));
EXPECT_TRUE(folly::split('.', "a.b", a, b));
EXPECT_TRUE(folly::split('.', "a", a));
EXPECT_TRUE(folly::split<false>('.', "a.b.c", a, b, c));
EXPECT_EQ("a", a);
EXPECT_EQ("b", b);
EXPECT_EQ("c", c);
EXPECT_FALSE(folly::split<false>('.', "a.b", a, b, c));
EXPECT_TRUE(folly::split<false>('.', "a.b.c", a, b));
EXPECT_EQ("a", a);
EXPECT_EQ("b.c", b);
EXPECT_TRUE(folly::split('.', "a.b.c", a, b, c));
EXPECT_EQ("a", a);
EXPECT_EQ("b", b);
EXPECT_EQ("c", c);
EXPECT_FALSE(folly::split('.', "a.b.c", a, b));
EXPECT_FALSE(folly::split('.', "a.b", a, b, c));
EXPECT_TRUE(folly::split<false>('.', "a.b", a, b));
EXPECT_EQ("a", a);
EXPECT_EQ("b", b);
EXPECT_FALSE(folly::split<false>('.', "a", a, b));
EXPECT_TRUE(folly::split<false>('.', "a.b", a));
EXPECT_EQ("a.b", a);
EXPECT_TRUE(folly::split('.', "a.b", a, b));
EXPECT_EQ("a", a);
EXPECT_EQ("b", b);
EXPECT_FALSE(folly::split('.', "a", a, b));
EXPECT_FALSE(folly::split('.', "a.b", a));
}
TEST(Split, fixed_convert) {
StringPiece a, d;
int b;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment