From ce5e83f4c897dee859abb01a84d57559538a8628 Mon Sep 17 00:00:00 2001 From: Marcin Pawlowski Date: Thu, 17 Jul 2014 21:50:01 -0700 Subject: [PATCH] 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 --- folly/String.h | 3 ++- folly/test/StringTest.cpp | 43 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) 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; -- 2.34.1