Index: chrome/renderer/prerender/prerender_dispatcher_unittest.cc |
diff --git a/chrome/renderer/prerender/prerender_dispatcher_unittest.cc b/chrome/renderer/prerender/prerender_dispatcher_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a68e25154669094394576ce007674a400f4528c4 |
--- /dev/null |
+++ b/chrome/renderer/prerender/prerender_dispatcher_unittest.cc |
@@ -0,0 +1,114 @@ |
+// 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 "base/logging.h" |
+#include "base/memory/scoped_ptr.h" |
+#include "chrome/renderer/prerender/prerender_dispatcher.h" |
+#include "googleurl/src/gurl.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace prerender { |
+ |
+class PrerenderDispatcherTest : public testing::Test { |
+ public: |
+ PrerenderDispatcherTest() |
+ : prerender_url_tracker_(new PrerenderDispatcher()) { |
+ } |
+ |
+ PrerenderDispatcher* prerender_url_tracker() { |
+ return prerender_url_tracker_.get(); |
+ } |
+ |
+ private: |
+ scoped_ptr<PrerenderDispatcher> prerender_url_tracker_; |
+}; |
+ |
+TEST_F(PrerenderDispatcherTest, PrerenderDispatcherEmpty) { |
+ EXPECT_EQ(0U, prerender_url_tracker()->prerender_urls_.size()); |
+} |
+ |
+TEST_F(PrerenderDispatcherTest, PrerenderDispatcherSingleAdd) { |
+ GURL foo_url = GURL("http://foo.com"); |
+ EXPECT_FALSE(prerender_url_tracker()->IsPrerenderURL(foo_url)); |
+ prerender_url_tracker()->OnAddPrerenderURL(foo_url); |
+ EXPECT_TRUE(prerender_url_tracker()->IsPrerenderURL(foo_url)); |
+ |
+ PrerenderDispatcher::PrerenderMap::const_iterator entry = |
+ prerender_url_tracker()->prerender_urls_.find(foo_url); |
+ EXPECT_FALSE(prerender_url_tracker()->prerender_urls_.end() == entry); |
+ EXPECT_EQ(1, entry->second); |
+} |
+ |
+TEST_F(PrerenderDispatcherTest, PrerenderDispatcherMultipleAdd) { |
+ GURL foo_url = GURL("http://foo.com"); |
+ GURL bar_url = GURL("http://bar.com"); |
+ |
+ EXPECT_FALSE(prerender_url_tracker()->IsPrerenderURL(foo_url)); |
+ EXPECT_FALSE(prerender_url_tracker()->IsPrerenderURL(bar_url)); |
+ prerender_url_tracker()->OnAddPrerenderURL(foo_url); |
+ EXPECT_TRUE(prerender_url_tracker()->IsPrerenderURL(foo_url)); |
+ EXPECT_FALSE(prerender_url_tracker()->IsPrerenderURL(bar_url)); |
+ |
+ { |
+ prerender_url_tracker()->OnAddPrerenderURL(foo_url); |
+ EXPECT_TRUE(prerender_url_tracker()->IsPrerenderURL(foo_url)); |
+ EXPECT_FALSE(prerender_url_tracker()->IsPrerenderURL(bar_url)); |
+ PrerenderDispatcher::PrerenderMap::const_iterator foo_entry = |
+ prerender_url_tracker()->prerender_urls_.find(foo_url); |
+ EXPECT_FALSE(prerender_url_tracker()->prerender_urls_.end() == foo_entry); |
+ EXPECT_EQ(2, foo_entry->second); |
+ } |
+ |
+ { |
+ prerender_url_tracker()->OnAddPrerenderURL(bar_url); |
+ EXPECT_TRUE(prerender_url_tracker()->IsPrerenderURL(foo_url)); |
+ EXPECT_TRUE(prerender_url_tracker()->IsPrerenderURL(bar_url)); |
+ PrerenderDispatcher::PrerenderMap::const_iterator foo_entry = |
+ prerender_url_tracker()->prerender_urls_.find(foo_url); |
+ EXPECT_FALSE(prerender_url_tracker()->prerender_urls_.end() == foo_entry); |
+ EXPECT_EQ(2, foo_entry->second); |
+ PrerenderDispatcher::PrerenderMap::const_iterator bar_entry = |
+ prerender_url_tracker()->prerender_urls_.find(bar_url); |
+ EXPECT_FALSE(prerender_url_tracker()->prerender_urls_.end() == bar_entry); |
+ EXPECT_EQ(1, bar_entry->second); |
+ } |
+} |
+ |
+TEST_F(PrerenderDispatcherTest, PrerenderDispatcherSingleRemove) { |
+ GURL foo_url = GURL("http://foo.com"); |
+ EXPECT_FALSE(prerender_url_tracker()->IsPrerenderURL(foo_url)); |
+ prerender_url_tracker()->OnAddPrerenderURL(foo_url); |
+ EXPECT_TRUE(prerender_url_tracker()->IsPrerenderURL(foo_url)); |
+ prerender_url_tracker()->OnRemovePrerenderURL(foo_url); |
+ EXPECT_FALSE(prerender_url_tracker()->IsPrerenderURL(foo_url)); |
+ PrerenderDispatcher::PrerenderMap::const_iterator foo_entry = |
+ prerender_url_tracker()->prerender_urls_.find(foo_url); |
+ EXPECT_EQ(prerender_url_tracker()->prerender_urls_.end(), foo_entry); |
+} |
+ |
+TEST_F(PrerenderDispatcherTest, PrerenderDispatcherMultipleRemove) { |
+ GURL foo_url = GURL("http://foo.com"); |
+ EXPECT_FALSE(prerender_url_tracker()->IsPrerenderURL(foo_url)); |
+ prerender_url_tracker()->OnAddPrerenderURL(foo_url); |
+ EXPECT_TRUE(prerender_url_tracker()->IsPrerenderURL(foo_url)); |
+ prerender_url_tracker()->OnAddPrerenderURL(foo_url); |
+ EXPECT_TRUE(prerender_url_tracker()->IsPrerenderURL(foo_url)); |
+ PrerenderDispatcher::PrerenderMap::const_iterator foo_entry = |
+ prerender_url_tracker()->prerender_urls_.find(foo_url); |
+ EXPECT_FALSE(prerender_url_tracker()->prerender_urls_.end() == foo_entry); |
+ EXPECT_EQ(2, foo_entry->second); |
+ |
+ prerender_url_tracker()->OnRemovePrerenderURL(foo_url); |
+ EXPECT_TRUE(prerender_url_tracker()->IsPrerenderURL(foo_url)); |
+ foo_entry = prerender_url_tracker()->prerender_urls_.find(foo_url); |
+ EXPECT_FALSE(prerender_url_tracker()->prerender_urls_.end() == foo_entry); |
+ EXPECT_EQ(1, foo_entry->second); |
+ |
+ prerender_url_tracker()->OnRemovePrerenderURL(foo_url); |
+ EXPECT_FALSE(prerender_url_tracker()->IsPrerenderURL(foo_url)); |
+ foo_entry = prerender_url_tracker()->prerender_urls_.find(foo_url); |
+ EXPECT_EQ(prerender_url_tracker()->prerender_urls_.end(), foo_entry); |
+} |
+ |
+} // end namespace prerender |