Componentize SigninManager.
[chromium-blink-merge.git] / chrome / browser / ui / webui / history_ui_unittest.cc
blob58d1ddc4f7d6ddc2a60f34718eec23a452d1bd06
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/ui/webui/history_ui.h"
7 #include "base/strings/utf_string_conversions.h"
8 #include "testing/gtest/include/gtest/gtest.h"
10 namespace {
12 struct TestResult {
13 std::string url;
14 int64 hour_offset; // Visit time in hours past the baseline time.
17 // Duplicates on the same day in the local timezone are removed, so set a
18 // baseline time in local time.
19 const base::Time baseline_time = base::Time::UnixEpoch().LocalMidnight();
21 // For each item in |results|, create a new Value representing the visit, and
22 // insert it into |list_value|.
23 void AddQueryResults(
24 TestResult* test_results,
25 int test_results_size,
26 std::vector<BrowsingHistoryHandler::HistoryEntry>* results) {
27 for (int i = 0; i < test_results_size; ++i) {
28 BrowsingHistoryHandler::HistoryEntry entry;
29 entry.time = baseline_time +
30 base::TimeDelta::FromHours(test_results[i].hour_offset);
31 entry.url = GURL(test_results[i].url);
32 entry.all_timestamps.insert(entry.time.ToInternalValue());
33 results->push_back(entry);
37 // Returns true if |result| matches the test data given by |correct_result|,
38 // otherwise returns false.
39 bool ResultEquals(
40 const BrowsingHistoryHandler::HistoryEntry& result,
41 const TestResult& correct_result) {
42 base::Time correct_time =
43 baseline_time + base::TimeDelta::FromHours(correct_result.hour_offset);
45 return result.time == correct_time && result.url == GURL(correct_result.url);
48 } // namespace
50 // Tests that the MergeDuplicateResults method correctly removes duplicate
51 // visits to the same URL on the same day.
52 TEST(HistoryUITest, MergeDuplicateResults) {
54 // Basic test that duplicates on the same day are removed.
55 TestResult test_data[] = {
56 { "http://google.com", 0 },
57 { "http://google.de", 1 },
58 { "http://google.com", 2 },
59 { "http://google.com", 3 } // Most recent.
61 std::vector<BrowsingHistoryHandler::HistoryEntry> results;
62 AddQueryResults(test_data, arraysize(test_data), &results);
63 BrowsingHistoryHandler::MergeDuplicateResults(&results);
65 ASSERT_EQ(2U, results.size());
66 EXPECT_TRUE(ResultEquals(results[0], test_data[3]));
67 EXPECT_TRUE(ResultEquals(results[1], test_data[1]));
71 // Test that a duplicate URL on the next day is not removed.
72 TestResult test_data[] = {
73 { "http://google.com", 0 },
74 { "http://google.com", 23 },
75 { "http://google.com", 24 }, // Most recent.
77 std::vector<BrowsingHistoryHandler::HistoryEntry> results;
78 AddQueryResults(test_data, arraysize(test_data), &results);
79 BrowsingHistoryHandler::MergeDuplicateResults(&results);
81 ASSERT_EQ(2U, results.size());
82 EXPECT_TRUE(ResultEquals(results[0], test_data[2]));
83 EXPECT_TRUE(ResultEquals(results[1], test_data[1]));
87 // Test multiple duplicates across multiple days.
88 TestResult test_data[] = {
89 // First day.
90 { "http://google.de", 0 },
91 { "http://google.com", 1 },
92 { "http://google.de", 2 },
93 { "http://google.com", 3 },
95 // Second day.
96 { "http://google.de", 24 },
97 { "http://google.com", 25 },
98 { "http://google.de", 26 },
99 { "http://google.com", 27 }, // Most recent.
101 std::vector<BrowsingHistoryHandler::HistoryEntry> results;
102 AddQueryResults(test_data, arraysize(test_data), &results);
103 BrowsingHistoryHandler::MergeDuplicateResults(&results);
105 ASSERT_EQ(4U, results.size());
106 EXPECT_TRUE(ResultEquals(results[0], test_data[7]));
107 EXPECT_TRUE(ResultEquals(results[1], test_data[6]));
108 EXPECT_TRUE(ResultEquals(results[2], test_data[3]));
109 EXPECT_TRUE(ResultEquals(results[3], test_data[2]));
113 // Test that timestamps for duplicates are properly saved.
114 TestResult test_data[] = {
115 { "http://google.com", 0 },
116 { "http://google.de", 1 },
117 { "http://google.com", 2 },
118 { "http://google.com", 3 } // Most recent.
120 std::vector<BrowsingHistoryHandler::HistoryEntry> results;
121 AddQueryResults(test_data, arraysize(test_data), &results);
122 BrowsingHistoryHandler::MergeDuplicateResults(&results);
124 ASSERT_EQ(2U, results.size());
125 EXPECT_TRUE(ResultEquals(results[0], test_data[3]));
126 EXPECT_TRUE(ResultEquals(results[1], test_data[1]));
127 EXPECT_EQ(3u, results[0].all_timestamps.size());
128 EXPECT_EQ(1u, results[1].all_timestamps.size());