app_list_view_controller_unittest.mm revision a93a17c8d99d686bd4a1511e5504e5e6cc9fcadf
1// Copyright 2013 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#include "base/memory/scoped_nsobject.h" 6#import "testing/gtest_mac.h" 7#import "ui/app_list/cocoa/app_list_view_controller.h" 8#import "ui/app_list/cocoa/apps_grid_controller.h" 9#import "ui/app_list/cocoa/test/apps_grid_controller_test_helper.h" 10#include "ui/app_list/test/app_list_test_model.h" 11#include "ui/app_list/test/app_list_test_view_delegate.h" 12 13namespace app_list { 14namespace test { 15 16class AppListViewControllerTest : public AppsGridControllerTestHelper { 17 public: 18 AppListViewControllerTest() {} 19 20 virtual void SetUp() OVERRIDE { 21 app_list_view_controller_.reset([[AppListViewController alloc] init]); 22 [app_list_view_controller_ setDelegate: 23 delegate_.PassAs<AppListViewDelegate>()]; 24 SetUpWithGridController([app_list_view_controller_ appsGridController]); 25 26 [[test_window() contentView] addSubview:[app_list_view_controller_ view]]; 27 } 28 29 virtual void TearDown() OVERRIDE { 30 [app_list_view_controller_ 31 setDelegate:scoped_ptr<app_list::AppListViewDelegate>(NULL)]; 32 app_list_view_controller_.reset(); 33 AppsGridControllerTestHelper::TearDown(); 34 } 35 36 protected: 37 scoped_nsobject<AppListViewController> app_list_view_controller_; 38 39 private: 40 DISALLOW_COPY_AND_ASSIGN(AppListViewControllerTest); 41}; 42 43TEST_VIEW(AppListViewControllerTest, [app_list_view_controller_ view]); 44 45// Test that adding and removing pages updates the pager. 46TEST_F(AppListViewControllerTest, PagerSegmentCounts) { 47 NSSegmentedControl* pager = [app_list_view_controller_ pagerControl]; 48 EXPECT_EQ(1, [pager segmentCount]); 49 50 ReplaceTestModel(kItemsPerPage * 2); 51 EXPECT_EQ(2, [pager segmentCount]); 52 model()->PopulateApps(1); 53 EXPECT_EQ(3, [pager segmentCount]); 54 55 ReplaceTestModel(1); 56 EXPECT_EQ(1, [pager segmentCount]); 57} 58 59// Test that clicking the pager changes pages. 60TEST_F(AppListViewControllerTest, PagerChangingPage) { 61 [AppsGridController setScrollAnimationDuration:0.0]; 62 NSSegmentedControl* pager = [app_list_view_controller_ pagerControl]; 63 ReplaceTestModel(kItemsPerPage * 3); 64 EXPECT_EQ(3, [pager segmentCount]); 65 66 EXPECT_EQ(0, [pager selectedSegment]); 67 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); 68 EXPECT_EQ(1.0, [apps_grid_controller_ visiblePortionOfPage:0]); 69 EXPECT_EQ(0.0, [apps_grid_controller_ visiblePortionOfPage:1]); 70 71 // Emulate a click on the second segment to navigate to the second page. 72 [pager setSelectedSegment:1]; 73 [[pager target] performSelector:[pager action] 74 withObject:pager]; 75 76 EXPECT_EQ(1u, [apps_grid_controller_ visiblePage]); 77 EXPECT_EQ(1, [pager selectedSegment]); 78 EXPECT_EQ(0.0, [apps_grid_controller_ visiblePortionOfPage:0]); 79 EXPECT_EQ(1.0, [apps_grid_controller_ visiblePortionOfPage:1]); 80 81 // Replace with a single page model, and ensure we go back to the first page. 82 ReplaceTestModel(1); 83 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); 84 EXPECT_EQ(0, [pager selectedSegment]); 85 EXPECT_EQ(1, [pager segmentCount]); 86 EXPECT_EQ(1.0, [apps_grid_controller_ visiblePortionOfPage:0]); 87} 88 89} // namespace test 90} // namespace app_list 91