diff options
Diffstat (limited to 'chrome/browser/ui/cocoa/applescript/bookmark_folder_applescript_unittest.mm')
-rw-r--r-- | chrome/browser/ui/cocoa/applescript/bookmark_folder_applescript_unittest.mm | 200 |
1 files changed, 200 insertions, 0 deletions
diff --git a/chrome/browser/ui/cocoa/applescript/bookmark_folder_applescript_unittest.mm b/chrome/browser/ui/cocoa/applescript/bookmark_folder_applescript_unittest.mm new file mode 100644 index 0000000..fbdbf09 --- /dev/null +++ b/chrome/browser/ui/cocoa/applescript/bookmark_folder_applescript_unittest.mm @@ -0,0 +1,200 @@ +// 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. + +#import <Cocoa/Cocoa.h> + +#include "base/scoped_nsobject.h" +#include "base/sys_string_conversions.h" +#import "chrome/browser/ui/cocoa/applescript/bookmark_applescript_utils_unittest.h" +#import "chrome/browser/ui/cocoa/applescript/bookmark_folder_applescript.h" +#import "chrome/browser/ui/cocoa/applescript/bookmark_item_applescript.h" +#import "chrome/browser/ui/cocoa/applescript/constants_applescript.h" +#import "chrome/browser/ui/cocoa/applescript/error_applescript.h" +#include "googleurl/src/gurl.h" +#include "testing/gtest/include/gtest/gtest.h" +#import "testing/gtest_mac.h" +#include "testing/platform_test.h" + +typedef BookmarkAppleScriptTest BookmarkFolderAppleScriptTest; + +namespace { + +// Test all the bookmark folders within. +TEST_F(BookmarkFolderAppleScriptTest, BookmarkFolders) { + NSArray* bookmarkFolders = [bookmarkBar_.get() bookmarkFolders]; + + EXPECT_EQ(2U, [bookmarkFolders count]); + + BookmarkFolderAppleScript* f1 = [bookmarkFolders objectAtIndex:0]; + BookmarkFolderAppleScript* f2 = [bookmarkFolders objectAtIndex:1]; + EXPECT_NSEQ(@"f1", [f1 title]); + EXPECT_NSEQ(@"f2", [f2 title]); + EXPECT_EQ(2, [[f1 index] intValue]); + EXPECT_EQ(4, [[f2 index] intValue]); + + for (BookmarkFolderAppleScript* bookmarkFolder in bookmarkFolders) { + EXPECT_EQ([bookmarkFolder container], bookmarkBar_.get()); + EXPECT_NSEQ(AppleScript::kBookmarkFoldersProperty, + [bookmarkFolder containerProperty]); + } +} + +// Insert a new bookmark folder. +TEST_F(BookmarkFolderAppleScriptTest, InsertBookmarkFolder) { + // Emulate what applescript would do when inserting a new bookmark folder. + // Emulates a script like |set var to make new bookmark folder with + // properties {title:"foo"}|. + scoped_nsobject<BookmarkFolderAppleScript> bookmarkFolder( + [[BookmarkFolderAppleScript alloc] init]); + scoped_nsobject<NSNumber> var([[bookmarkFolder.get() uniqueID] copy]); + [bookmarkFolder.get() setTitle:@"foo"]; + [bookmarkBar_.get() insertInBookmarkFolders:bookmarkFolder.get()]; + + // Represents the bookmark folder after its added. + BookmarkFolderAppleScript* bf = + [[bookmarkBar_.get() bookmarkFolders] objectAtIndex:2]; + EXPECT_NSEQ(@"foo", [bf title]); + EXPECT_EQ([bf container], bookmarkBar_.get()); + EXPECT_NSEQ(AppleScript::kBookmarkFoldersProperty, + [bf containerProperty]); + EXPECT_NSEQ(var.get(), [bf uniqueID]); +} + +// Insert a new bookmark folder at a particular position. +TEST_F(BookmarkFolderAppleScriptTest, InsertBookmarkFolderAtPosition) { + // Emulate what applescript would do when inserting a new bookmark folder. + // Emulates a script like |set var to make new bookmark folder with + // properties {title:"foo"} at after bookmark folder 1|. + scoped_nsobject<BookmarkFolderAppleScript> bookmarkFolder( + [[BookmarkFolderAppleScript alloc] init]); + scoped_nsobject<NSNumber> var([[bookmarkFolder.get() uniqueID] copy]); + [bookmarkFolder.get() setTitle:@"foo"]; + [bookmarkBar_.get() insertInBookmarkFolders:bookmarkFolder.get() atIndex:1]; + + // Represents the bookmark folder after its added. + BookmarkFolderAppleScript* bf = + [[bookmarkBar_.get() bookmarkFolders] objectAtIndex:1]; + EXPECT_NSEQ(@"foo", [bf title]); + EXPECT_EQ([bf container], bookmarkBar_.get()); + EXPECT_NSEQ(AppleScript::kBookmarkFoldersProperty, [bf containerProperty]); + EXPECT_NSEQ(var.get(), [bf uniqueID]); +} + +// Delete bookmark folders. +TEST_F(BookmarkFolderAppleScriptTest, DeleteBookmarkFolders) { + unsigned int folderCount = 2, itemCount = 3; + for (unsigned int i = 0; i < folderCount; ++i) { + EXPECT_EQ(folderCount - i, [[bookmarkBar_.get() bookmarkFolders] count]); + EXPECT_EQ(itemCount, [[bookmarkBar_.get() bookmarkItems] count]); + [bookmarkBar_.get() removeFromBookmarkFoldersAtIndex:0]; + } +} + +// Test all the bookmark items within. +TEST_F(BookmarkFolderAppleScriptTest, BookmarkItems) { + NSArray* bookmarkItems = [bookmarkBar_.get() bookmarkItems]; + + EXPECT_EQ(3U, [bookmarkItems count]); + + BookmarkItemAppleScript* i1 = [bookmarkItems objectAtIndex:0]; + BookmarkItemAppleScript* i2 = [bookmarkItems objectAtIndex:1]; + BookmarkItemAppleScript* i3 = [bookmarkItems objectAtIndex:2]; + EXPECT_NSEQ(@"a", [i1 title]); + EXPECT_NSEQ(@"d", [i2 title]); + EXPECT_NSEQ(@"h", [i3 title]); + EXPECT_EQ(1, [[i1 index] intValue]); + EXPECT_EQ(3, [[i2 index] intValue]); + EXPECT_EQ(5, [[i3 index] intValue]); + + for (BookmarkItemAppleScript* bookmarkItem in bookmarkItems) { + EXPECT_EQ([bookmarkItem container], bookmarkBar_.get()); + EXPECT_NSEQ(AppleScript::kBookmarkItemsProperty, + [bookmarkItem containerProperty]); + } +} + +// Insert a new bookmark item. +TEST_F(BookmarkFolderAppleScriptTest, InsertBookmarkItem) { + // Emulate what applescript would do when inserting a new bookmark folder. + // Emulates a script like |set var to make new bookmark item with + // properties {title:"Google", URL:"http://google.com"}|. + scoped_nsobject<BookmarkItemAppleScript> bookmarkItem( + [[BookmarkItemAppleScript alloc] init]); + scoped_nsobject<NSNumber> var([[bookmarkItem.get() uniqueID] copy]); + [bookmarkItem.get() setTitle:@"Google"]; + [bookmarkItem.get() setURL:@"http://google.com"]; + [bookmarkBar_.get() insertInBookmarkItems:bookmarkItem.get()]; + + // Represents the bookmark item after its added. + BookmarkItemAppleScript* bi = + [[bookmarkBar_.get() bookmarkItems] objectAtIndex:3]; + EXPECT_NSEQ(@"Google", [bi title]); + EXPECT_EQ(GURL("http://google.com/"), + GURL(base::SysNSStringToUTF8([bi URL]))); + EXPECT_EQ([bi container], bookmarkBar_.get()); + EXPECT_NSEQ(AppleScript::kBookmarkItemsProperty, [bi containerProperty]); + EXPECT_NSEQ(var.get(), [bi uniqueID]); + + // Test to see no bookmark item is created when no/invlid URL is entered. + scoped_nsobject<FakeScriptCommand> fakeScriptCommand( + [[FakeScriptCommand alloc] init]); + bookmarkItem.reset([[BookmarkItemAppleScript alloc] init]); + [bookmarkBar_.get() insertInBookmarkItems:bookmarkItem.get()]; + EXPECT_EQ((int)AppleScript::errInvalidURL, + [fakeScriptCommand.get() scriptErrorNumber]); +} + +// Insert a new bookmark item at a particular position. +TEST_F(BookmarkFolderAppleScriptTest, InsertBookmarkItemAtPosition) { + // Emulate what applescript would do when inserting a new bookmark item. + // Emulates a script like |set var to make new bookmark item with + // properties {title:"XKCD", URL:"http://xkcd.org} + // at after bookmark item 1|. + scoped_nsobject<BookmarkItemAppleScript> bookmarkItem( + [[BookmarkItemAppleScript alloc] init]); + scoped_nsobject<NSNumber> var([[bookmarkItem.get() uniqueID] copy]); + [bookmarkItem.get() setTitle:@"XKCD"]; + [bookmarkItem.get() setURL:@"http://xkcd.org"]; + + [bookmarkBar_.get() insertInBookmarkItems:bookmarkItem.get() atIndex:1]; + + // Represents the bookmark item after its added. + BookmarkItemAppleScript* bi = + [[bookmarkBar_.get() bookmarkItems] objectAtIndex:1]; + EXPECT_NSEQ(@"XKCD", [bi title]); + EXPECT_EQ(GURL("http://xkcd.org/"), + GURL(base::SysNSStringToUTF8([bi URL]))); + EXPECT_EQ([bi container], bookmarkBar_.get()); + EXPECT_NSEQ(AppleScript::kBookmarkItemsProperty, + [bi containerProperty]); + EXPECT_NSEQ(var.get(), [bi uniqueID]); + + // Test to see no bookmark item is created when no/invlid URL is entered. + scoped_nsobject<FakeScriptCommand> fakeScriptCommand( + [[FakeScriptCommand alloc] init]); + bookmarkItem.reset([[BookmarkItemAppleScript alloc] init]); + [bookmarkBar_.get() insertInBookmarkItems:bookmarkItem.get() atIndex:1]; + EXPECT_EQ((int)AppleScript::errInvalidURL, + [fakeScriptCommand.get() scriptErrorNumber]); +} + +// Delete bookmark items. +TEST_F(BookmarkFolderAppleScriptTest, DeleteBookmarkItems) { + unsigned int folderCount = 2, itemCount = 3; + for (unsigned int i = 0; i < itemCount; ++i) { + EXPECT_EQ(folderCount, [[bookmarkBar_.get() bookmarkFolders] count]); + EXPECT_EQ(itemCount - i, [[bookmarkBar_.get() bookmarkItems] count]); + [bookmarkBar_.get() removeFromBookmarkItemsAtIndex:0]; + } +} + +// Set and get title. +TEST_F(BookmarkFolderAppleScriptTest, GetAndSetTitle) { + NSArray* bookmarkFolders = [bookmarkBar_.get() bookmarkFolders]; + BookmarkFolderAppleScript* folder1 = [bookmarkFolders objectAtIndex:0]; + [folder1 setTitle:@"Foo"]; + EXPECT_NSEQ(@"Foo", [folder1 title]); +} + +} // namespace |