Index: chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state_unittest.mm |
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state_unittest.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5efd8798f61f76125727f0438aa558bcf7530650 |
--- /dev/null |
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state_unittest.mm |
@@ -0,0 +1,77 @@ |
+// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#import <Cocoa/Cocoa.h> |
+ |
+#include "base/message_loop.h" |
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" |
+#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h" |
+#import "chrome/browser/ui/cocoa/cocoa_test_helper.h" |
+ |
+namespace { |
+ |
+class BookmarkBarFolderHoverStateTest : public CocoaTest { |
+}; |
+ |
+// Hover state machine interface. |
+// A strict call order is implied with these calls. It is ONLY valid to make |
+// these specific state transitions. |
+TEST_F(BookmarkBarFolderHoverStateTest, HoverState) { |
+ MessageLoopForUI message_loop; |
+ scoped_nsobject<BookmarkBarFolderHoverState> bbfhs; |
+ bbfhs.reset([[BookmarkBarFolderHoverState alloc] init]); |
+ |
+ // Initial state. |
+ EXPECT_FALSE([bbfhs hoverButton]); |
+ ASSERT_EQ(kHoverStateClosed, [bbfhs hoverState]); |
+ |
+ scoped_nsobject<BookmarkButton> button; |
+ button.reset([[BookmarkButton alloc] initWithFrame:NSMakeRect(0, 0, 20, 20)]); |
+ |
+ // Test transition from closed to opening. |
+ ASSERT_EQ(kHoverStateClosed, [bbfhs hoverState]); |
+ [bbfhs scheduleOpenBookmarkFolderOnHoverButton:button]; |
+ ASSERT_EQ(kHoverStateOpening, [bbfhs hoverState]); |
+ |
+ // Test transition from opening to closed (aka cancel open). |
+ [bbfhs cancelPendingOpenBookmarkFolderOnHoverButton]; |
+ ASSERT_EQ(kHoverStateClosed, [bbfhs hoverState]); |
+ ASSERT_EQ(nil, [bbfhs hoverButton]); |
+ |
+ // Test transition from closed to opening. |
+ ASSERT_EQ(kHoverStateClosed, [bbfhs hoverState]); |
+ [bbfhs scheduleOpenBookmarkFolderOnHoverButton:button]; |
+ ASSERT_EQ(kHoverStateOpening, [bbfhs hoverState]); |
+ |
+ // Test transition from opening to opened. |
+ message_loop.PostDelayedTask( |
+ FROM_HERE, |
+ new MessageLoop::QuitTask, |
+ bookmarks::kDragHoverOpenDelay * 1000.0 * 1.5); |
+ message_loop.Run(); |
+ ASSERT_EQ(kHoverStateOpen, [bbfhs hoverState]); |
+ ASSERT_EQ(button, [bbfhs hoverButton]); |
+ |
+ // Test transition from opening to opened. |
+ [bbfhs scheduleCloseBookmarkFolderOnHoverButton]; |
+ ASSERT_EQ(kHoverStateClosing, [bbfhs hoverState]); |
+ |
+ // Test transition from closing to open (aka cancel close). |
+ [bbfhs cancelPendingCloseBookmarkFolderOnHoverButton]; |
+ ASSERT_EQ(kHoverStateOpen, [bbfhs hoverState]); |
+ ASSERT_EQ(button, [bbfhs hoverButton]); |
+ |
+ // Test transition from closing to closed. |
+ [bbfhs scheduleCloseBookmarkFolderOnHoverButton]; |
+ ASSERT_EQ(kHoverStateClosing, [bbfhs hoverState]); |
+ message_loop.PostDelayedTask( |
+ FROM_HERE, |
+ new MessageLoop::QuitTask, |
+ bookmarks::kDragHoverCloseDelay * 1000.0 * 1.5); |
+ message_loop.Run(); |
+ ASSERT_EQ(kHoverStateClosed, [bbfhs hoverState]); |
+ ASSERT_EQ(nil, [bbfhs hoverButton]); |
+} |
+ |
+} // namespace |