Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(449)

Unified Diff: chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view_unittest.mm

Issue 7039047: Clean up bookmark_bar_folder_view testing. Specifically get it working with OCMock. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view_unittest.mm
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view_unittest.mm
index df2e98fb118ac90edcc4cb35aebb2610b97b2f1c..9e858de0b44c56d55d9cf4733e541159529a45cd 100644
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view_unittest.mm
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view_unittest.mm
@@ -3,7 +3,7 @@
// found in the LICENSE file.
#include "base/memory/scoped_nsobject.h"
-#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h"
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target.h"
@@ -12,203 +12,119 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/platform_test.h"
#import "third_party/mozilla/NSPasteboard+Utils.h"
+#import "third_party/ocmock/OCMock/OCMock.h"
namespace {
- const CGFloat kFakeIndicatorPos = 7.0;
-};
-
-// Fake DraggingInfo, fake BookmarkBarController, fake NSPasteboard...
-@interface FakeDraggingInfo : NSObject {
- @public
- BOOL dragButtonToPong_;
- BOOL dragURLsPong_;
- BOOL dragBookmarkDataPong_;
- BOOL dropIndicatorShown_;
- BOOL draggingEnteredCalled_;
- // Only mock one type of drag data at a time.
- NSString* dragDataType_;
-}
-@property (readwrite) BOOL dropIndicatorShown;
-@property (readwrite) BOOL draggingEnteredCalled;
-@property (copy) NSString* dragDataType;
-@end
-
-@implementation FakeDraggingInfo
-
-@synthesize dropIndicatorShown = dropIndicatorShown_;
-@synthesize draggingEnteredCalled = draggingEnteredCalled_;
-@synthesize dragDataType = dragDataType_;
-- (id)init {
- if ((self = [super init])) {
- dropIndicatorShown_ = YES;
- }
- return self;
-}
-
-- (void)dealloc {
- [dragDataType_ release];
- [super dealloc];
-}
-
-- (void)reset {
- [dragDataType_ release];
- dragDataType_ = nil;
- dragButtonToPong_ = NO;
- dragURLsPong_ = NO;
- dragBookmarkDataPong_ = NO;
- dropIndicatorShown_ = YES;
- draggingEnteredCalled_ = NO;
-}
-
-// NSDragInfo mocking functions.
-
-- (id)draggingPasteboard {
- return self;
-}
-
-// So we can look local.
-- (id)draggingSource {
- return self;
-}
-
-- (NSDragOperation)draggingSourceOperationMask {
- return NSDragOperationCopy | NSDragOperationMove;
-}
-
-- (NSPoint)draggingLocation {
- return NSMakePoint(10, 10);
-}
-
-// NSPasteboard mocking functions.
-
-- (BOOL)containsURLData {
- NSArray* urlTypes = [URLDropTargetHandler handledDragTypes];
- if (dragDataType_)
- return [urlTypes containsObject:dragDataType_];
- return NO;
-}
-
-- (NSData*)dataForType:(NSString*)type {
- if (dragDataType_ && [dragDataType_ isEqualToString:type])
- return [NSData data]; // Return something, anything.
- return nil;
-}
-
-// Fake a controller for callback ponging
-
-- (BOOL)dragButton:(BookmarkButton*)button to:(NSPoint)point copy:(BOOL)copy {
- dragButtonToPong_ = YES;
- return YES;
-}
-
-- (BOOL)addURLs:(NSArray*)urls withTitles:(NSArray*)titles at:(NSPoint)point {
- dragURLsPong_ = YES;
- return YES;
-}
-
-- (void)getURLs:(NSArray**)outUrls
- andTitles:(NSArray**)outTitles
- convertingFilenames:(BOOL)convertFilenames {
-}
-
-- (BOOL)dragBookmarkData:(id<NSDraggingInfo>)info {
- dragBookmarkDataPong_ = YES;
- return NO;
-}
-
-// Confirm the pongs.
-
-- (BOOL)dragButtonToPong {
- return dragButtonToPong_;
-}
-
-- (BOOL)dragURLsPong {
- return dragURLsPong_;
-}
-
-- (BOOL)dragBookmarkDataPong {
- return dragBookmarkDataPong_;
-}
-
-- (CGFloat)indicatorPosForDragToPoint:(NSPoint)point {
- return kFakeIndicatorPos;
-}
-
-- (BOOL)shouldShowIndicatorShownForPoint:(NSPoint)point {
- return dropIndicatorShown_;
-}
-
-- (BOOL)draggingAllowed:(id<NSDraggingInfo>)info {
- return YES;
-}
-
-- (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)info {
- draggingEnteredCalled_ = YES;
- return NSDragOperationNone;
-}
-
-@end
-
-namespace {
+// Some values used for mocks and fakes.
+const CGFloat kFakeIndicatorPos = 7.0;
+const NSPoint kPoint = {10, 10};
+const BOOL kYes = YES;
+const BOOL kNo = NO;
class BookmarkBarFolderViewTest : public CocoaTest {
public:
virtual void SetUp() {
CocoaTest::SetUp();
view_.reset([[BookmarkBarFolderView alloc] init]);
+ mock_controller_.reset([GetMockController(YES) retain]);
+ [view_ awakeFromNib];
+ [view_ setController:mock_controller_];
+ }
+
+ virtual void TearDown() {
+ [mock_controller_ verify];
+ CocoaTest::TearDown();
+ }
+
+ id GetFakePasteboardForType(NSString* dataType) {
+ id pasteboard = [OCMockObject mockForClass:[NSPasteboard class]];
+ [[[pasteboard stub] andReturn:[NSData data]] dataForType:dataType];
+ [[[pasteboard stub] andReturn:nil] dataForType:OCMOCK_ANY];
+ [[[pasteboard stub] andReturnValue:OCMOCK_VALUE(kYes)] containsURLData];
+ [[pasteboard stub] getURLs:[OCMArg setTo:nil]
+ andTitles:[OCMArg setTo:nil]
+ convertingFilenames:YES];
+ return pasteboard;
+ }
+
+ id GetFakeDragInfoForType(NSString* dataType) {
+ id drag_info = [OCMockObject mockForProtocol:@protocol(NSDraggingInfo)];
+ id pasteboard = GetFakePasteboardForType(dataType);
+ [[[drag_info stub] andReturn:pasteboard] draggingPasteboard];
+ [[[drag_info stub] andReturnValue:[NSValue valueWithPoint:kPoint]]
+ draggingLocation];
+ [[[drag_info stub] andReturn:drag_info]
+ draggingSource];
+ NSDragOperation drag_operation = NSDragOperationCopy | NSDragOperationMove;
+ [[[drag_info stub] andReturnValue:OCMOCK_VALUE(drag_operation)]
+ draggingSourceOperationMask];
+ return drag_info;
+ }
+
+ id GetMockController(BOOL show_indicator) {
+ id mock_controller
+ = [OCMockObject mockForClass:[BookmarkBarFolderController class]];
+ [[[mock_controller stub] andReturnValue:OCMOCK_VALUE(kYes)]
+ draggingAllowed:OCMOCK_ANY];
+ [[[mock_controller stub] andReturnValue:OCMOCK_VALUE(show_indicator)]
+ shouldShowIndicatorShownForPoint:kPoint];
+ [[[mock_controller stub] andReturnValue:OCMOCK_VALUE(kFakeIndicatorPos)]
+ indicatorPosForDragToPoint:kPoint];
+ return mock_controller;
}
+ scoped_nsobject<id> mock_controller_;
scoped_nsobject<BookmarkBarFolderView> view_;
};
+
mrossetti 2011/05/18 20:38:30 Nit: extra line.
TEST_F(BookmarkBarFolderViewTest, BookmarkButtonDragAndDrop) {
- [view_ awakeFromNib];
- scoped_nsobject<FakeDraggingInfo> info([[FakeDraggingInfo alloc] init]);
- [view_ setController:info.get()];
- [info reset];
-
- [info setDragDataType:kBookmarkButtonDragType];
- EXPECT_EQ([view_ draggingEntered:(id)info.get()], NSDragOperationMove);
- EXPECT_TRUE([view_ performDragOperation:(id)info.get()]);
- EXPECT_TRUE([info dragButtonToPong]);
- EXPECT_FALSE([info dragURLsPong]);
- EXPECT_TRUE([info dragBookmarkDataPong]);
+ id drag_info = GetFakeDragInfoForType(kBookmarkButtonDragType);
+ NSDragOperation expectedValue = NSDragOperationNone;
+ [[[mock_controller_ expect] andReturnValue:OCMOCK_VALUE(expectedValue)]
+ draggingEntered:drag_info];
+ [[[mock_controller_ expect] andReturnValue:OCMOCK_VALUE(kNo)]
+ dragBookmarkData:drag_info];
+ [[[mock_controller_ expect] andReturnValue:OCMOCK_VALUE(kYes)]
+ dragButton:OCMOCK_ANY to:kPoint copy:NO];
+
+ EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove);
+ EXPECT_TRUE([view_ performDragOperation:drag_info]);
}
TEST_F(BookmarkBarFolderViewTest, URLDragAndDrop) {
- [view_ awakeFromNib];
- scoped_nsobject<FakeDraggingInfo> info([[FakeDraggingInfo alloc] init]);
- [view_ setController:info.get()];
- [info reset];
-
NSArray* dragTypes = [URLDropTargetHandler handledDragTypes];
for (NSString* type in dragTypes) {
- [info setDragDataType:type];
- EXPECT_EQ([view_ draggingEntered:(id)info.get()], NSDragOperationMove);
- EXPECT_TRUE([view_ performDragOperation:(id)info.get()]);
- EXPECT_FALSE([info dragButtonToPong]);
- EXPECT_TRUE([info dragURLsPong]);
- EXPECT_TRUE([info dragBookmarkDataPong]);
- [info reset];
+ id drag_info = GetFakeDragInfoForType(type);
+ NSDragOperation expectedValue = NSDragOperationNone;
+ [[[mock_controller_ expect] andReturnValue:OCMOCK_VALUE(expectedValue)]
+ draggingEntered:drag_info];
+ [[[mock_controller_ expect] andReturnValue:OCMOCK_VALUE(kNo)]
+ dragBookmarkData:drag_info];
+ [[[mock_controller_ expect] andReturnValue:OCMOCK_VALUE(kYes)]
+ addURLs:OCMOCK_ANY withTitles:OCMOCK_ANY at:kPoint];
+ EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove);
+ EXPECT_TRUE([view_ performDragOperation:drag_info]);
+ [mock_controller_ verify];
}
}
TEST_F(BookmarkBarFolderViewTest, BookmarkButtonDropIndicator) {
- [view_ awakeFromNib];
- scoped_nsobject<FakeDraggingInfo> info([[FakeDraggingInfo alloc] init]);
- [view_ setController:info.get()];
- [info reset];
-
- [info setDragDataType:kBookmarkButtonDragType];
- EXPECT_FALSE([info draggingEnteredCalled]);
- EXPECT_EQ([view_ draggingEntered:(id)info.get()], NSDragOperationMove);
- EXPECT_TRUE([info draggingEnteredCalled]); // Ensure controller pinged.
+
mrossetti 2011/05/18 20:38:30 Nit: Extra line.
+ id drag_info = GetFakeDragInfoForType(kBookmarkButtonDragType);
+ NSDragOperation expectedValue = NSDragOperationNone;
+ [[[mock_controller_ expect] andReturnValue:OCMOCK_VALUE(expectedValue)]
+ draggingEntered:drag_info];
+ EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove);
+ [mock_controller_ verify];
EXPECT_TRUE([view_ dropIndicatorShown]);
EXPECT_EQ([view_ dropIndicatorPosition], kFakeIndicatorPos);
-
- [info setDropIndicatorShown:NO];
- EXPECT_EQ([view_ draggingEntered:(id)info.get()], NSDragOperationMove);
+ mock_controller_.reset([GetMockController(NO) retain]);
+ [view_ setController:mock_controller_];
+ [[[mock_controller_ expect] andReturnValue:OCMOCK_VALUE(expectedValue)]
+ draggingEntered:drag_info];
+ EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove);
EXPECT_FALSE([view_ dropIndicatorShown]);
}

Powered by Google App Engine
This is Rietveld 408576698