diff options
author | dominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-24 20:39:28 +0000 |
---|---|---|
committer | dominich@chromium.org <dominich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-24 20:39:28 +0000 |
commit | b5db5eefdea45fb50601433e13fc6e2c7ac6f4a0 (patch) | |
tree | b9839db67407ab9245a22101be0c0b19ed5ea684 /chrome/renderer/prerender | |
parent | 478eefb05d619622cba82c7acea3bd1507b576e4 (diff) | |
download | chromium_src-b5db5eefdea45fb50601433e13fc6e2c7ac6f4a0.zip chromium_src-b5db5eefdea45fb50601433e13fc6e2c7ac6f4a0.tar.gz chromium_src-b5db5eefdea45fb50601433e13fc6e2c7ac6f4a0.tar.bz2 |
Adding unit tests for PrerenderDispatcher.
BUG=None
TEST=None
Review URL: https://chromiumcodereview.appspot.com/10424002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@138877 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/prerender')
-rw-r--r-- | chrome/renderer/prerender/prerender_dispatcher.h | 2 | ||||
-rw-r--r-- | chrome/renderer/prerender/prerender_dispatcher_unittest.cc | 126 |
2 files changed, 128 insertions, 0 deletions
diff --git a/chrome/renderer/prerender/prerender_dispatcher.h b/chrome/renderer/prerender/prerender_dispatcher.h index 3ee2b7f..6896804 100644 --- a/chrome/renderer/prerender/prerender_dispatcher.h +++ b/chrome/renderer/prerender/prerender_dispatcher.h @@ -31,6 +31,8 @@ class PrerenderDispatcher : public content::RenderProcessObserver { bool IsPrerenderURL(const GURL & url) const; private: + friend class PrerenderDispatcherTest; + void OnAddPrerenderURL(const GURL& url); void OnRemovePrerenderURL(const GURL& url); diff --git a/chrome/renderer/prerender/prerender_dispatcher_unittest.cc b/chrome/renderer/prerender/prerender_dispatcher_unittest.cc new file mode 100644 index 0000000..f7170ba --- /dev/null +++ b/chrome/renderer/prerender/prerender_dispatcher_unittest.cc @@ -0,0 +1,126 @@ +// Copyright (c) 2012 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/renderer/prerender/prerender_dispatcher.h" + +#include "base/compiler_specific.h" +#include "base/logging.h" +#include "googleurl/src/gurl.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace prerender { + +class PrerenderDispatcherTest : public testing::Test { + public: + PrerenderDispatcherTest() {} + + bool is_prerender_url(const GURL& url) const { + return prerender_dispatcher_.IsPrerenderURL(url); + } + + const PrerenderDispatcher::PrerenderMap& urls() const { + return prerender_dispatcher_.prerender_urls_; + } + + void AddURL(const GURL& url) { prerender_dispatcher_.OnAddPrerenderURL(url); } + void RemoveURL(const GURL& url) { + prerender_dispatcher_.OnRemovePrerenderURL(url); + } + + int GetCountForURL(const GURL& url) const { + PrerenderDispatcher::PrerenderMap::const_iterator entry = urls().find(url); + if (entry == urls().end()) + return 0; + EXPECT_GT(entry->second, 0); + return entry->second; + } + + private: + PrerenderDispatcher prerender_dispatcher_; + DISALLOW_COPY_AND_ASSIGN(PrerenderDispatcherTest); +}; + +TEST_F(PrerenderDispatcherTest, PrerenderDispatcherEmpty) { + EXPECT_EQ(0U, urls().size()); +} + +TEST_F(PrerenderDispatcherTest, PrerenderDispatcherSingleAdd) { + GURL foo_url = GURL("http://foo.com"); + EXPECT_FALSE(is_prerender_url(foo_url)); + AddURL(foo_url); + EXPECT_TRUE(is_prerender_url(foo_url)); + EXPECT_EQ(1, GetCountForURL(foo_url)); +} + +TEST_F(PrerenderDispatcherTest, PrerenderDispatcherMultipleAdd) { + GURL foo_url = GURL("http://foo.com"); + GURL bar_url = GURL("http://bar.com"); + + EXPECT_FALSE(is_prerender_url(foo_url)); + EXPECT_FALSE(is_prerender_url(bar_url)); + AddURL(foo_url); + EXPECT_TRUE(is_prerender_url(foo_url)); + EXPECT_FALSE(is_prerender_url(bar_url)); + + AddURL(foo_url); + EXPECT_TRUE(is_prerender_url(foo_url)); + EXPECT_FALSE(is_prerender_url(bar_url)); + EXPECT_EQ(2, GetCountForURL(foo_url)); + + AddURL(bar_url); + EXPECT_TRUE(is_prerender_url(foo_url)); + EXPECT_TRUE(is_prerender_url(bar_url)); + EXPECT_EQ(2, GetCountForURL(foo_url)); + EXPECT_EQ(1, GetCountForURL(bar_url)); +} + +TEST_F(PrerenderDispatcherTest, PrerenderDispatcherSingleRemove) { + GURL foo_url = GURL("http://foo.com"); + EXPECT_FALSE(is_prerender_url(foo_url)); + AddURL(foo_url); + EXPECT_TRUE(is_prerender_url(foo_url)); + RemoveURL(foo_url); + EXPECT_FALSE(is_prerender_url(foo_url)); + EXPECT_EQ(0, GetCountForURL(foo_url)); +} + +TEST_F(PrerenderDispatcherTest, PrerenderDispatcherMultipleRemove) { + GURL foo_url = GURL("http://foo.com"); + EXPECT_FALSE(is_prerender_url(foo_url)); + AddURL(foo_url); + EXPECT_TRUE(is_prerender_url(foo_url)); + AddURL(foo_url); + EXPECT_TRUE(is_prerender_url(foo_url)); + EXPECT_EQ(2, GetCountForURL(foo_url)); + + RemoveURL(foo_url); + EXPECT_TRUE(is_prerender_url(foo_url)); + EXPECT_EQ(1, GetCountForURL(foo_url)); + + RemoveURL(foo_url); + EXPECT_FALSE(is_prerender_url(foo_url)); + EXPECT_EQ(0, GetCountForURL(foo_url)); +} + +TEST_F(PrerenderDispatcherTest, PrerenderDispatcherRemoveWithoutAdd) { + GURL foo_url = GURL("http://foo.com"); + EXPECT_FALSE(is_prerender_url(foo_url)); + RemoveURL(foo_url); + EXPECT_FALSE(is_prerender_url(foo_url)); + EXPECT_EQ(0, GetCountForURL(foo_url)); +} + +TEST_F(PrerenderDispatcherTest, PrerenderDispatcherRemoveTooMany) { + GURL foo_url = GURL("http://foo.com"); + EXPECT_FALSE(is_prerender_url(foo_url)); + AddURL(foo_url); + EXPECT_TRUE(is_prerender_url(foo_url)); + RemoveURL(foo_url); + EXPECT_FALSE(is_prerender_url(foo_url)); + RemoveURL(foo_url); + EXPECT_FALSE(is_prerender_url(foo_url)); + EXPECT_EQ(0, GetCountForURL(foo_url)); +} + +} // end namespace prerender |