Index: ui/app_list/pagination_model_unittest.cc |
diff --git a/ui/app_list/pagination_model_unittest.cc b/ui/app_list/pagination_model_unittest.cc |
deleted file mode 100644 |
index 3c9b5a45480ba04c780bb8dad6c4e2076a2fb4c2..0000000000000000000000000000000000000000 |
--- a/ui/app_list/pagination_model_unittest.cc |
+++ /dev/null |
@@ -1,432 +0,0 @@ |
-// Copyright (c) 2012 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. |
- |
-#include "ui/app_list/pagination_model.h" |
- |
-#include <string> |
- |
-#include "base/basictypes.h" |
-#include "base/compiler_specific.h" |
-#include "base/message_loop/message_loop.h" |
-#include "base/strings/stringprintf.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "ui/app_list/pagination_model_observer.h" |
- |
-namespace app_list { |
-namespace test { |
- |
-class TestPaginationModelObserver : public PaginationModelObserver { |
- public: |
- TestPaginationModelObserver() |
- : model_(NULL), |
- expected_page_selection_(0), |
- expected_transition_start_(0), |
- expected_transition_end_(0), |
- transition_page_(-1) { |
- Reset(); |
- } |
- ~TestPaginationModelObserver() override {} |
- |
- void Reset() { |
- selection_count_ = 0; |
- transition_start_count_ = 0; |
- transition_end_count_ = 0; |
- selected_pages_.clear(); |
- } |
- |
- void set_model(PaginationModel* model) { model_ = model; } |
- |
- void set_expected_page_selection(int expected_page_selection) { |
- expected_page_selection_ = expected_page_selection; |
- } |
- void set_expected_transition_start(int expected_transition_start) { |
- expected_transition_start_ = expected_transition_start; |
- } |
- void set_expected_transition_end(int expected_transition_end) { |
- expected_transition_end_ = expected_transition_end; |
- } |
- void set_transition_page(int page) { transition_page_ = page; } |
- |
- const std::string& selected_pages() const { return selected_pages_; } |
- int selection_count() const { return selection_count_; } |
- int transition_start_count() const { return transition_start_count_; } |
- int transition_end_count() const { return transition_end_count_; } |
- |
- private: |
- void AppendSelectedPage(int page) { |
- if (selected_pages_.length()) |
- selected_pages_.append(std::string(" ")); |
- selected_pages_.append(base::StringPrintf("%d", page)); |
- } |
- |
- // PaginationModelObserver overrides: |
- void TotalPagesChanged() override {} |
- void SelectedPageChanged(int old_selected, int new_selected) override { |
- AppendSelectedPage(new_selected); |
- ++selection_count_; |
- if (expected_page_selection_ && |
- selection_count_ == expected_page_selection_) { |
- base::MessageLoop::current()->Quit(); |
- } |
- } |
- |
- void TransitionStarted() override {} |
- |
- void TransitionChanged() override { |
- if (transition_page_ == -1 || |
- model_->transition().target_page == transition_page_) { |
- if (model_->transition().progress == 0) |
- ++transition_start_count_; |
- if (model_->transition().progress == 1) |
- ++transition_end_count_; |
- } |
- |
- if ((expected_transition_start_ && |
- transition_start_count_ == expected_transition_start_) || |
- (expected_transition_end_ && |
- transition_end_count_ == expected_transition_end_)) { |
- base::MessageLoop::current()->Quit(); |
- } |
- } |
- |
- PaginationModel* model_; |
- |
- int expected_page_selection_; |
- int expected_transition_start_; |
- int expected_transition_end_; |
- |
- int selection_count_; |
- int transition_start_count_; |
- int transition_end_count_; |
- |
- // Indicate which page index should be counted for |transition_start_count_| |
- // and |transition_end_count_|. -1 means all the pages should be counted. |
- int transition_page_; |
- |
- std::string selected_pages_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TestPaginationModelObserver); |
-}; |
- |
-class PaginationModelTest : public testing::Test { |
- public: |
- PaginationModelTest() {} |
- virtual ~PaginationModelTest() {} |
- |
- // testing::Test overrides: |
- virtual void SetUp() override { |
- pagination_.SetTotalPages(5); |
- pagination_.SetTransitionDurations(1, 1); |
- observer_.set_model(&pagination_); |
- pagination_.AddObserver(&observer_); |
- } |
- virtual void TearDown() override { |
- pagination_.RemoveObserver(&observer_); |
- observer_.set_model(NULL); |
- } |
- |
- protected: |
- void SetStartPageAndExpects(int start_page, |
- int expected_selection, |
- int expected_transition_start, |
- int expected_transition_end) { |
- observer_.set_expected_page_selection(0); |
- pagination_.SelectPage(start_page, false /* animate */); |
- observer_.Reset(); |
- observer_.set_expected_page_selection(expected_selection); |
- observer_.set_expected_transition_start(expected_transition_start); |
- observer_.set_expected_transition_end(expected_transition_end); |
- } |
- |
- PaginationModel pagination_; |
- TestPaginationModelObserver observer_; |
- |
- private: |
- base::MessageLoopForUI message_loop_; |
- |
- DISALLOW_COPY_AND_ASSIGN(PaginationModelTest); |
-}; |
- |
-TEST_F(PaginationModelTest, SelectPage) { |
- pagination_.SelectPage(2, false /* animate */); |
- pagination_.SelectPage(4, false /* animate */); |
- pagination_.SelectPage(3, false /* animate */); |
- pagination_.SelectPage(1, false /* animate */); |
- |
- EXPECT_EQ(0, observer_.transition_start_count()); |
- EXPECT_EQ(0, observer_.transition_end_count()); |
- EXPECT_EQ(4, observer_.selection_count()); |
- EXPECT_EQ(std::string("2 4 3 1"), observer_.selected_pages()); |
- |
- // Nothing happens if select the same page. |
- pagination_.SelectPage(1, false /* animate */); |
- EXPECT_EQ(4, observer_.selection_count()); |
- EXPECT_EQ(std::string("2 4 3 1"), observer_.selected_pages()); |
-} |
- |
-TEST_F(PaginationModelTest, SelectPageAnimated) { |
- const int kStartPage = 0; |
- |
- // One transition. |
- SetStartPageAndExpects(kStartPage, 1, 0, 0); |
- pagination_.SelectPage(1, true /* animate */); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(1, observer_.transition_start_count()); |
- EXPECT_EQ(1, observer_.transition_end_count()); |
- EXPECT_EQ(1, observer_.selection_count()); |
- EXPECT_EQ(std::string("1"), observer_.selected_pages()); |
- |
- // Two transitions in a row. |
- SetStartPageAndExpects(kStartPage, 2, 0, 0); |
- pagination_.SelectPage(1, true /* animate */); |
- pagination_.SelectPage(3, true /* animate */); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(2, observer_.transition_start_count()); |
- EXPECT_EQ(2, observer_.transition_end_count()); |
- EXPECT_EQ(2, observer_.selection_count()); |
- EXPECT_EQ(std::string("1 3"), observer_.selected_pages()); |
- |
- // Transition to same page twice and only one should happen. |
- SetStartPageAndExpects(kStartPage, 1, 0, 0); |
- pagination_.SelectPage(1, true /* animate */); |
- pagination_.SelectPage(1, true /* animate */); // Ignored. |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(1, observer_.transition_start_count()); |
- EXPECT_EQ(1, observer_.transition_end_count()); |
- EXPECT_EQ(1, observer_.selection_count()); |
- EXPECT_EQ(std::string("1"), observer_.selected_pages()); |
- |
- // More than two transitions and only the first and last would happen. |
- SetStartPageAndExpects(kStartPage, 2, 0, 0); |
- pagination_.SelectPage(1, true /* animate */); |
- pagination_.SelectPage(3, true /* animate */); // Ignored |
- pagination_.SelectPage(4, true /* animate */); // Ignored |
- pagination_.SelectPage(2, true /* animate */); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(2, observer_.transition_start_count()); |
- EXPECT_EQ(2, observer_.transition_end_count()); |
- EXPECT_EQ(2, observer_.selection_count()); |
- EXPECT_EQ(std::string("1 2"), observer_.selected_pages()); |
- |
- // Multiple transitions with one transition that goes back to the original |
- // and followed by a new transition. Two transitions would happen. The first |
- // one will be reversed by the kStart transition and the second one will be |
- // finished. |
- SetStartPageAndExpects(kStartPage, 1, 0, 0); |
- pagination_.SelectPage(1, true /* animate */); |
- pagination_.SelectPage(2, true /* animate */); // Ignored |
- pagination_.SelectPage(kStartPage, true /* animate */); |
- pagination_.SelectPage(3, true /* animate */); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(std::string("3"), observer_.selected_pages()); |
-} |
- |
-TEST_F(PaginationModelTest, SimpleScroll) { |
- const int kStartPage = 2; |
- |
- // Scroll to the next page (negative delta) and finish it. |
- SetStartPageAndExpects(kStartPage, 1, 0, 0); |
- pagination_.StartScroll(); |
- pagination_.UpdateScroll(-0.1); |
- EXPECT_EQ(kStartPage + 1, pagination_.transition().target_page); |
- pagination_.EndScroll(false); // Finish transition |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(1, observer_.selection_count()); |
- |
- // Scroll to the previous page (positive delta) and finish it. |
- SetStartPageAndExpects(kStartPage, 1, 0, 0); |
- pagination_.StartScroll(); |
- pagination_.UpdateScroll(0.1); |
- EXPECT_EQ(kStartPage - 1, pagination_.transition().target_page); |
- pagination_.EndScroll(false); // Finish transition |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(1, observer_.selection_count()); |
- |
- // Scroll to the next page (negative delta) and cancel it. |
- SetStartPageAndExpects(kStartPage, 0, 1, 0); |
- pagination_.StartScroll(); |
- pagination_.UpdateScroll(-0.1); |
- EXPECT_EQ(kStartPage + 1, pagination_.transition().target_page); |
- pagination_.EndScroll(true); // Cancel transition |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(0, observer_.selection_count()); |
- |
- // Scroll to the previous page (position delta) and cancel it. |
- SetStartPageAndExpects(kStartPage, 0, 1, 0); |
- pagination_.StartScroll(); |
- pagination_.UpdateScroll(0.1); |
- EXPECT_EQ(kStartPage - 1, pagination_.transition().target_page); |
- pagination_.EndScroll(true); // Cancel transition |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(0, observer_.selection_count()); |
-} |
- |
-TEST_F(PaginationModelTest, ScrollWithTransition) { |
- const int kStartPage = 2; |
- |
- // Scroll to the next page (negative delta) with a transition in the same |
- // direction. |
- SetStartPageAndExpects(kStartPage, 1, 0, 0); |
- pagination_.SetTransition(PaginationModel::Transition(kStartPage + 1, 0.5)); |
- pagination_.StartScroll(); |
- pagination_.UpdateScroll(-0.1); |
- EXPECT_EQ(kStartPage + 1, pagination_.transition().target_page); |
- EXPECT_EQ(0.6, pagination_.transition().progress); |
- pagination_.EndScroll(false); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(1, observer_.selection_count()); |
- |
- // Scroll to the next page (negative delta) with a transition in a different |
- // direction. |
- SetStartPageAndExpects(kStartPage, 0, 1, 0); |
- pagination_.SetTransition(PaginationModel::Transition(kStartPage - 1, 0.5)); |
- pagination_.StartScroll(); |
- pagination_.UpdateScroll(-0.1); |
- EXPECT_EQ(kStartPage - 1, pagination_.transition().target_page); |
- EXPECT_EQ(0.4, pagination_.transition().progress); |
- pagination_.EndScroll(true); |
- |
- // Scroll to the previous page (positive delta) with a transition in the same |
- // direction. |
- SetStartPageAndExpects(kStartPage, 1, 0, 0); |
- pagination_.SetTransition(PaginationModel::Transition(kStartPage - 1, 0.5)); |
- pagination_.StartScroll(); |
- pagination_.UpdateScroll(0.1); |
- EXPECT_EQ(kStartPage - 1, pagination_.transition().target_page); |
- EXPECT_EQ(0.6, pagination_.transition().progress); |
- pagination_.EndScroll(false); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(1, observer_.selection_count()); |
- |
- // Scroll to the previous page (positive delta) with a transition in a |
- // different direction. |
- SetStartPageAndExpects(kStartPage, 0, 1, 0); |
- pagination_.SetTransition(PaginationModel::Transition(kStartPage + 1, 0.5)); |
- pagination_.StartScroll(); |
- pagination_.UpdateScroll(0.1); |
- EXPECT_EQ(kStartPage + 1, pagination_.transition().target_page); |
- EXPECT_EQ(0.4, pagination_.transition().progress); |
- pagination_.EndScroll(true); |
-} |
- |
-TEST_F(PaginationModelTest, LongScroll) { |
- const int kStartPage = 2; |
- |
- // Scroll to the next page (negative delta) with a transition in the same |
- // direction. And scroll enough to change page twice. |
- SetStartPageAndExpects(kStartPage, 2, 0, 0); |
- pagination_.SetTransition(PaginationModel::Transition(kStartPage + 1, 0.5)); |
- pagination_.StartScroll(); |
- pagination_.UpdateScroll(-0.1); |
- EXPECT_EQ(kStartPage + 1, pagination_.transition().target_page); |
- EXPECT_EQ(0.6, pagination_.transition().progress); |
- pagination_.UpdateScroll(-0.5); |
- EXPECT_EQ(1, observer_.selection_count()); |
- pagination_.UpdateScroll(-0.5); |
- EXPECT_EQ(kStartPage + 2, pagination_.transition().target_page); |
- pagination_.EndScroll(false); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(2, observer_.selection_count()); |
- |
- // Scroll to the next page (negative delta) with a transition in a different |
- // direction. And scroll enough to revert it and switch page once. |
- SetStartPageAndExpects(kStartPage, 1, 0, 0); |
- pagination_.SetTransition(PaginationModel::Transition(kStartPage - 1, 0.5)); |
- pagination_.StartScroll(); |
- pagination_.UpdateScroll(-0.1); |
- EXPECT_EQ(kStartPage - 1, pagination_.transition().target_page); |
- EXPECT_EQ(0.4, pagination_.transition().progress); |
- pagination_.UpdateScroll(-0.5); // This clears the transition. |
- pagination_.UpdateScroll(-0.5); // This starts a new transition. |
- EXPECT_EQ(kStartPage + 1, pagination_.transition().target_page); |
- pagination_.EndScroll(false); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(1, observer_.selection_count()); |
- |
- // Similar cases as above but in the opposite direction. |
- // Scroll to the previous page (positive delta) with a transition in the same |
- // direction. And scroll enough to change page twice. |
- SetStartPageAndExpects(kStartPage, 2, 0, 0); |
- pagination_.SetTransition(PaginationModel::Transition(kStartPage - 1, 0.5)); |
- pagination_.StartScroll(); |
- pagination_.UpdateScroll(0.1); |
- EXPECT_EQ(kStartPage - 1, pagination_.transition().target_page); |
- EXPECT_EQ(0.6, pagination_.transition().progress); |
- pagination_.UpdateScroll(0.5); |
- EXPECT_EQ(1, observer_.selection_count()); |
- pagination_.UpdateScroll(0.5); |
- EXPECT_EQ(kStartPage - 2, pagination_.transition().target_page); |
- pagination_.EndScroll(false); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(2, observer_.selection_count()); |
- |
- // Scroll to the previous page (positive delta) with a transition in a |
- // different direction. And scroll enough to revert it and switch page once. |
- SetStartPageAndExpects(kStartPage, 1, 0, 0); |
- pagination_.SetTransition(PaginationModel::Transition(kStartPage + 1, 0.5)); |
- pagination_.StartScroll(); |
- pagination_.UpdateScroll(0.1); |
- EXPECT_EQ(kStartPage + 1, pagination_.transition().target_page); |
- EXPECT_EQ(0.4, pagination_.transition().progress); |
- pagination_.UpdateScroll(0.5); // This clears the transition. |
- pagination_.UpdateScroll(0.5); // This starts a new transition. |
- EXPECT_EQ(kStartPage - 1, pagination_.transition().target_page); |
- pagination_.EndScroll(false); |
- base::MessageLoop::current()->Run(); |
- EXPECT_EQ(1, observer_.selection_count()); |
-} |
- |
-TEST_F(PaginationModelTest, FireTransitionZero) { |
- const int kStartPage = 2; |
- |
- // Scroll to next page then revert the scroll and make sure transition |
- // progress 0 is fired when previous scroll is cleared. |
- SetStartPageAndExpects(kStartPage, 0, 0, 0); |
- pagination_.StartScroll(); |
- pagination_.UpdateScroll(-0.1); |
- |
- int target_page = kStartPage + 1; |
- EXPECT_EQ(target_page, pagination_.transition().target_page); |
- observer_.set_transition_page(target_page); |
- |
- pagination_.UpdateScroll(0.2); // This clears the transition. |
- EXPECT_EQ(1, observer_.transition_start_count()); |
- pagination_.EndScroll(true); // Cancel transition. |
- |
- // Similar to above but in the other direction. |
- SetStartPageAndExpects(kStartPage, 0, 0, 0); |
- pagination_.StartScroll(); |
- pagination_.UpdateScroll(0.1); |
- |
- target_page = kStartPage - 1; |
- EXPECT_EQ(target_page, pagination_.transition().target_page); |
- observer_.set_transition_page(target_page); |
- |
- pagination_.UpdateScroll(-0.2); // This clears the transition. |
- EXPECT_EQ(1, observer_.transition_start_count()); |
- pagination_.EndScroll(true); // Cancel transition. |
-} |
- |
-TEST_F(PaginationModelTest, SelectedPageIsLost) { |
- pagination_.SetTotalPages(2); |
- // The selected page is set to 0 once the total number of pages are set. |
- EXPECT_EQ(0, pagination_.selected_page()); |
- |
- pagination_.SelectPage(1, false /* animate */); |
- EXPECT_EQ(1, pagination_.selected_page()); |
- |
- // The selected page is unchanged if it's still valid. |
- pagination_.SetTotalPages(3); |
- EXPECT_EQ(1, pagination_.selected_page()); |
- pagination_.SetTotalPages(2); |
- EXPECT_EQ(1, pagination_.selected_page()); |
- |
- // But if the currently selected_page exceeds the total number of pages, |
- // it automatically switches to the last page. |
- pagination_.SetTotalPages(1); |
- EXPECT_EQ(0, pagination_.selected_page()); |
-} |
- |
-} // namespace test |
-} // namespace app_list |