root/chrome/browser/history/url_utils_unittest.cc

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. TEST
  2. TEST
  3. TEST
  4. TEST

// Copyright 2013 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 "chrome/browser/history/url_utils.h"

#include "testing/gtest/include/gtest/gtest.h"

namespace history {

namespace {

TEST(HistoryUrlUtilsTest, CanonicalURLStringCompare) {
  // Comprehensive test by comparing each pair in sorted list. O(n^2).
  const char* sorted_list[] = {
    "http://www.gogle.com/redirects_to_google",
    "http://www.google.com",
    "http://www.google.com/",
    "http://www.google.com/?q",
    "http://www.google.com/A",
    "http://www.google.com/index.html",
    "http://www.google.com/test",
    "http://www.google.com/test?query",
    "http://www.google.com/test?r=3",
    "http://www.google.com/test#hash",
    "http://www.google.com/test/?query",
    "http://www.google.com/test/#hash",
    "http://www.google.com/test/zzzzz",
    "http://www.google.com/test$dollar",
    "http://www.google.com/test%E9%9B%80",
    "http://www.google.com/test-case",
    "http://www.google.com:80/",
    "https://www.google.com",
  };
  for (size_t i = 0; i < ARRAYSIZE_UNSAFE(sorted_list); ++i) {
    EXPECT_FALSE(CanonicalURLStringCompare(sorted_list[i], sorted_list[i]))
        << " for \"" << sorted_list[i] << "\" < \"" << sorted_list[i] << "\"";
    // Every disjoint pair-wise comparison.
    for (size_t j = i + 1; j < ARRAYSIZE_UNSAFE(sorted_list); ++j) {
      EXPECT_TRUE(CanonicalURLStringCompare(sorted_list[i], sorted_list[j]))
          << " for \"" << sorted_list[i] << "\" < \"" << sorted_list[j] << "\"";
      EXPECT_FALSE(CanonicalURLStringCompare(sorted_list[j], sorted_list[i]))
          << " for \"" << sorted_list[j] << "\" < \"" << sorted_list[i] << "\"";
    }
  }
}

TEST(HistoryUrlUtilsTest, HaveSameSchemeHostAndPort) {
  struct {
    const char* s1;
    const char* s2;
  } true_cases[] = {
    {"http://www.google.com", "http://www.google.com"},
    {"http://www.google.com/a/b", "http://www.google.com/a/b"},
    {"http://www.google.com?test=3", "http://www.google.com/"},
    {"http://www.google.com/#hash", "http://www.google.com/?q"},
    {"http://www.google.com/", "http://www.google.com/test/with/dir/"},
    {"http://www.google.com:360", "http://www.google.com:360/?q=1234"},
    {"http://www.google.com:80", "http://www.google.com/gurl/is/smart"},
    {"http://www.google.com/test", "http://www.google.com/test/with/dir/"},
    {"http://www.google.com/test?", "http://www.google.com/test/with/dir/"},
  };
  for (size_t i = 0; i < ARRAYSIZE_UNSAFE(true_cases); ++i) {
    EXPECT_TRUE(HaveSameSchemeHostAndPort(GURL(true_cases[i].s1),
                               GURL(true_cases[i].s2)))
        << " for true_cases[" << i << "]";
  }
  struct {
    const char* s1;
    const char* s2;
  } false_cases[] = {
    {"http://www.google.co", "http://www.google.com"},
    {"http://google.com", "http://www.google.com"},
    {"http://www.google.com", "https://www.google.com"},
    {"http://www.google.com/path", "http://www.google.com:137/path"},
    {"http://www.google.com/same/dir", "http://www.youtube.com/same/dir"},
  };
  for (size_t i = 0; i < ARRAYSIZE_UNSAFE(false_cases); ++i) {
    EXPECT_FALSE(HaveSameSchemeHostAndPort(GURL(false_cases[i].s1),
                                GURL(false_cases[i].s2)))
        << " for false_cases[" << i << "]";
  }
}

TEST(HistoryUrlUtilsTest, IsPathPrefix) {
  struct {
    const char* p1;
    const char* p2;
  } true_cases[] = {
    {"", ""},
    {"", "/"},
    {"/", "/"},
    {"/a/b", "/a/b"},
    {"/", "/test/with/dir/"},
    {"/test", "/test/with/dir/"},
    {"/test/", "/test/with/dir"},
  };
  for (size_t i = 0; i < ARRAYSIZE_UNSAFE(true_cases); ++i) {
    EXPECT_TRUE(IsPathPrefix(true_cases[i].p1, true_cases[i].p2))
        << " for true_cases[" << i << "]";
  }
  struct {
    const char* p1;
    const char* p2;
  } false_cases[] = {
    {"/test", ""},
    {"/", ""},  // Arguable.
    {"/a/b/", "/a/b"},  // Arguable.
    {"/te", "/test"},
    {"/test", "/test-bed"},
    {"/test-", "/test"},
  };
  for (size_t i = 0; i < ARRAYSIZE_UNSAFE(false_cases); ++i) {
    EXPECT_FALSE(IsPathPrefix(false_cases[i].p1, false_cases[i].p2))
        << " for false_cases[" << i << "]";
  }
}

TEST(HistoryUrlUtilsTest, ToggleHTTPAndHTTPS) {
  EXPECT_EQ(GURL("http://www.google.com/test?q#r"),
            ToggleHTTPAndHTTPS(GURL("https://www.google.com/test?q#r")));
  EXPECT_EQ(GURL("https://www.google.com:137/"),
            ToggleHTTPAndHTTPS(GURL("http://www.google.com:137/")));
  EXPECT_EQ(GURL::EmptyGURL(),
            ToggleHTTPAndHTTPS(GURL("ftp://www.google.com/")));
}

}  // namespace

}  // namespace history

/* [<][>][^][v][top][bottom][index][help] */