diff options
Diffstat (limited to 'chrome/browser/autocomplete/network_action_predictor_unittest.cc')
-rw-r--r-- | chrome/browser/autocomplete/network_action_predictor_unittest.cc | 102 |
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; + } +} |