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