summaryrefslogtreecommitdiffstats
path: root/chrome/browser/autocomplete/network_action_predictor_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/autocomplete/network_action_predictor_unittest.cc')
-rw-r--r--chrome/browser/autocomplete/network_action_predictor_unittest.cc102
1 files changed, 102 insertions, 0 deletions
diff --git a/chrome/browser/autocomplete/network_action_predictor_unittest.cc b/chrome/browser/autocomplete/network_action_predictor_unittest.cc
new file mode 100644
index 0000000..db95a65
--- /dev/null
+++ b/chrome/browser/autocomplete/network_action_predictor_unittest.cc
@@ -0,0 +1,102 @@
+// Copyright (c) 2011 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/autocomplete/network_action_predictor.h"
+
+#include "base/message_loop.h"
+#include "base/time.h"
+#include "base/utf_string_conversions.h"
+#include "chrome/browser/autocomplete/autocomplete_match.h"
+#include "chrome/browser/history/history.h"
+#include "chrome/browser/history/url_database.h"
+#include "chrome/test/base/testing_profile.h"
+#include "content/browser/browser_thread.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+typedef testing::Test NetworkActionPredictorTest;
+
+TEST_F(NetworkActionPredictorTest, RecommendAction) {
+ MessageLoop loop(MessageLoop::TYPE_DEFAULT);
+ BrowserThread ui_thread(BrowserThread::UI, &loop);
+ BrowserThread file_thread(BrowserThread::FILE, &loop);
+
+ TestingProfile profile;
+ profile.CreateHistoryService(true, false);
+ profile.BlockUntilHistoryProcessesPendingRequests();
+
+ NetworkActionPredictor predictor(&profile);
+
+ HistoryService* history = profile.GetHistoryService(Profile::EXPLICIT_ACCESS);
+ CHECK(history);
+ history::URLDatabase* url_db = history->InMemoryDatabase();
+ CHECK(url_db);
+
+ struct TestUrlInfo {
+ GURL url;
+ string16 title;
+ int typed_count;
+ int days_from_now;
+ string16 user_text;
+ NetworkActionPredictor::Action expected_action;
+ } test_url_db[] = {
+ { GURL("http://www.testsite.com/a.html"),
+ ASCIIToUTF16("Test - site - just a test"), 1, 1,
+ ASCIIToUTF16("just"),
+ NetworkActionPredictor::ACTION_PRERENDER },
+ { GURL("http://www.testsite.com/b.html"),
+ ASCIIToUTF16("Test - site - just a test"), 0, 1,
+ ASCIIToUTF16("just"),
+ NetworkActionPredictor::ACTION_NONE },
+ { GURL("http://www.testsite.com/c.html"),
+ ASCIIToUTF16("Test - site - just a test"), 1, 5,
+ ASCIIToUTF16("just"),
+ NetworkActionPredictor::ACTION_PRERENDER },
+ { GURL("http://www.testsite.com/d.html"),
+ ASCIIToUTF16("Test - site - just a test"), 2, 5,
+ ASCIIToUTF16("just"),
+ NetworkActionPredictor::ACTION_PRERENDER },
+ { GURL("http://www.testsite.com/e.html"),
+ ASCIIToUTF16("Test - site - just a test"), 1, 8,
+ ASCIIToUTF16("just"),
+ NetworkActionPredictor::ACTION_PRECONNECT },
+ { GURL("http://www.testsite.com/f.html"),
+ ASCIIToUTF16("Test - site - just a test"), 4, 8,
+ ASCIIToUTF16("just"),
+ NetworkActionPredictor::ACTION_PRERENDER },
+ { GURL("http://www.testsite.com/g.html"),
+ ASCIIToUTF16("Test - site - just a test"), 1, 12,
+ ASCIIToUTF16("just a"),
+ NetworkActionPredictor::ACTION_PRECONNECT },
+ { GURL("http://www.testsite.com/h.html"),
+ ASCIIToUTF16("Test - site - just a test"), 1, 21,
+ ASCIIToUTF16("just a test"),
+ NetworkActionPredictor::ACTION_PRECONNECT },
+ { GURL("http://www.testsite.com/i.html"),
+ ASCIIToUTF16("Test - site - just a test"), 1, 28,
+ ASCIIToUTF16("just a test"),
+ NetworkActionPredictor::ACTION_NONE }
+ };
+
+ for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_url_db); ++i) {
+ const base::Time visit_time =
+ base::Time::Now() - base::TimeDelta::FromDays(
+ test_url_db[i].days_from_now);
+
+ history::URLRow row(test_url_db[i].url);
+ row.set_title(test_url_db[i].title);
+ row.set_typed_count(test_url_db[i].typed_count);
+ row.set_last_visit(visit_time);
+
+ CHECK(url_db->AddURL(row));
+ }
+
+ AutocompleteMatch match;
+
+ for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_url_db); ++i) {
+ match.destination_url = GURL(test_url_db[i].url);
+ EXPECT_EQ(test_url_db[i].expected_action,
+ predictor.RecommendAction(test_url_db[i].user_text, match))
+ << "Unexpected action for " << match.destination_url;
+ }
+}