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