Popular sites on the NTP: check that experiment group StartsWith (rather than IS...
[chromium-blink-merge.git] / chrome / browser / ui / cocoa / applescript / bookmark_folder_applescript_unittest.mm
blobe2a09790b909712bf7eee604265a1b3b2408afe9
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #import <Cocoa/Cocoa.h>
7 #include "base/mac/scoped_nsobject.h"
8 #include "base/strings/sys_string_conversions.h"
9 #import "chrome/browser/ui/cocoa/applescript/bookmark_applescript_utils_unittest.h"
10 #import "chrome/browser/ui/cocoa/applescript/bookmark_folder_applescript.h"
11 #import "chrome/browser/ui/cocoa/applescript/bookmark_item_applescript.h"
12 #import "chrome/browser/ui/cocoa/applescript/constants_applescript.h"
13 #import "chrome/browser/ui/cocoa/applescript/error_applescript.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15 #import "testing/gtest_mac.h"
16 #include "testing/platform_test.h"
17 #include "url/gurl.h"
19 typedef BookmarkAppleScriptTest BookmarkFolderAppleScriptTest;
21 namespace {
23 // Test all the bookmark folders within.
24 TEST_F(BookmarkFolderAppleScriptTest, BookmarkFolders) {
25   NSArray* bookmarkFolders = [bookmarkBar_.get() bookmarkFolders];
27   EXPECT_EQ(2U, [bookmarkFolders count]);
29   BookmarkFolderAppleScript* f1 = [bookmarkFolders objectAtIndex:0];
30   BookmarkFolderAppleScript* f2 = [bookmarkFolders objectAtIndex:1];
31   EXPECT_NSEQ(@"f1", [f1 title]);
32   EXPECT_NSEQ(@"f2", [f2 title]);
33   EXPECT_EQ(2, [[f1 index] intValue]);
34   EXPECT_EQ(4, [[f2 index] intValue]);
36   for (BookmarkFolderAppleScript* bookmarkFolder in bookmarkFolders) {
37     EXPECT_EQ([bookmarkFolder container], bookmarkBar_.get());
38     EXPECT_NSEQ(AppleScript::kBookmarkFoldersProperty,
39                 [bookmarkFolder containerProperty]);
40   }
43 // Insert a new bookmark folder.
44 TEST_F(BookmarkFolderAppleScriptTest, InsertBookmarkFolder) {
45   // Emulate what applescript would do when inserting a new bookmark folder.
46   // Emulates a script like |set var to make new bookmark folder with
47   // properties {title:"foo"}|.
48   base::scoped_nsobject<BookmarkFolderAppleScript> bookmarkFolder(
49       [[BookmarkFolderAppleScript alloc] init]);
50   base::scoped_nsobject<NSNumber> var([[bookmarkFolder.get() uniqueID] copy]);
51   [bookmarkFolder.get() setTitle:@"foo"];
52   [bookmarkBar_.get() insertInBookmarkFolders:bookmarkFolder.get()];
54   // Represents the bookmark folder after it's added.
55   BookmarkFolderAppleScript* bf =
56       [[bookmarkBar_.get() bookmarkFolders] objectAtIndex:2];
57   EXPECT_NSEQ(@"foo", [bf title]);
58   EXPECT_EQ([bf container], bookmarkBar_.get());
59   EXPECT_NSEQ(AppleScript::kBookmarkFoldersProperty,
60               [bf containerProperty]);
61   EXPECT_NSEQ(var.get(), [bf uniqueID]);
64 // Insert a new bookmark folder at a particular position.
65 TEST_F(BookmarkFolderAppleScriptTest, InsertBookmarkFolderAtPosition) {
66   // Emulate what applescript would do when inserting a new bookmark folder.
67   // Emulates a script like |set var to make new bookmark folder with
68   // properties {title:"foo"} at after bookmark folder 1|.
69   base::scoped_nsobject<BookmarkFolderAppleScript> bookmarkFolder(
70       [[BookmarkFolderAppleScript alloc] init]);
71   base::scoped_nsobject<NSNumber> var([[bookmarkFolder.get() uniqueID] copy]);
72   [bookmarkFolder.get() setTitle:@"foo"];
73   [bookmarkBar_.get() insertInBookmarkFolders:bookmarkFolder.get() atIndex:1];
75   // Represents the bookmark folder after it's added.
76   BookmarkFolderAppleScript* bf =
77       [[bookmarkBar_.get() bookmarkFolders] objectAtIndex:1];
78   EXPECT_NSEQ(@"foo", [bf title]);
79   EXPECT_EQ([bf container], bookmarkBar_.get());
80   EXPECT_NSEQ(AppleScript::kBookmarkFoldersProperty, [bf containerProperty]);
81   EXPECT_NSEQ(var.get(), [bf uniqueID]);
84 // Delete bookmark folders.
85 TEST_F(BookmarkFolderAppleScriptTest, DeleteBookmarkFolders) {
86   unsigned int folderCount = 2, itemCount = 3;
87   for (unsigned int i = 0; i < folderCount; ++i) {
88     EXPECT_EQ(folderCount - i, [[bookmarkBar_.get() bookmarkFolders] count]);
89     EXPECT_EQ(itemCount, [[bookmarkBar_.get() bookmarkItems] count]);
90     [bookmarkBar_.get() removeFromBookmarkFoldersAtIndex:0];
91   }
94 // Test all the bookmark items within.
95 TEST_F(BookmarkFolderAppleScriptTest, BookmarkItems) {
96   NSArray* bookmarkItems = [bookmarkBar_.get() bookmarkItems];
98   EXPECT_EQ(3U, [bookmarkItems count]);
100   BookmarkItemAppleScript* i1 = [bookmarkItems objectAtIndex:0];
101   BookmarkItemAppleScript* i2 = [bookmarkItems objectAtIndex:1];
102   BookmarkItemAppleScript* i3 = [bookmarkItems objectAtIndex:2];
103   EXPECT_NSEQ(@"a", [i1 title]);
104   EXPECT_NSEQ(@"d", [i2 title]);
105   EXPECT_NSEQ(@"h", [i3 title]);
106   EXPECT_EQ(1, [[i1 index] intValue]);
107   EXPECT_EQ(3, [[i2 index] intValue]);
108   EXPECT_EQ(5, [[i3 index] intValue]);
110   for (BookmarkItemAppleScript* bookmarkItem in bookmarkItems) {
111     EXPECT_EQ([bookmarkItem container], bookmarkBar_.get());
112     EXPECT_NSEQ(AppleScript::kBookmarkItemsProperty,
113                 [bookmarkItem containerProperty]);
114   }
117 // Insert a new bookmark item.
118 TEST_F(BookmarkFolderAppleScriptTest, InsertBookmarkItem) {
119   // Emulate what applescript would do when inserting a new bookmark folder.
120   // Emulates a script like |set var to make new bookmark item with
121   // properties {title:"Google", URL:"http://google.com"}|.
122   base::scoped_nsobject<BookmarkItemAppleScript> bookmarkItem(
123       [[BookmarkItemAppleScript alloc] init]);
124   base::scoped_nsobject<NSNumber> var([[bookmarkItem.get() uniqueID] copy]);
125   [bookmarkItem.get() setTitle:@"Google"];
126   [bookmarkItem.get() setURL:@"http://google.com"];
127   [bookmarkBar_.get() insertInBookmarkItems:bookmarkItem.get()];
129   // Represents the bookmark item after it's added.
130   BookmarkItemAppleScript* bi =
131       [[bookmarkBar_.get() bookmarkItems] objectAtIndex:3];
132   EXPECT_NSEQ(@"Google", [bi title]);
133   EXPECT_EQ(GURL("http://google.com/"),
134             GURL(base::SysNSStringToUTF8([bi URL])));
135   EXPECT_EQ([bi container], bookmarkBar_.get());
136   EXPECT_NSEQ(AppleScript::kBookmarkItemsProperty, [bi containerProperty]);
137   EXPECT_NSEQ(var.get(), [bi uniqueID]);
139   // Test to see no bookmark item is created when no/invlid URL is entered.
140   base::scoped_nsobject<FakeScriptCommand> fakeScriptCommand(
141       [[FakeScriptCommand alloc] init]);
142   bookmarkItem.reset([[BookmarkItemAppleScript alloc] init]);
143   [bookmarkBar_.get() insertInBookmarkItems:bookmarkItem.get()];
144   EXPECT_EQ((int)AppleScript::errInvalidURL,
145             [fakeScriptCommand.get() scriptErrorNumber]);
148 // Insert a new bookmark item at a particular position.
149 TEST_F(BookmarkFolderAppleScriptTest, InsertBookmarkItemAtPosition) {
150   // Emulate what applescript would do when inserting a new bookmark item.
151   // Emulates a script like |set var to make new bookmark item with
152   // properties {title:"XKCD", URL:"http://xkcd.org}
153   // at after bookmark item 1|.
154   base::scoped_nsobject<BookmarkItemAppleScript> bookmarkItem(
155       [[BookmarkItemAppleScript alloc] init]);
156   base::scoped_nsobject<NSNumber> var([[bookmarkItem.get() uniqueID] copy]);
157   [bookmarkItem.get() setTitle:@"XKCD"];
158   [bookmarkItem.get() setURL:@"http://xkcd.org"];
160   [bookmarkBar_.get() insertInBookmarkItems:bookmarkItem.get() atIndex:1];
162   // Represents the bookmark item after its added.
163   BookmarkItemAppleScript* bi =
164       [[bookmarkBar_.get() bookmarkItems] objectAtIndex:1];
165   EXPECT_NSEQ(@"XKCD", [bi title]);
166   EXPECT_EQ(GURL("http://xkcd.org/"),
167             GURL(base::SysNSStringToUTF8([bi URL])));
168   EXPECT_EQ([bi container], bookmarkBar_.get());
169   EXPECT_NSEQ(AppleScript::kBookmarkItemsProperty,
170               [bi containerProperty]);
171   EXPECT_NSEQ(var.get(), [bi uniqueID]);
173   // Test to see no bookmark item is created when no/invlid URL is entered.
174   base::scoped_nsobject<FakeScriptCommand> fakeScriptCommand(
175       [[FakeScriptCommand alloc] init]);
176   bookmarkItem.reset([[BookmarkItemAppleScript alloc] init]);
177   [bookmarkBar_.get() insertInBookmarkItems:bookmarkItem.get() atIndex:1];
178   EXPECT_EQ((int)AppleScript::errInvalidURL,
179             [fakeScriptCommand.get() scriptErrorNumber]);
182 // Delete bookmark items.
183 TEST_F(BookmarkFolderAppleScriptTest, DeleteBookmarkItems) {
184   unsigned int folderCount = 2, itemCount = 3;
185   for (unsigned int i = 0; i < itemCount; ++i) {
186     EXPECT_EQ(folderCount, [[bookmarkBar_.get() bookmarkFolders] count]);
187     EXPECT_EQ(itemCount - i, [[bookmarkBar_.get() bookmarkItems] count]);
188     [bookmarkBar_.get() removeFromBookmarkItemsAtIndex:0];
189   }
192 // Set and get title.
193 TEST_F(BookmarkFolderAppleScriptTest, GetAndSetTitle) {
194   NSArray* bookmarkFolders = [bookmarkBar_.get() bookmarkFolders];
195   BookmarkFolderAppleScript* folder1 = [bookmarkFolders objectAtIndex:0];
196   [folder1 setTitle:@"Foo"];
197   EXPECT_NSEQ(@"Foo", [folder1 title]);
200 }  // namespace