summaryrefslogtreecommitdiffstats
path: root/chrome/browser/cocoa/bookmark_item_unittest.mm
diff options
context:
space:
mode:
authorsnej@chromium.org <snej@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-14 00:13:13 +0000
committersnej@chromium.org <snej@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-14 00:13:13 +0000
commitb0119722e29517d9ac0d055df6fc26afdad1be95 (patch)
tree6ce33f930a8f2c7f5e08a72d000c6fabb7744f3f /chrome/browser/cocoa/bookmark_item_unittest.mm
parentc9bb06f4cee992d31f97ee893663a476d4efba0c (diff)
downloadchromium_src-b0119722e29517d9ac0d055df6fc26afdad1be95.zip
chromium_src-b0119722e29517d9ac0d055df6fc26afdad1be95.tar.gz
chromium_src-b0119722e29517d9ac0d055df6fc26afdad1be95.tar.bz2
Change bookmark manager object model.
This is in preparation for adding Recents/Search. Apologies for the number of diffs, but most of them are basically just renaming, especially 'id' --> 'BookmarkItem*' and 'node'-->'item'. The code now has a real Objective-C BookmarkItem class instead of using opaque 'id's. This allows all the C++ BookmarkNode calls to be collected into one source file. It will also in the future allow creating fake collections of bookmarks, necessary for the Recents and Search features. Also some refactoring of the drag/clipboard code, which now uses a static array instead of an instance variable to hold dragged items; this will be necessary to handle moves between trees (coming in the next checkin.) Minor xib changes: Shorten URLs in the middle not at the end, and remove borders of table/outline views. BUG=32080 TEST=Added BookmarkItemTest, modified existing unit tests. Review URL: http://codereview.chromium.org/551013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36195 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa/bookmark_item_unittest.mm')
-rw-r--r--chrome/browser/cocoa/bookmark_item_unittest.mm182
1 files changed, 182 insertions, 0 deletions
diff --git a/chrome/browser/cocoa/bookmark_item_unittest.mm b/chrome/browser/cocoa/bookmark_item_unittest.mm
new file mode 100644
index 0000000..979cb1a
--- /dev/null
+++ b/chrome/browser/cocoa/bookmark_item_unittest.mm
@@ -0,0 +1,182 @@
+// Copyright (c) 2010 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"
+#include "base/sys_string_conversions.h"
+#import "chrome/browser/cocoa/bookmark_item.h"
+#import "chrome/browser/cocoa/bookmark_manager_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"
+
+namespace {
+
+::testing::AssertionResult isEqual(id expected, id actual) {
+ if(expected == actual || [expected isEqual:actual])
+ return ::testing::AssertionSuccess();
+ else
+ return ::testing::AssertionFailure()
+ << "Actual value: " << base::SysNSStringToWide([actual description]);
+}
+
+class BookmarkItemTest : public CocoaTest {
+ public:
+ void SetUp() {
+ CocoaTest::SetUp();
+ manager_ = [BookmarkManagerController showBookmarkManager:
+ browser_test_helper_.profile()];
+ ASSERT_TRUE(manager_);
+ model_ = [manager_ bookmarkModel];
+ ASSERT_TRUE(model_);
+ EXPECT_EQ(browser_test_helper_.profile()->GetBookmarkModel(), model_);
+ barNode_ = model_->GetBookmarkBarNode();
+ ASSERT_TRUE(barNode_);
+ bar_ = [manager_ itemFromNode:barNode_];
+ ASSERT_TRUE(bar_);
+ }
+
+ void AddTestBookmarks() {
+ model_->AddURL(barNode_, 0, L"bookmark0", GURL("http://example.com/0"));
+ model_->AddURL(barNode_, 1, L"bookmark1", GURL("http://example.com/1"));
+ model_->AddURL(barNode_, 2, L"bookmark3", GURL("http://example.com/3"));
+ const BookmarkNode* folder = model_->AddGroup(barNode_, 2, L"group");
+ ASSERT_TRUE(folder);
+ model_->AddURL(folder, 0, L"nested0", GURL("http://example.com/n0"));
+ model_->AddURL(folder, 1, L"nested1", GURL("http://example.com/n1"));
+ }
+
+ void TearDown() {
+ [manager_ close];
+ CocoaTest::TearDown();
+ }
+
+ BrowserTestHelper browser_test_helper_;
+ BookmarkManagerController* manager_;
+ BookmarkModel* model_;
+ const BookmarkNode* barNode_;
+ const BookmarkItem* bar_;
+};
+
+TEST_F(BookmarkItemTest, RootItems) {
+ // Check the bookmarks-bar item:
+ EXPECT_EQ(barNode_, [bar_ node]);
+ EXPECT_EQ(bar_, [manager_ itemFromNode:barNode_]);
+ EXPECT_EQ(bar_, [manager_ bookmarkBarItem]);
+ EXPECT_TRUE([bar_ isFixed]);
+ EXPECT_FALSE([bar_ parent]);
+ EXPECT_TRUE([bar_ isFolder]);
+ EXPECT_EQ(0U, [bar_ numberOfChildren]);
+
+ // Check the 'others' item:
+ const BookmarkNode* otherNode = model_->other_node();
+ ASSERT_TRUE(otherNode);
+ EXPECT_NE(barNode_, otherNode);
+ BookmarkItem* other = [manager_ itemFromNode:otherNode];
+ ASSERT_TRUE(other);
+ EXPECT_EQ(otherNode, [other node]);
+ EXPECT_EQ(other, [manager_ itemFromNode:otherNode]);
+ EXPECT_EQ(other, [manager_ otherBookmarksItem]);
+ EXPECT_TRUE([other isFixed]);
+ EXPECT_FALSE([other parent]);
+ EXPECT_TRUE([other isFolder]);
+ EXPECT_EQ(0U, [other numberOfChildren]);
+
+ EXPECT_NE(bar_, other);
+ EXPECT_FALSE(isEqual(bar_, other));
+}
+
+TEST_F(BookmarkItemTest, AddItems) {
+ BookmarkItem* item1 = [bar_ addBookmarkWithTitle:@"item1"
+ URL:@"http://example.com/item1"
+ atIndex:0];
+ EXPECT_TRUE(isEqual(@"item1", [item1 title]));
+ EXPECT_TRUE(isEqual(@"http://example.com/item1", [item1 URLString]));
+ EXPECT_TRUE([item1 icon]);
+ EXPECT_FALSE([item1 isFixed]);
+ EXPECT_FALSE([item1 isFolder]);
+ EXPECT_EQ(bar_, [item1 parent]);
+ EXPECT_EQ(item1, [bar_ childAtIndex:0]);
+
+ BookmarkItem* folder = [bar_ addFolderWithTitle:@"folder"
+ atIndex:1];
+ EXPECT_TRUE(isEqual(@"folder", [folder title]));
+ EXPECT_FALSE([folder URLString]);
+ EXPECT_EQ([BookmarkItem folderIcon], [folder icon]);
+ EXPECT_FALSE([folder isFixed]);
+ EXPECT_TRUE([folder isFolder]);
+ ASSERT_EQ(0U, [folder numberOfChildren]);
+ EXPECT_EQ(bar_, [folder parent]);
+ EXPECT_EQ(folder, [bar_ childAtIndex:1]);
+
+ BookmarkItem* item2 = [folder addBookmarkWithTitle:@"item2"
+ URL:@"http://example.com/item2"
+ atIndex:0];
+ EXPECT_TRUE(isEqual(@"item2", [item2 title]));
+ EXPECT_TRUE(isEqual(@"http://example.com/item2", [item2 URLString]));
+ EXPECT_TRUE([item2 icon]);
+ EXPECT_FALSE([item2 isFixed]);
+ EXPECT_FALSE([item2 isFolder]);
+ EXPECT_EQ(folder, [item2 parent]);
+ EXPECT_EQ(item2, [folder childAtIndex:0]);
+ EXPECT_EQ(0U, [folder indexOfChild:item2]);
+}
+
+TEST_F(BookmarkItemTest, Hierarchy) {
+ AddTestBookmarks();
+ ASSERT_EQ(4U, [bar_ numberOfChildren]);
+ NSString* barTitle = [bar_ title];
+
+ // Check the bookmarks added to the bar.
+ BookmarkItem* item = [bar_ childAtIndex:0];
+ EXPECT_TRUE(isEqual(@"bookmark0", [item title]));
+ EXPECT_TRUE(isEqual(@"http://example.com/0", [item URLString]));
+ EXPECT_FALSE([item isFixed]);
+ EXPECT_EQ(bar_, [item parent]);
+ EXPECT_FALSE([item isFolder]);
+ EXPECT_TRUE(isEqual(barTitle, [item folderPath]));
+
+ item = [bar_ childAtIndex:1];
+ EXPECT_TRUE(isEqual(@"bookmark1", [item title]));
+ EXPECT_TRUE(isEqual(@"http://example.com/1", [item URLString]));
+ EXPECT_FALSE([item isFixed]);
+ EXPECT_EQ(bar_, [item parent]);
+ EXPECT_FALSE([item isFolder]);
+
+ item = [bar_ childAtIndex:3];
+ EXPECT_TRUE(isEqual(@"bookmark3", [item title]));
+ EXPECT_TRUE(isEqual(@"http://example.com/3", [item URLString]));
+ EXPECT_FALSE([item isFixed]);
+ EXPECT_EQ(bar_, [item parent]);
+ EXPECT_FALSE([item isFolder]);
+
+ // Check the subfolder.
+ BookmarkItem* folder = [bar_ childAtIndex:2];
+ EXPECT_TRUE(isEqual(@"group", [folder title]));
+ EXPECT_EQ(0U, [[folder URLString] length]);
+ EXPECT_FALSE([item isFixed]);
+ EXPECT_EQ(bar_, [folder parent]);
+ EXPECT_TRUE([folder isFolder]);
+ ASSERT_EQ(2U, [folder numberOfChildren]);
+ EXPECT_TRUE(isEqual(barTitle, [folder folderPath]));
+
+ // Check items in subfolder.
+ item = [folder childAtIndex:0];
+ EXPECT_TRUE(isEqual(@"nested0", [item title]));
+ EXPECT_TRUE(isEqual(@"http://example.com/n0", [item URLString]));
+ EXPECT_FALSE([item isFixed]);
+ EXPECT_EQ(folder, [item parent]);
+ EXPECT_FALSE([item isFolder]);
+ EXPECT_TRUE(isEqual([barTitle stringByAppendingString:@"/group"],
+ [item folderPath]));
+
+ item = [folder childAtIndex:1];
+ EXPECT_TRUE(isEqual(@"nested1", [item title]));
+ EXPECT_TRUE(isEqual(@"http://example.com/n1", [item URLString]));
+ EXPECT_FALSE([item isFixed]);
+ EXPECT_EQ(folder, [item parent]);
+ EXPECT_FALSE([item isFolder]);
+}
+
+} // namespace