diff options
Diffstat (limited to 'chromium/components/url_pattern_index/string_splitter_unittest.cc')
-rw-r--r-- | chromium/components/url_pattern_index/string_splitter_unittest.cc | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/chromium/components/url_pattern_index/string_splitter_unittest.cc b/chromium/components/url_pattern_index/string_splitter_unittest.cc new file mode 100644 index 00000000000..d2d2938c882 --- /dev/null +++ b/chromium/components/url_pattern_index/string_splitter_unittest.cc @@ -0,0 +1,82 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/url_pattern_index/string_splitter.h" + +#include <string> +#include <vector> + +#include "base/strings/string_piece.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace url_pattern_index { + +namespace { +bool IsTestSeparator(char c) { + return c == ' ' || c == '\t' || c == ','; +} +} + +TEST(StringSplitterTest, SplitWithEmptyResult) { + const char* const kStrings[] = { + "", " ", "\t", ",", " \t ", ",,,,", "\t\t\t", + }; + + for (const char* string : kStrings) { + auto splitter = CreateStringSplitter(string, IsTestSeparator); + // Explicitly verify both operator== and operator!=. + EXPECT_TRUE(splitter.begin() == splitter.end()); + EXPECT_FALSE(splitter.begin() != splitter.end()); + } +} + +TEST(StringSplitterTest, SplitOneWord) { + const char* const kLongStrings[] = { + "word", " word ", " word", "word ", ",word,", + "\tword\t", " word ", "word ", " word", ", word, \t", + }; + const char* const kShortStrings[] = { + "w", " w ", " w", "w ", " w ", " w", "w ", ", w, ", "w, \t", + }; + + const char kLongWord[] = "word"; + const char kShortWord[] = "w"; + + auto expect_word = [](const char* text, const char* word) { + auto splitter = CreateStringSplitter(text, IsTestSeparator); + // Explicitly verify both operator== and operator!=. + EXPECT_TRUE(splitter.begin() != splitter.end()); + EXPECT_FALSE(splitter.begin() == splitter.end()); + + EXPECT_EQ(splitter.end(), ++splitter.begin()); + EXPECT_EQ(word, *splitter.begin()); + + auto iterator = splitter.begin(); + EXPECT_EQ(splitter.begin(), iterator++); + EXPECT_EQ(splitter.end(), iterator); + }; + + for (const char* string : kLongStrings) + expect_word(string, kLongWord); + for (const char* string : kShortStrings) + expect_word(string, kShortWord); +} + +TEST(StringSplitterTest, SplitThreeWords) { + const char* const kStrings[] = { + "one two three", " one two three ", " one two, three", + "one,two\t\t three", "one, two, three, ", + }; + const std::vector<base::StringPiece> kResults = { + "one", "two", "three", + }; + + for (const char* string : kStrings) { + auto splitter = CreateStringSplitter(string, IsTestSeparator); + std::vector<base::StringPiece> tokens(splitter.begin(), splitter.end()); + EXPECT_EQ(kResults, tokens); + } +} + +} // namespace url_pattern_index |