Index: chrome/browser/sessions/session_utils_unittest.cc |
diff --git a/chrome/browser/sessions/session_utils_unittest.cc b/chrome/browser/sessions/session_utils_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2d38fa1c8c2a8f384399f9620d79f2c27e639191 |
--- /dev/null |
+++ b/chrome/browser/sessions/session_utils_unittest.cc |
@@ -0,0 +1,76 @@ |
+// 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/sessions/session_utils.h" |
+ |
+#include "base/stl_util.h" |
+#include "base/string16.h" |
+#include "base/utf_string_conversions.h" |
+#include "chrome/browser/sessions/session_types.h" |
+#include "googleurl/src/gurl.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+class TabNavigationMock : public TabNavigation { |
+ public: |
+ TabNavigationMock(const char* url, const char* title) |
+ : TabNavigation(0, // index |
+ GURL(string16(ASCIIToUTF16(url))), // virtual_url |
+ GURL(), // referrer |
+ string16(ASCIIToUTF16(title)), // title |
+ "", // state |
+ PageTransition::FROM_ADDRESS_BAR) { |
+ } |
+}; |
+ |
+class SessionUtilsTest : public testing::Test { |
+ protected: |
+ class TabMock : public TabRestoreService::Tab { |
+ public: |
+ TabMock(const char* url, const char* title) { |
+ navigations.push_back(TabNavigationMock(url, title)); |
+ current_navigation_index = 0; |
+ } |
+ }; |
+ |
+ virtual void SetUp() { |
+ // prefill the entries |
+ |
+ // Two identical |
+ entries_.push_back(new TabMock("http://a", "a")); |
+ entries_.push_back(new TabMock("http://a", "a")); |
+ |
+ // Different URL |
+ entries_.push_back(new TabMock("http://b", "b")); |
+ entries_.push_back(new TabMock("http://c", "b")); |
+ |
+ // Different Title |
+ entries_.push_back(new TabMock("http://d", "d")); |
+ entries_.push_back(new TabMock("http://d", "e")); |
+ |
+ // Nothing in common |
+ entries_.push_back(new TabMock("http://f", "f")); |
+ entries_.push_back(new TabMock("http://g", "g")); |
+ } |
+ |
+ void TearDown() { |
+ STLDeleteElements(&entries_); |
+ } |
+ |
+ TabRestoreService::Entries entries_; |
+}; |
+ |
+TEST_F(SessionUtilsTest, SessionUtilsFilter) { |
+ TabRestoreService::Entries filtered_entries; |
+ |
+ SessionUtils::FilteredEntries(entries_, &filtered_entries); |
+ ASSERT_EQ(7U, filtered_entries.size()); |
+ |
+ // The filtering should have removed the second item |
+ TabRestoreService::Entries expected = entries_; |
+ TabRestoreService::Entry* first = expected.front(); |
+ expected.pop_front(); |
+ expected.pop_front(); |
+ expected.push_front(first); |
+ ASSERT_EQ(expected, filtered_entries); |
+} |