diff options
Diffstat (limited to 'chrome/browser/autocomplete/network_action_predictor_unittest.cc')
-rw-r--r-- | chrome/browser/autocomplete/network_action_predictor_unittest.cc | 182 |
1 files changed, 109 insertions, 73 deletions
diff --git a/chrome/browser/autocomplete/network_action_predictor_unittest.cc b/chrome/browser/autocomplete/network_action_predictor_unittest.cc index b49bd92..fbca1a2 100644 --- a/chrome/browser/autocomplete/network_action_predictor_unittest.cc +++ b/chrome/browser/autocomplete/network_action_predictor_unittest.cc @@ -14,89 +14,125 @@ #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_PRERENDER }, - { GURL("http://www.testsite.com/c.html"), - ASCIIToUTF16("Test - site - just a test"), 1, 5, - ASCIIToUTF16("just"), - NetworkActionPredictor::ACTION_PRECONNECT }, - { 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_NONE }, - { GURL("http://www.testsite.com/h.html"), - ASCIIToUTF16("Test - site - just a test"), 2, 21, - ASCIIToUTF16("just a test"), - NetworkActionPredictor::ACTION_NONE }, - { GURL("http://www.testsite.com/i.html"), - ASCIIToUTF16("Test - site - just a test"), 3, 28, - ASCIIToUTF16("just a test"), - NetworkActionPredictor::ACTION_NONE } - }; +namespace { - 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); +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_PRERENDER }, + { GURL("http://www.testsite.com/c.html"), + ASCIIToUTF16("Test - site - just a test"), 1, 5, + ASCIIToUTF16("just"), + NetworkActionPredictor::ACTION_PRECONNECT }, + { 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_NONE }, + { GURL("http://www.testsite.com/h.html"), + ASCIIToUTF16("Test - site - just a test"), 2, 21, + ASCIIToUTF16("just a test"), + NetworkActionPredictor::ACTION_NONE }, + { GURL("http://www.testsite.com/i.html"), + ASCIIToUTF16("Test - site - just a test"), 3, 28, + ASCIIToUTF16("just a test"), + NetworkActionPredictor::ACTION_NONE } +}; - 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); +} // end namespace - CHECK(url_db->AddURL(row)); +class NetworkActionPredictorTest : public testing::Test { + public: + NetworkActionPredictorTest() + : loop_(MessageLoop::TYPE_DEFAULT), + ui_thread_(BrowserThread::UI, &loop_), + file_thread_(BrowserThread::FILE, &loop_), + predictor_(&profile_) { } + void SetUp() { + profile_.CreateHistoryService(true, false); + profile_.BlockUntilHistoryProcessesPendingRequests(); + + HistoryService* history = + profile_.GetHistoryService(Profile::EXPLICIT_ACCESS); + CHECK(history); + history::URLDatabase* url_db = history->InMemoryDatabase(); + CHECK(url_db); + + 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)); + } + } + + const NetworkActionPredictor& predictor() const { return predictor_; } + + private: + MessageLoop loop_; + BrowserThread ui_thread_; + BrowserThread file_thread_; + TestingProfile profile_; + NetworkActionPredictor predictor_; +}; + +TEST_F(NetworkActionPredictorTest, RecommendActionURL) { AutocompleteMatch match; + match.type = AutocompleteMatch::HISTORY_URL; 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)) + predictor().RecommendAction(test_url_db[i].user_text, match)) + << "Unexpected action for " << match.destination_url; + } +} + +TEST_F(NetworkActionPredictorTest, RecommendActionSearch) { + AutocompleteMatch match; + match.type = AutocompleteMatch::SEARCH_WHAT_YOU_TYPED; + + for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_url_db); ++i) { + match.destination_url = GURL(test_url_db[i].url); + const NetworkActionPredictor::Action expected = + (test_url_db[i].expected_action == + NetworkActionPredictor::ACTION_PRERENDER) ? + NetworkActionPredictor::ACTION_PRECONNECT : + test_url_db[i].expected_action; + + EXPECT_EQ(expected, + predictor().RecommendAction(test_url_db[i].user_text, match)) << "Unexpected action for " << match.destination_url; } } |