From: Marcin Pawlowski Date: Fri, 18 Jul 2014 04:50:01 +0000 (-0700) Subject: extend folly::split X-Git-Tag: v0.22.0~445 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=ce5e83f4c897dee859abb01a84d57559538a8628;p=folly.git 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 --- diff --git a/folly/String.h b/folly/String.h index 3df3f9c4..0b2b8646 100644 --- a/folly/String.h +++ b/folly/String.h @@ -448,7 +448,8 @@ void splitTo(const Delim& delimiter, template using IsSplitTargetType = std::integral_constant::value || - std::is_same::value>; + std::is_same::value || + IsSomeString::value>; template('.', "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('.', "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('.', "a.b.c", a, b, c)); + EXPECT_EQ("a", a); + EXPECT_EQ("b", b); + EXPECT_EQ("c", c); + EXPECT_FALSE(folly::split('.', "a.b", a, b, c)); + EXPECT_TRUE(folly::split('.', "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('.', "a.b", a, b)); + EXPECT_EQ("a", a); + EXPECT_EQ("b", b); + EXPECT_FALSE(folly::split('.', "a", a, b)); + EXPECT_TRUE(folly::split('.', "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;