17af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com// Copyright 2013 The Chromium Authors. All rights reserved.
27af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com// Use of this source code is governed by a BSD-style license that can be
37af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com// found in the LICENSE file.
4ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com//
5ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com// The original source code is from:
6ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com// http://src.chromium.org/viewvc/chrome/trunk/src/base/strings/string_split_unittest.cc?revision=216633
77af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
8ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com#include "util/string_split.h"
97af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
10ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com#include <string>
11ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com#include <vector>
127af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
13ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com#include <gtest/gtest.h>
147af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
157af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.comnamespace {
167af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
17ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.comusing i18n::addressinput::SplitString;
187af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
19ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.comTEST(StringSplitTest, SplitString) {
20ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  std::vector<std::string> r;
217af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
22ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  SplitString(std::string(), ',', &r);
237af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  EXPECT_EQ(0U, r.size());
247af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
25ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  SplitString("a,b,c", ',', &r);
267af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  ASSERT_EQ(3U, r.size());
27ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[0], "a");
28ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[1], "b");
29ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[2], "c");
307af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
31ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  SplitString("a, b, c", ',', &r);
327af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  ASSERT_EQ(3U, r.size());
33ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[0], "a");
34ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[1], " b");
35ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[2], " c");
367af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
37ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  SplitString("a,,c", ',', &r);
387af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  ASSERT_EQ(3U, r.size());
39ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[0], "a");
40ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[1], "");
41ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[2], "c");
427af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
43ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  SplitString("   ", '*', &r);
44ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(1U, r.size());
457af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
46ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  SplitString("foo", '*', &r);
477af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  ASSERT_EQ(1U, r.size());
48ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[0], "foo");
497af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
50ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  SplitString("foo ,", ',', &r);
517af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  ASSERT_EQ(2U, r.size());
52ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[0], "foo ");
53ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[1], "");
547af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
55ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  SplitString(",", ',', &r);
567af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  ASSERT_EQ(2U, r.size());
57ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[0], "");
58ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[1], "");
597af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
60ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  SplitString("\t\ta\t", '\t', &r);
617af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  ASSERT_EQ(4U, r.size());
62ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[0], "");
63ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[1], "");
64ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[2], "a");
65ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[3], "");
667af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
67ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  SplitString("\ta\t\nb\tcc", '\n', &r);
687af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  ASSERT_EQ(2U, r.size());
69ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[0], "\ta\t");
70ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  EXPECT_EQ(r[1], "b\tcc");
717af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
72ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  SplitString("   ", '*', &r);
737af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  ASSERT_EQ(1U, r.size());
747af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  EXPECT_EQ(r[0], "   ");
757af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
76ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  SplitString("\t  \ta\t ", '\t', &r);
777af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  ASSERT_EQ(4U, r.size());
787af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  EXPECT_EQ(r[0], "");
797af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  EXPECT_EQ(r[1], "  ");
807af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  EXPECT_EQ(r[2], "a");
817af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  EXPECT_EQ(r[3], " ");
827af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
83ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com  SplitString("\ta\t\nb\tcc", '\n', &r);
847af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  ASSERT_EQ(2U, r.size());
857af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  EXPECT_EQ(r[0], "\ta\t");
867af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com  EXPECT_EQ(r[1], "b\tcc");
877af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com}
887af2afbf8abd201b5cad73ca1275e1b03d91efcaroubert@google.com
89ff46a74157ff7b73490fd1fb909d6151fcafa353roubert@google.com}  // namespace
90