bookmark_menu_cocoa_controller_unittest.mm revision 21d179b334e59e9a3bfcaed4c4430bef1bc5759d
1// Copyright (c) 2010 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. 4 5#include "base/string16.h" 6#include "chrome/browser/bookmarks/bookmark_model.h" 7#include "chrome/browser/ui/cocoa/browser_test_helper.h" 8#import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h" 9#include "chrome/browser/ui/browser.h" 10#include "testing/gtest/include/gtest/gtest.h" 11 12@interface FakeBookmarkMenuController : BookmarkMenuCocoaController { 13 @public 14 BrowserTestHelper* helper_; 15 const BookmarkNode* nodes_[2]; 16 BOOL opened_[2]; 17} 18@end 19 20@implementation FakeBookmarkMenuController 21 22- (id)init { 23 if ((self = [super init])) { 24 string16 empty; 25 helper_ = new BrowserTestHelper(); 26 BookmarkModel* model = helper_->browser()->profile()->GetBookmarkModel(); 27 const BookmarkNode* bookmark_bar = model->GetBookmarkBarNode(); 28 nodes_[0] = model->AddURL(bookmark_bar, 0, empty, GURL("http://0.com")); 29 nodes_[1] = model->AddURL(bookmark_bar, 1, empty, GURL("http://1.com")); 30 } 31 return self; 32} 33 34- (void)dealloc { 35 delete helper_; 36 [super dealloc]; 37} 38 39- (const BookmarkNode*)nodeForIdentifier:(int)identifier { 40 if ((identifier < 0) || (identifier >= 2)) 41 return NULL; 42 return nodes_[identifier]; 43} 44 45- (void)openURLForNode:(const BookmarkNode*)node { 46 std::string url = node->GetURL().possibly_invalid_spec(); 47 if (url.find("http://0.com") != std::string::npos) 48 opened_[0] = YES; 49 if (url.find("http://1.com") != std::string::npos) 50 opened_[1] = YES; 51} 52 53@end // FakeBookmarkMenuController 54 55 56TEST(BookmarkMenuCocoaControllerTest, TestOpenItem) { 57 FakeBookmarkMenuController *c = [[FakeBookmarkMenuController alloc] init]; 58 NSMenuItem *item = [[[NSMenuItem alloc] init] autorelease]; 59 for (int i = 0; i < 2; i++) { 60 [item setTag:i]; 61 ASSERT_EQ(c->opened_[i], NO); 62 [c openBookmarkMenuItem:item]; 63 ASSERT_NE(c->opened_[i], NO); 64 } 65 [c release]; 66} 67