bookmark_model_observer_for_cocoa_unittest.mm revision ddb351dbec246cf1fab5ec20d2d5520909041de1
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.
4
5#import <Cocoa/Cocoa.h>
6
7#include "base/memory/scoped_nsobject.h"
8#include "base/memory/scoped_ptr.h"
9#include "base/utf_string_conversions.h"
10#import "chrome/browser/ui/cocoa/bookmarks/bookmark_model_observer_for_cocoa.h"
11#import "chrome/browser/ui/cocoa/browser_test_helper.h"
12#import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
13
14// Keep track of bookmark pings.
15@interface ObserverPingTracker : NSObject {
16 @public
17  int pings;
18}
19@end
20
21@implementation ObserverPingTracker
22- (void)pingMe:(id)sender {
23  pings++;
24}
25@end
26
27namespace {
28
29class BookmarkModelObserverForCocoaTest : public CocoaTest {
30 public:
31  BrowserTestHelper helper_;
32
33  BookmarkModelObserverForCocoaTest() {}
34  virtual ~BookmarkModelObserverForCocoaTest() {}
35 private:
36  DISALLOW_COPY_AND_ASSIGN(BookmarkModelObserverForCocoaTest);
37};
38
39
40TEST_F(BookmarkModelObserverForCocoaTest, TestCallback) {
41  BookmarkModel* model = helper_.profile()->GetBookmarkModel();
42  const BookmarkNode* node = model->AddURL(model->GetBookmarkBarNode(),
43                                           0, ASCIIToUTF16("super"),
44                                           GURL("http://www.google.com"));
45
46  scoped_nsobject<ObserverPingTracker>
47      pingCount([[ObserverPingTracker alloc] init]);
48
49  scoped_ptr<BookmarkModelObserverForCocoa>
50      observer(new BookmarkModelObserverForCocoa(node, model,
51                                                 pingCount,
52                                                 @selector(pingMe:)));
53
54  EXPECT_EQ(0, pingCount.get()->pings);
55
56  model->SetTitle(node, ASCIIToUTF16("duper"));
57  EXPECT_EQ(1, pingCount.get()->pings);
58  model->SetURL(node, GURL("http://www.google.com/reader"));
59  EXPECT_EQ(2, pingCount.get()->pings);
60
61  model->Move(node, model->other_node(), 0);
62  EXPECT_EQ(3, pingCount.get()->pings);
63
64  model->Remove(node->parent(), 0);
65  EXPECT_EQ(4, pingCount.get()->pings);
66}
67
68}  // namespace
69