Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Side by Side Diff: chrome/browser/ui/webui/history_ui_unittest.cc

Issue 1462813003: Split BrowsingHistoryHandler out of history_ui.cc (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review comments Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/ui/webui/history_ui.cc ('k') | chrome/chrome_browser_ui.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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.
4
5 #include "chrome/browser/ui/webui/history_ui.h"
6
7 #include "base/strings/utf_string_conversions.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace {
11
12 struct TestResult {
13 std::string url;
14 int64 hour_offset; // Visit time in hours past the baseline time.
15 };
16
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();
20
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);
34 }
35 }
36
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);
44
45 return result.time == correct_time && result.url == GURL(correct_result.url);
46 }
47
48 } // namespace
49
50 // Tests that the MergeDuplicateResults method correctly removes duplicate
51 // visits to the same URL on the same day.
52 TEST(HistoryUITest, MergeDuplicateResults) {
53 {
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.
60 };
61 std::vector<BrowsingHistoryHandler::HistoryEntry> results;
62 AddQueryResults(test_data, arraysize(test_data), &results);
63 BrowsingHistoryHandler::MergeDuplicateResults(&results);
64
65 ASSERT_EQ(2U, results.size());
66 EXPECT_TRUE(ResultEquals(results[0], test_data[3]));
67 EXPECT_TRUE(ResultEquals(results[1], test_data[1]));
68 }
69
70 {
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.
76 };
77 std::vector<BrowsingHistoryHandler::HistoryEntry> results;
78 AddQueryResults(test_data, arraysize(test_data), &results);
79 BrowsingHistoryHandler::MergeDuplicateResults(&results);
80
81 ASSERT_EQ(2U, results.size());
82 EXPECT_TRUE(ResultEquals(results[0], test_data[2]));
83 EXPECT_TRUE(ResultEquals(results[1], test_data[1]));
84 }
85
86 {
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 },
94
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.
100 };
101 std::vector<BrowsingHistoryHandler::HistoryEntry> results;
102 AddQueryResults(test_data, arraysize(test_data), &results);
103 BrowsingHistoryHandler::MergeDuplicateResults(&results);
104
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]));
110 }
111
112 {
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.
119 };
120 std::vector<BrowsingHistoryHandler::HistoryEntry> results;
121 AddQueryResults(test_data, arraysize(test_data), &results);
122 BrowsingHistoryHandler::MergeDuplicateResults(&results);
123
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());
129 }
130 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/history_ui.cc ('k') | chrome/chrome_browser_ui.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698