| Index: net/base/lookup_string_in_fixed_set_unittest.cc
|
| diff --git a/net/base/lookup_string_in_fixed_set_unittest.cc b/net/base/lookup_string_in_fixed_set_unittest.cc
|
| deleted file mode 100644
|
| index 612f6406eaaa4784bb278d996a8b63d126a98741..0000000000000000000000000000000000000000
|
| --- a/net/base/lookup_string_in_fixed_set_unittest.cc
|
| +++ /dev/null
|
| @@ -1,251 +0,0 @@
|
| -// Copyright 2015 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 "net/base/lookup_string_in_fixed_set.h"
|
| -
|
| -#include <string.h>
|
| -
|
| -#include <algorithm>
|
| -#include <limits>
|
| -#include <ostream>
|
| -#include <utility>
|
| -#include <vector>
|
| -
|
| -#include "base/base_paths.h"
|
| -#include "base/files/file_path.h"
|
| -#include "base/files/file_util.h"
|
| -#include "base/path_service.h"
|
| -#include "base/strings/string_util.h"
|
| -#include "base/strings/stringprintf.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace net {
|
| -namespace {
|
| -namespace test1 {
|
| -#include "net/base/registry_controlled_domains/effective_tld_names_unittest1-inc.cc"
|
| -}
|
| -namespace test3 {
|
| -#include "net/base/registry_controlled_domains/effective_tld_names_unittest3-inc.cc"
|
| -}
|
| -namespace test4 {
|
| -#include "net/base/registry_controlled_domains/effective_tld_names_unittest4-inc.cc"
|
| -}
|
| -namespace test5 {
|
| -#include "net/base/registry_controlled_domains/effective_tld_names_unittest5-inc.cc"
|
| -}
|
| -namespace test6 {
|
| -#include "net/base/registry_controlled_domains/effective_tld_names_unittest6-inc.cc"
|
| -}
|
| -
|
| -struct Expectation {
|
| - const char* const key;
|
| - int value;
|
| -};
|
| -
|
| -void PrintTo(const Expectation& expectation, std::ostream* os) {
|
| - *os << "{\"" << expectation.key << "\", " << expectation.value << "}";
|
| -}
|
| -
|
| -class LookupStringInFixedSetTest : public testing::TestWithParam<Expectation> {
|
| - protected:
|
| - template <size_t N>
|
| - int LookupInGraph(const unsigned char(&graph)[N], const char* key) {
|
| - return LookupStringInFixedSet(graph, N, key, strlen(key));
|
| - }
|
| -};
|
| -
|
| -class Dafsa1Test : public LookupStringInFixedSetTest {};
|
| -
|
| -TEST_P(Dafsa1Test, BasicTest) {
|
| - const Expectation& param = GetParam();
|
| - EXPECT_EQ(param.value, LookupInGraph(test1::kDafsa, param.key));
|
| -}
|
| -
|
| -const Expectation kBasicTestCases[] = {
|
| - {"", -1}, {"j", -1}, {"jp", 0}, {"jjp", -1}, {"jpp", -1},
|
| - {"bar.jp", 2}, {"pref.bar.jp", 1}, {"c", 2}, {"b.c", 1}, {"priv.no", 4},
|
| -};
|
| -
|
| -// Helper function for EnumerateDafsaLanaguage.
|
| -void RecursivelyEnumerateDafsaLanguage(const FixedSetIncrementalLookup& lookup,
|
| - std::vector<char>* sequence,
|
| - std::vector<std::string>* language) {
|
| - int result = lookup.GetResultForCurrentSequence();
|
| - if (result != kDafsaNotFound) {
|
| - std::string line(sequence->begin(), sequence->end());
|
| - line += base::StringPrintf(", %d", result);
|
| - language->emplace_back(std::move(line));
|
| - }
|
| - // Try appending each char value.
|
| - for (char c = std::numeric_limits<char>::min();; ++c) {
|
| - FixedSetIncrementalLookup continued_lookup = lookup;
|
| - if (continued_lookup.Advance(c)) {
|
| - sequence->push_back(c);
|
| - size_t saved_language_size = language->size();
|
| - RecursivelyEnumerateDafsaLanguage(continued_lookup, sequence, language);
|
| - CHECK_LT(saved_language_size, language->size())
|
| - << "DAFSA includes a branch to nowhere at node: "
|
| - << std::string(sequence->begin(), sequence->end());
|
| - sequence->pop_back();
|
| - }
|
| - if (c == std::numeric_limits<char>::max())
|
| - break;
|
| - }
|
| -}
|
| -
|
| -// Uses FixedSetIncrementalLookup to build a vector of every string in the
|
| -// language of the DAFSA.
|
| -template <typename Graph>
|
| -std::vector<std::string> EnumerateDafsaLanguage(const Graph& graph) {
|
| - FixedSetIncrementalLookup query(graph, sizeof(Graph));
|
| - std::vector<char> sequence;
|
| - std::vector<std::string> language;
|
| - RecursivelyEnumerateDafsaLanguage(query, &sequence, &language);
|
| - return language;
|
| -}
|
| -
|
| -INSTANTIATE_TEST_CASE_P(LookupStringInFixedSetTest,
|
| - Dafsa1Test,
|
| - ::testing::ValuesIn(kBasicTestCases));
|
| -
|
| -class Dafsa3Test : public LookupStringInFixedSetTest {};
|
| -
|
| -// This DAFSA is constructed so that labels begin and end with unique
|
| -// characters, which makes it impossible to merge labels. Each inner node
|
| -// is about 100 bytes and a one byte offset can at most add 64 bytes to
|
| -// previous offset. Thus the paths must go over two byte offsets.
|
| -TEST_P(Dafsa3Test, TestDafsaTwoByteOffsets) {
|
| - const Expectation& param = GetParam();
|
| - EXPECT_EQ(param.value, LookupInGraph(test3::kDafsa, param.key));
|
| -}
|
| -
|
| -const Expectation kTwoByteOffsetTestCases[] = {
|
| - {"0________________________________________________________________________"
|
| - "____________________________0",
|
| - 0},
|
| - {"7________________________________________________________________________"
|
| - "____________________________7",
|
| - 4},
|
| - {"a________________________________________________________________________"
|
| - "____________________________8",
|
| - -1},
|
| -};
|
| -
|
| -INSTANTIATE_TEST_CASE_P(LookupStringInFixedSetTest,
|
| - Dafsa3Test,
|
| - ::testing::ValuesIn(kTwoByteOffsetTestCases));
|
| -
|
| -class Dafsa4Test : public LookupStringInFixedSetTest {};
|
| -
|
| -// This DAFSA is constructed so that labels begin and end with unique
|
| -// characters, which makes it impossible to merge labels. The byte array
|
| -// has a size of ~54k. A two byte offset can add at most add 8k to the
|
| -// previous offset. Since we can skip only forward in memory, the nodes
|
| -// representing the return values must be located near the end of the byte
|
| -// array. The probability that we can reach from an arbitrary inner node to
|
| -// a return value without using a three byte offset is small (but not zero).
|
| -// The test is repeated with some different keys and with a reasonable
|
| -// probability at least one of the tested paths has go over a three byte
|
| -// offset.
|
| -TEST_P(Dafsa4Test, TestDafsaThreeByteOffsets) {
|
| - const Expectation& param = GetParam();
|
| - EXPECT_EQ(param.value, LookupInGraph(test4::kDafsa, param.key));
|
| -}
|
| -
|
| -const Expectation kThreeByteOffsetTestCases[] = {
|
| - {"Z6_______________________________________________________________________"
|
| - "_____________________________Z6",
|
| - 0},
|
| - {"Z7_______________________________________________________________________"
|
| - "_____________________________Z7",
|
| - 4},
|
| - {"Za_______________________________________________________________________"
|
| - "_____________________________Z8",
|
| - -1},
|
| -};
|
| -
|
| -INSTANTIATE_TEST_CASE_P(LookupStringInFixedSetTest,
|
| - Dafsa4Test,
|
| - ::testing::ValuesIn(kThreeByteOffsetTestCases));
|
| -
|
| -class Dafsa5Test : public LookupStringInFixedSetTest {};
|
| -
|
| -// This DAFSA is constructed from words with similar prefixes but distinct
|
| -// suffixes. The DAFSA will then form a trie with the implicit source node
|
| -// as root.
|
| -TEST_P(Dafsa5Test, TestDafsaJoinedPrefixes) {
|
| - const Expectation& param = GetParam();
|
| - EXPECT_EQ(param.value, LookupInGraph(test5::kDafsa, param.key));
|
| -}
|
| -
|
| -const Expectation kJoinedPrefixesTestCases[] = {
|
| - {"ai", 0}, {"bj", 4}, {"aak", 0}, {"bbl", 4},
|
| - {"aaa", -1}, {"bbb", -1}, {"aaaam", 0}, {"bbbbn", 0},
|
| -};
|
| -
|
| -INSTANTIATE_TEST_CASE_P(LookupStringInFixedSetTest,
|
| - Dafsa5Test,
|
| - ::testing::ValuesIn(kJoinedPrefixesTestCases));
|
| -
|
| -class Dafsa6Test : public LookupStringInFixedSetTest {};
|
| -
|
| -// This DAFSA is constructed from words with similar suffixes but distinct
|
| -// prefixes. The DAFSA will then form a trie with the implicit sink node as
|
| -// root.
|
| -TEST_P(Dafsa6Test, TestDafsaJoinedSuffixes) {
|
| - const Expectation& param = GetParam();
|
| - EXPECT_EQ(param.value, LookupInGraph(test6::kDafsa, param.key));
|
| -}
|
| -
|
| -const Expectation kJoinedSuffixesTestCases[] = {
|
| - {"ia", 0}, {"jb", 4}, {"kaa", 0}, {"lbb", 4},
|
| - {"aaa", -1}, {"bbb", -1}, {"maaaa", 0}, {"nbbbb", 0},
|
| -};
|
| -
|
| -INSTANTIATE_TEST_CASE_P(LookupStringInFixedSetTest,
|
| - Dafsa6Test,
|
| - ::testing::ValuesIn(kJoinedSuffixesTestCases));
|
| -
|
| -// Validates that the generated DAFSA contains exactly the same information as
|
| -// effective_tld_names_unittest1.gperf.
|
| -TEST(LookupStringInFixedSetTest, Dafsa1EnumerateLanguage) {
|
| - auto language = EnumerateDafsaLanguage(test1::kDafsa);
|
| -
|
| - // These are the lines of effective_tld_names_unittest1.gperf, in sorted
|
| - // order.
|
| - std::vector<std::string> expected_language = {
|
| - "ac.jp, 0", "b.c, 1", "bar.baz.com, 0", "bar.jp, 2",
|
| - "baz.bar.jp, 2", "c, 2", "jp, 0", "no, 0",
|
| - "pref.bar.jp, 1", "priv.no, 4", "private, 4", "xn--fiqs8s, 0",
|
| - };
|
| -
|
| - EXPECT_EQ(expected_language, language);
|
| -}
|
| -
|
| -// Validates that the generated DAFSA contains exactly the same information as
|
| -// effective_tld_names_unittest5.gperf.
|
| -TEST(LookupStringInFixedSetTest, Dafsa5EnumerateLanguage) {
|
| - auto language = EnumerateDafsaLanguage(test5::kDafsa);
|
| -
|
| - std::vector<std::string> expected_language = {
|
| - "aaaam, 0", "aak, 0", "ai, 0", "bbbbn, 0", "bbl, 4", "bj, 4",
|
| - };
|
| -
|
| - EXPECT_EQ(expected_language, language);
|
| -}
|
| -
|
| -// Validates that the generated DAFSA contains exactly the same information as
|
| -// effective_tld_names_unittest6.gperf.
|
| -TEST(LookupStringInFixedSetTest, Dafsa6EnumerateLanguage) {
|
| - auto language = EnumerateDafsaLanguage(test6::kDafsa);
|
| -
|
| - std::vector<std::string> expected_language = {
|
| - "ia, 0", "jb, 4", "kaa, 0", "lbb, 4", "maaaa, 0", "nbbbb, 0",
|
| - };
|
| -
|
| - EXPECT_EQ(expected_language, language);
|
| -}
|
| -
|
| -} // namespace
|
| -} // namespace net
|
|
|