Index: chrome/browser/cocoa/bookmark_tree_controller_unittest.mm |
diff --git a/chrome/browser/cocoa/bookmark_tree_controller_unittest.mm b/chrome/browser/cocoa/bookmark_tree_controller_unittest.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..60f13c495563628ce238a4f6025f38346c3394fb |
--- /dev/null |
+++ b/chrome/browser/cocoa/bookmark_tree_controller_unittest.mm |
@@ -0,0 +1,186 @@ |
+// Copyright (c) 2009 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/scoped_nsobject.h" |
+#import "chrome/browser/cocoa/bookmark_groups_controller.h" |
+#import "chrome/browser/cocoa/bookmark_manager_controller.h" |
+#import "chrome/browser/cocoa/bookmark_tree_controller.h" |
+#include "chrome/browser/cocoa/browser_test_helper.h" |
+#import "chrome/browser/cocoa/cocoa_test_helper.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+#include "testing/platform_test.h" |
+ |
+// Mac WebKit uses this type, declared in WebKit/mac/History/WebURLsWithTitles.h |
+static NSString* const WebURLsWithTitlesPboardType = |
+@"WebURLsWithTitlesPboardType"; |
viettrungluu
2010/01/04 21:19:01
Indent (second line) 4 spaces.
|
+ |
+namespace { |
+ |
+class BookmarkTreeControllerTest : public CocoaTest { |
+ public: |
+ void SetUp() { |
+ CocoaTest::SetUp(); |
+ pasteboard_ = [NSPasteboard pasteboardWithUniqueName]; |
+ manager_ = [BookmarkManagerController showBookmarkManager: |
+ browser_test_helper_.profile()]; |
+ ASSERT_TRUE(manager_); |
+ treeController_ = [manager_ treeController]; |
+ ASSERT_TRUE(treeController_); |
+ } |
+ |
+ void TearDown() { |
+ [manager_ close]; |
+ [pasteboard_ releaseGlobally]; |
+ CocoaTest::TearDown(); |
+ } |
+ |
+ id SelectBar() { |
+ BookmarkModel* model = [manager_ bookmarkModel]; |
+ id barItem = [manager_ itemFromNode:model->GetBookmarkBarNode()]; |
+ [[manager_ groupsController] setSelectedGroup:barItem]; |
+ return barItem; |
+ } |
+ |
+ id AddToBar(const std::wstring& title, const std::string& urlStr) { |
+ BookmarkModel* model = [manager_ bookmarkModel]; |
+ const BookmarkNode* bar = model->GetBookmarkBarNode(); |
+ const BookmarkNode* node; |
+ node = model->AddURL(bar, bar->GetChildCount(), title, GURL(urlStr)); |
+ return [manager_ itemFromNode:node]; |
+ } |
+ |
+ BrowserTestHelper browser_test_helper_; |
+ BookmarkManagerController* manager_; |
+ BookmarkTreeController* treeController_; |
+ NSPasteboard* pasteboard_; |
+}; |
+ |
+TEST_F(BookmarkTreeControllerTest, Model) { |
+ // Select nothing in the group list and check tree is empty: |
+ BookmarkGroupsController* groupsController = [manager_ groupsController]; |
+ [groupsController setSelectedGroup:nil]; |
+ ASSERT_EQ(nil, [treeController_ group]); |
+ |
+ // Select the bookmarks bar and check that it's shown in the tree: |
+ id barItem = SelectBar(); |
+ ASSERT_EQ(barItem, [treeController_ group]); |
+} |
+ |
+TEST_F(BookmarkTreeControllerTest, Selection) { |
+ SelectBar(); |
+ id test1 = AddToBar(L"Test 1", "http://example.com/test1"); |
+ id test2 = AddToBar(L"Test 2", "http://example.com/test2"); |
+ id test3 = AddToBar(L"Test 3", "http://example.com/test3"); |
+ EXPECT_EQ(0U, [[treeController_ selectedItems] count]); |
+ |
+ NSArray* sel = [NSArray arrayWithObject:test2]; |
+ [treeController_ setSelectedItems:sel]; |
+ EXPECT_TRUE([sel isEqual:[treeController_ selectedItems]]); |
+ sel = [NSArray arrayWithObjects:test1, test3, nil]; |
+ [treeController_ setSelectedItems:sel]; |
+ EXPECT_TRUE([sel isEqual:[treeController_ selectedItems]]); |
+ sel = [NSArray arrayWithObjects:test1, test2, test3, nil]; |
+ [treeController_ setSelectedItems:sel]; |
+ EXPECT_TRUE([sel isEqual:[treeController_ selectedItems]]); |
+ sel = [NSArray array]; |
+ [treeController_ setSelectedItems:sel]; |
+ EXPECT_TRUE([sel isEqual:[treeController_ selectedItems]]); |
+} |
+ |
+TEST_F(BookmarkTreeControllerTest, CopyURLs) { |
+ SelectBar(); |
+ AddToBar(L"Test 1", "http://example.com/test1"); |
+ AddToBar(L"Test 2", "http://example.com/test2"); |
+ AddToBar(L"Test 3", "http://example.com/test3"); |
+ [[treeController_ outline] selectAll:treeController_]; |
+ |
+ ASSERT_TRUE([treeController_ copyToPasteboard:pasteboard_]); |
+ |
+ NSArray* contents = [pasteboard_ propertyListForType: |
+ WebURLsWithTitlesPboardType]; |
+ ASSERT_TRUE([contents isKindOfClass:[NSArray class]]); |
+ NSArray* urlStrings = [contents objectAtIndex:0]; |
+ EXPECT_TRUE([urlStrings isKindOfClass:[NSArray class]]); |
+ NSArray* expectedURLStrings = [NSArray arrayWithObjects: |
+ @"http://example.com/test1", |
+ @"http://example.com/test2", |
+ @"http://example.com/test3", nil]; |
+ EXPECT_TRUE([urlStrings isEqual:expectedURLStrings]); |
+ NSArray* titles = [contents objectAtIndex:1]; |
+ EXPECT_TRUE([titles isKindOfClass:[NSArray class]]); |
+ NSArray* expectedTitles = [NSArray arrayWithObjects: |
+ @"Test 1", |
+ @"Test 2", |
+ @"Test 3", nil]; |
+ EXPECT_TRUE([titles isEqual:expectedTitles]); |
+ |
+ NSString* str = [pasteboard_ stringForType:NSStringPboardType]; |
+ EXPECT_TRUE([str isEqual: |
+ @"http://example.com/test1\n" |
+ "http://example.com/test2\n" |
+ "http://example.com/test3"]); |
+ |
+ EXPECT_FALSE([pasteboard_ dataForType:NSURLPboardType]); |
+} |
+ |
+TEST_F(BookmarkTreeControllerTest, PasteSingleURL) { |
+ [pasteboard_ declareTypes:[NSArray arrayWithObjects: |
+ NSURLPboardType, @"public.url-name", nil] |
+ owner:nil]; |
+ [[NSURL URLWithString:@"http://google.com"] writeToPasteboard:pasteboard_]; |
+ [pasteboard_ setString:@"Gooooogle" forType:@"public.url-name"]; |
+ |
+ SelectBar(); |
+ AddToBar(L"Test 1", "http://example.com/test1"); |
+ AddToBar(L"Test 2", "http://example.com/test2"); |
+ AddToBar(L"Test 3", "http://example.com/test3"); |
+ |
+ ASSERT_TRUE([treeController_ pasteFromPasteboard:pasteboard_]); |
+ EXPECT_EQ(4, [[treeController_ outline] numberOfRows]); |
+ EXPECT_EQ(3, [[treeController_ outline] selectedRow]); |
+ NSArray* sel = [treeController_ selectedItems]; |
+ ASSERT_EQ(1U, [sel count]); |
+ const BookmarkNode* node = [manager_ nodeFromItem:[sel objectAtIndex:0]]; |
+ ASSERT_TRUE(node); |
+ EXPECT_EQ(GURL("http://google.com"), node->GetURL()); |
+ EXPECT_EQ(L"Gooooogle", node->GetTitle()); |
+} |
+ |
+TEST_F(BookmarkTreeControllerTest, PasteMultipleURLs) { |
+ [pasteboard_ declareTypes:[NSArray arrayWithObjects: |
+ WebURLsWithTitlesPboardType, |
+ NSURLPboardType, nil] |
+ owner:nil]; |
+ NSMutableArray* urls = [NSArray arrayWithObjects: |
+ @"http://google.com", @"http://chromium.org", nil]; |
+ NSMutableArray* titles = [NSArray arrayWithObjects: |
+ @"Gooooogle", @"Chrooooomium", nil]; |
+ [pasteboard_ setPropertyList:[NSArray arrayWithObjects:urls, titles, nil] |
+ forType:WebURLsWithTitlesPboardType]; |
+ [[NSURL URLWithString:@"http://example.com"] writeToPasteboard:pasteboard_]; |
+ |
+ SelectBar(); |
+ AddToBar(L"Test 1", "http://example.com/test1"); |
+ id test2 = AddToBar(L"Test 2", "http://example.com/test2"); |
+ AddToBar(L"Test 3", "http://example.com/test3"); |
+ [treeController_ setSelectedItems:[NSArray arrayWithObject:test2]]; |
+ |
+ ASSERT_TRUE([treeController_ pasteFromPasteboard:pasteboard_]); |
+ EXPECT_EQ(5, [[treeController_ outline] numberOfRows]); |
+ EXPECT_TRUE([[[treeController_ outline] selectedRowIndexes] |
+ isEqual:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(2, 2)]]); |
+ NSArray* sel = [treeController_ selectedItems]; |
+ ASSERT_EQ(2U, [sel count]); |
+ |
+ const BookmarkNode* node = [manager_ nodeFromItem:[sel objectAtIndex:0]]; |
+ ASSERT_TRUE(node); |
+ EXPECT_EQ(GURL("http://google.com"), node->GetURL()); |
+ EXPECT_EQ(L"Gooooogle", node->GetTitle()); |
+ node = [manager_ nodeFromItem:[sel objectAtIndex:1]]; |
+ ASSERT_TRUE(node); |
+ EXPECT_EQ(GURL("http://chromium.org"), node->GetURL()); |
+ EXPECT_EQ(L"Chrooooomium", node->GetTitle()); |
+} |
+ |
+} // namespace |