| Index: ui/views/controls/single_split_view_unittest.cc
|
| ===================================================================
|
| --- ui/views/controls/single_split_view_unittest.cc (revision 187863)
|
| +++ ui/views/controls/single_split_view_unittest.cc (working copy)
|
| @@ -49,6 +49,19 @@
|
| MOCK_METHOD1(SplitHandleMoved, bool(views::SingleSplitView*));
|
| };
|
|
|
| +class MinimumSizedView: public views::View {
|
| + public:
|
| + MinimumSizedView(gfx::Size min_size) : min_size_(min_size) {}
|
| +
|
| + private:
|
| + gfx::Size min_size_;
|
| + virtual gfx::Size GetMinimumSize() OVERRIDE;
|
| +};
|
| +
|
| +gfx::Size MinimumSizedView::GetMinimumSize() {
|
| + return min_size_;
|
| +}
|
| +
|
| } // namespace
|
|
|
| namespace views {
|
| @@ -129,29 +142,35 @@
|
|
|
| TEST(SingleSplitViewTest, MouseDrag) {
|
| MockObserver observer;
|
| + const int kMinimumChildSize = 25;
|
| + MinimumSizedView *child0 =
|
| + new MinimumSizedView(gfx::Size(5, kMinimumChildSize));
|
| + MinimumSizedView *child1 =
|
| + new MinimumSizedView(gfx::Size(5, kMinimumChildSize));
|
| SingleSplitView split(
|
| - new View(), new View(), SingleSplitView::VERTICAL_SPLIT, &observer);
|
| + child0, child1, SingleSplitView::VERTICAL_SPLIT, &observer);
|
|
|
| ON_CALL(observer, SplitHandleMoved(_))
|
| .WillByDefault(Return(true));
|
| // SplitHandleMoved is called for two mouse moves and one mouse capture loss.
|
| EXPECT_CALL(observer, SplitHandleMoved(_))
|
| - .Times(3);
|
| + .Times(5);
|
|
|
| - split.SetBounds(0, 0, 10, 100);
|
| + const int kTotalSplitSize = 100;
|
| + split.SetBounds(0, 0, 10, kTotalSplitSize);
|
| const int kInitialDividerOffset = 33;
|
| const int kMouseOffset = 2; // Mouse offset in the divider.
|
| const int kMouseMoveDelta = 7;
|
| split.set_divider_offset(kInitialDividerOffset);
|
| split.Layout();
|
|
|
| - // Drag divider to the right, in 2 steps.
|
| gfx::Point press_point(7, kInitialDividerOffset + kMouseOffset);
|
| ui::MouseEvent mouse_pressed(
|
| ui::ET_MOUSE_PRESSED, press_point, press_point, 0);
|
| ASSERT_TRUE(split.OnMousePressed(mouse_pressed));
|
| EXPECT_EQ(kInitialDividerOffset, split.divider_offset());
|
|
|
| + // Drag divider to the bottom.
|
| gfx::Point drag_1_point(
|
| 5, kInitialDividerOffset + kMouseOffset + kMouseMoveDelta);
|
| ui::MouseEvent mouse_dragged_1(
|
| @@ -159,11 +178,30 @@
|
| ASSERT_TRUE(split.OnMouseDragged(mouse_dragged_1));
|
| EXPECT_EQ(kInitialDividerOffset + kMouseMoveDelta, split.divider_offset());
|
|
|
| + // Drag divider to the top, beyond first child minimum size.
|
| gfx::Point drag_2_point(
|
| - 6, kInitialDividerOffset + kMouseOffset + kMouseMoveDelta * 2);
|
| + 7, kMinimumChildSize - 5);
|
| ui::MouseEvent mouse_dragged_2(
|
| ui::ET_MOUSE_DRAGGED, drag_2_point, drag_2_point, 0);
|
| ASSERT_TRUE(split.OnMouseDragged(mouse_dragged_2));
|
| + EXPECT_EQ(kMinimumChildSize,
|
| + split.divider_offset());
|
| +
|
| + // Drag divider to the bottom, beyond second child minimum size.
|
| + gfx::Point drag_3_point(
|
| + 7, kTotalSplitSize - kMinimumChildSize + 5);
|
| + ui::MouseEvent mouse_dragged_3(
|
| + ui::ET_MOUSE_DRAGGED, drag_3_point, drag_3_point, 0);
|
| + ASSERT_TRUE(split.OnMouseDragged(mouse_dragged_3));
|
| + EXPECT_EQ(kTotalSplitSize - kMinimumChildSize - split.GetDividerSize(),
|
| + split.divider_offset());
|
| +
|
| + // Drag divider between childs' minimum sizes.
|
| + gfx::Point drag_4_point(
|
| + 6, kInitialDividerOffset + kMouseOffset + kMouseMoveDelta * 2);
|
| + ui::MouseEvent mouse_dragged_4(
|
| + ui::ET_MOUSE_DRAGGED, drag_4_point, drag_4_point, 0);
|
| + ASSERT_TRUE(split.OnMouseDragged(mouse_dragged_4));
|
| EXPECT_EQ(kInitialDividerOffset + kMouseMoveDelta * 2,
|
| split.divider_offset());
|
|
|
|
|