diff options
| author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2015-12-11 12:45:21 +0000 |
|---|---|---|
| committer | CI Train Bot <ci-train-bot@canonical.com> | 2015-12-11 12:45:21 +0000 |
| commit | b950f35d38f5a1411b1c08b44c37865a20a4a9e8 (patch) | |
| tree | 7a4902e5f253a73abe7cf7c12d81bdc7dff9f130 /tests | |
| parent | 5980b00247e16f9747979b6e49f84cee10aa4b37 (diff) | |
| parent | 00a1741ca507716a3a0cf93e9567285158c99028 (diff) | |
Places(Overlay)VScrollBar: impelement gtk-like overlay scrollbars Fixes: #1481706
Approved by: PS Jenkins bot, Andrea Azzarone Original authors: - Marco Trevisan (Treviño) <mail@3v1n0.net> - Andrea Azzarone <andrea.azzarone@canonical.com> (bzr r4045)
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | tests/test_overlay_scrollbar.cpp | 478 |
2 files changed, 0 insertions, 479 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 50542c592..82b132830 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -261,7 +261,6 @@ if (ENABLE_X_SUPPORT) test_previews_music_payment.cpp test_previews_payment.cpp test_previews_social.cpp - test_overlay_scrollbar.cpp test_quicklist_manager.cpp test_quicklist_menu_item.cpp test_quicklist_view.cpp diff --git a/tests/test_overlay_scrollbar.cpp b/tests/test_overlay_scrollbar.cpp deleted file mode 100644 index 6d38d87dd..000000000 --- a/tests/test_overlay_scrollbar.cpp +++ /dev/null @@ -1,478 +0,0 @@ -/* - * Copyright 2012 Canonical Ltd. - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License version 3, as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranties of - * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the applicable version of the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of both the GNU Lesser General Public - * License version 3 along with this program. If not, see - * <http://www.gnu.org/licenses/> - * - * Authored by: Brandon Schaefer <brandon.schaefer@canonical.com> - * - */ - -#include <gtest/gtest.h> - -#include <Nux/Nux.h> -#include <Nux/NuxTimerTickSource.h> -#include <Nux/VLayout.h> -#include <NuxCore/ObjectPtr.h> -#include <NuxCore/AnimationController.h> - - -#include "unity-shared/VScrollBarOverlayWindow.h" -#include "unity-shared/PlacesOverlayVScrollBar.h" -#include "unity-shared/UScreen.h" - -using namespace unity::dash; -using namespace testing; - -namespace unity -{ - -namespace -{ - const unsigned SCROLL_TICK = 1000 * 401; - const unsigned SHOW_TICK = 1000 * 91; -} - -class TestOverlayWindow : public Test -{ -public: - TestOverlayWindow() - : show_tick_(0) - , animation_controller_(tick_source_) - , overlay_window_(new VScrollBarOverlayWindow(nux::Geometry(0,0,100,100))) - {} - - int GetProxListSize() const - { - return nux::GetWindowThread()->GetWindowCompositor().GetProximityListSize(); - } - - void ShowAnimation() - { - // (tick_source_); - show_tick_ += SHOW_TICK; - tick_source_.tick(show_tick_); - } - - unsigned show_tick_; - nux::NuxTimerTickSource tick_source_; - nux::animation::AnimationController animation_controller_; - nux::ObjectPtr<VScrollBarOverlayWindow> overlay_window_; -}; - -namespace dash -{ - -class MockScrollBar : public unity::dash::PlacesOverlayVScrollBar -{ - public: - MockScrollBar(NUX_FILE_LINE_DECL) - : PlacesOverlayVScrollBar(NUX_FILE_LINE_PARAM) - , animation_controller(tick_source_) - , scroll_tick_(0) - , scroll_dy_(0) - , thumbs_height_(overlay_window_->GetThumbGeometry().height) - , scroll_up_signal_(false) - , scroll_down_signal_(false) - { - OnScrollUp.connect([&] (float step, int dy) { - scroll_dy_ = dy; - scroll_up_signal_ = true; - }); - - OnScrollDown.connect([&] (float step, int dy) { - scroll_dy_ = dy; - scroll_down_signal_ = true; - }); - } - - virtual ~MockScrollBar() {} - - // ScrollDown/Up moves the mouse over the overlay scroll bar, then - // moves it down/up by scroll_dy - void ScrollDown(int scroll_dy) - { - UpdateStepY(); - - auto geo = overlay_window_->GetThumbGeometry(); - int x = geo.x; - int y = geo.y; - - MoveMouse(x, y); - MoveDown(x, y); - - MoveMouse(x, y+scroll_dy); - MoveUp(x, y+scroll_dy); - } - - void ScrollUp(int scroll_dy) - { - UpdateStepY(); - - auto geo = overlay_window_->GetThumbGeometry(); - int x = geo.x; - int y = geo.y; - - MoveMouse(x, y); - MoveDown(x, y); - - MoveMouse(x, y-scroll_dy); - MoveUp(x, y-scroll_dy); - } - - void MoveDown(int x, int y) - { - nux::Event event; - event.type = nux::NUX_MOUSE_PRESSED; - event.x = x; - event.y = y; - nux::GetWindowCompositor().ProcessEvent(event); - } - - void MoveUp(int x, int y) - { - nux::Event event; - event.type = nux::NUX_MOUSE_RELEASED; - event.x = x; - event.y = y; - nux::GetWindowCompositor().ProcessEvent(event); - } - - void MoveMouse(int x, int y) - { - nux::Event event; - event.type = nux::NUX_MOUSE_MOVE; - event.x = x; - event.y = y; - nux::GetWindowCompositor().ProcessEvent(event); - } - - void MoveMouseNear() - { - auto geo = overlay_window_->GetThumbGeometry(); - MoveMouse(geo.x, geo.y); - } - - void ScrollUpAnimation(int scroll_dy) - { - MoveMouseNear(); - UpdateStepY(); - - StartScrollAnimation(ScrollDir::UP, scroll_dy); - scroll_tick_ += SCROLL_TICK; - tick_source_.tick(scroll_tick_); - } - - void ScrollDownAnimation(int scroll_dy) - { - MoveMouseNear(); - UpdateStepY(); - - StartScrollAnimation(ScrollDir::DOWN, scroll_dy); - scroll_tick_ += SCROLL_TICK; - tick_source_.tick(scroll_tick_); - } - - void SetThumbOffset(int y) - { - overlay_window_->SetThumbOffsetY(y); - UpdateConnectorPosition(); - } - - void StartScrollThenConnectorAnimation() - { - StartScrollAnimation(ScrollDir::DOWN, 20); - MoveMouse(0,0); - StartConnectorAnimation(); - - scroll_tick_ += SCROLL_TICK; - tick_source_.tick(scroll_tick_); - } - - void FakeDragDown() - { - OnMouseDrag(0, overlay_window_->GetThumbOffsetY() + 1, 0, 5, 0, 0); - } - - nux::NuxTimerTickSource tick_source_; - nux::animation::AnimationController animation_controller; - - using PlacesOverlayVScrollBar::connector_height_; - using VScrollBar::_slider; - - unsigned scroll_tick_; - int scroll_dy_; - int thumbs_height_; - bool scroll_up_signal_; - bool scroll_down_signal_; -}; - -} - -class MockScrollView : public nux::ScrollView -{ -public: - MockScrollView(NUX_FILE_LINE_DECL) - : nux::ScrollView(NUX_FILE_LINE_PARAM) - { - scroll_bar_ = new MockScrollBar(NUX_TRACKER_LOCATION); - SetVScrollBar(scroll_bar_.GetPointer()); - } - - nux::ObjectPtr<MockScrollBar> scroll_bar_; -}; - -class TestOverlayVScrollBar : public Test -{ -public: - TestOverlayVScrollBar() - { - nux::VLayout* scroll_layout_ = new nux::VLayout(NUX_TRACKER_LOCATION); - scroll_layout_->SetGeometry(0,0,1000,5000); - scroll_layout_->SetScaleFactor(0); - - scroll_view_ = new MockScrollView(NUX_TRACKER_LOCATION); - scroll_view_->EnableVerticalScrollBar(true); - scroll_view_->EnableHorizontalScrollBar(false); - scroll_view_->SetLayout(scroll_layout_); - - scroll_view_->scroll_bar_->SetContentSize(0, 0, 201, 2000); - scroll_view_->scroll_bar_->SetContainerSize(0, 0, 202, 400); - } - - nux::ObjectPtr<MockScrollView> scroll_view_; -}; - -TEST_F(TestOverlayWindow, TestOverlayShows) -{ - ASSERT_FALSE(overlay_window_->IsVisible()); - overlay_window_->MouseNear(); - EXPECT_TRUE(overlay_window_->IsVisible()); - EXPECT_DOUBLE_EQ(0.0f, overlay_window_->GetOpacity()); - - ShowAnimation(); - EXPECT_DOUBLE_EQ(1.0f, overlay_window_->GetOpacity()); -} - -TEST_F(TestOverlayWindow, TestOverlayHides) -{ - overlay_window_->MouseNear(); - ShowAnimation(); - EXPECT_TRUE(overlay_window_->IsVisible()); - - overlay_window_->MouseBeyond(); - ShowAnimation(); - - overlay_window_->MouseLeave(); - ShowAnimation(); - - EXPECT_FALSE(overlay_window_->IsVisible()); - EXPECT_DOUBLE_EQ(0.0f, overlay_window_->GetOpacity()); -} - -TEST_F(TestOverlayWindow, TestOverlayStaysOpenWhenMouseDown) -{ - overlay_window_->MouseNear(); - ShowAnimation(); - - overlay_window_->MouseDown(); - ShowAnimation(); - - overlay_window_->MouseBeyond(); - ShowAnimation(); - - overlay_window_->MouseLeave(); - ShowAnimation(); - - EXPECT_TRUE(overlay_window_->IsVisible()); -} - -TEST_F(TestOverlayWindow, TestOverlayMouseDrags) -{ - overlay_window_->MouseDown(); - EXPECT_FALSE(overlay_window_->IsMouseBeingDragged()); - - overlay_window_->SetThumbOffsetY(10); - EXPECT_TRUE(overlay_window_->IsMouseBeingDragged()); -} - -TEST_F(TestOverlayWindow, TestOverlayStopDraggingOnMouseUp) -{ - overlay_window_->MouseDown(); - EXPECT_FALSE(overlay_window_->IsMouseBeingDragged()); - - overlay_window_->SetThumbOffsetY(10); - EXPECT_TRUE(overlay_window_->IsMouseBeingDragged()); - - overlay_window_->MouseUp(); - EXPECT_FALSE(overlay_window_->IsMouseBeingDragged()); -} - -TEST_F(TestOverlayWindow, TestOverlaySetsOffsetY) -{ - int const offset_y = 30; - - overlay_window_->SetThumbOffsetY(offset_y); - EXPECT_EQ(overlay_window_->GetThumbOffsetY(), offset_y); -} - -TEST_F(TestOverlayWindow, TestOverlaySetsOffsetYOutOfBoundsLower) -{ - int const offset_y = -40; - - overlay_window_->SetThumbOffsetY(offset_y); - EXPECT_EQ(overlay_window_->GetThumbOffsetY(), 0); -} - -TEST_F(TestOverlayWindow, TestOverlaySetsOffsetYOutOfBoundsUpper) -{ - int const offset_y = 1000; - int const expected_offset = overlay_window_->GetBaseHeight() - overlay_window_->GetThumbHeight(); - - overlay_window_->SetThumbOffsetY(offset_y); - EXPECT_EQ(overlay_window_->GetThumbOffsetY(), expected_offset); -} - -TEST_F(TestOverlayWindow, TestOverlayMouseIsInsideThumb) -{ - nux::Geometry const geo(0, 50, 50, 400); - - overlay_window_->UpdateGeometry(geo); - EXPECT_TRUE(overlay_window_->IsMouseInsideThumb(0)); -} - -TEST_F(TestOverlayWindow, TestOverlayMouseIsInsideOnOffsetChange) -{ - nux::Geometry const geo(0, 50, 50, 400); - int const offset_y = 50; - int const thumb_height = overlay_window_->GetThumbHeight(); - - overlay_window_->UpdateGeometry(geo); - overlay_window_->SetThumbOffsetY(offset_y); - - EXPECT_FALSE(overlay_window_->IsMouseInsideThumb(offset_y - 1)); - EXPECT_TRUE(overlay_window_->IsMouseInsideThumb(offset_y + thumb_height/2)); - EXPECT_FALSE(overlay_window_->IsMouseInsideThumb(offset_y + thumb_height + 1)); -} - - -TEST_F(TestOverlayVScrollBar, TestScrollDownSignal) -{ - scroll_view_->scroll_bar_->ScrollDown(10); - EXPECT_TRUE(scroll_view_->scroll_bar_->scroll_down_signal_); -} - -TEST_F(TestOverlayVScrollBar, TestScrollUpSignal) -{ - scroll_view_->scroll_bar_->ScrollDown(10); - scroll_view_->scroll_bar_->ScrollUp(10); - EXPECT_TRUE(scroll_view_->scroll_bar_->scroll_up_signal_); -} - -TEST_F(TestOverlayVScrollBar, TestScrollDownDeltaY) -{ - int scroll_down = 15; - scroll_view_->scroll_bar_->ScrollDown(scroll_down); - EXPECT_EQ(scroll_view_->scroll_bar_->scroll_dy_, scroll_down); -} - -TEST_F(TestOverlayVScrollBar, TestScrollUpDeltaY) -{ - int scroll_up = 7; - scroll_view_->scroll_bar_->ScrollDown(scroll_up+1); - scroll_view_->scroll_bar_->ScrollUp(scroll_up); - EXPECT_EQ(scroll_view_->scroll_bar_->scroll_dy_, scroll_up); -} - -TEST_F(TestOverlayVScrollBar, TestScrollDownBaseYMoves) -{ - int slider_y = scroll_view_->scroll_bar_->_slider->GetBaseY(); - int scroll_down = 10; - scroll_view_->scroll_bar_->ScrollDown(scroll_down); - EXPECT_EQ(scroll_view_->scroll_bar_->scroll_dy_, scroll_down); - EXPECT_GT(scroll_view_->scroll_bar_->_slider->GetBaseY(), slider_y); -} - -TEST_F(TestOverlayVScrollBar, TestScrollUpBaseYMoves) -{ - int scroll_up = 10; - scroll_view_->scroll_bar_->ScrollDown(scroll_up+1); - - int slider_y = scroll_view_->scroll_bar_->_slider->GetBaseY(); - scroll_view_->scroll_bar_->ScrollUp(scroll_up); - EXPECT_EQ(scroll_view_->scroll_bar_->scroll_dy_, scroll_up); - EXPECT_LT(scroll_view_->scroll_bar_->_slider->GetBaseY(), slider_y); -} - -TEST_F(TestOverlayVScrollBar, TestScrollsSlowlyDeltaY) -{ - int scroll_down = 10; - for (int i = 0; i < scroll_down; i++) - { - scroll_view_->scroll_bar_->ScrollDown(1); - EXPECT_EQ(scroll_view_->scroll_bar_->scroll_dy_, 1); - } -} - -TEST_F(TestOverlayVScrollBar, TestScrollUpAnimationMovesSlider) -{ - int scroll_up = 10; - scroll_view_->scroll_bar_->ScrollDown(scroll_up+10); - - int slider_y = scroll_view_->scroll_bar_->_slider->GetBaseY(); - scroll_view_->scroll_bar_->ScrollUpAnimation(scroll_up); - - EXPECT_EQ(scroll_view_->scroll_bar_->scroll_dy_, scroll_up); - EXPECT_LT(scroll_view_->scroll_bar_->_slider->GetBaseY(), slider_y); -} - -TEST_F(TestOverlayVScrollBar, TestScrollDownAnimationMovesSlider) -{ - int scroll_down = 10; - int slider_y = scroll_view_->scroll_bar_->_slider->GetBaseY(); - - scroll_view_->scroll_bar_->ScrollDownAnimation(scroll_down); - - EXPECT_EQ(scroll_view_->scroll_bar_->scroll_dy_, scroll_down); - EXPECT_GT(scroll_view_->scroll_bar_->_slider->GetBaseY(), slider_y); -} - -TEST_F(TestOverlayVScrollBar, TestConnectorResetsDuringScrollAnimation) -{ - scroll_view_->scroll_bar_->MoveMouseNear(); - scroll_view_->scroll_bar_->SetThumbOffset(100); - - int connector_height = scroll_view_->scroll_bar_->connector_height_; - EXPECT_GT(connector_height, 0); - - scroll_view_->scroll_bar_->StartScrollThenConnectorAnimation(); - - connector_height = scroll_view_->scroll_bar_->connector_height_; - EXPECT_EQ(connector_height, 0); -} - - -TEST_F(TestOverlayVScrollBar, TestAllowDragIfOverlayIsAtMaximum) -{ - // Offset that sets the thumb at the bottom of the scrollbar - int thumb_offset = scroll_view_->scroll_bar_->GetHeight() - - scroll_view_->scroll_bar_->thumbs_height_; - - scroll_view_->scroll_bar_->SetThumbOffset(thumb_offset); - scroll_view_->scroll_bar_->FakeDragDown(); - EXPECT_TRUE(scroll_view_->scroll_bar_->scroll_down_signal_); -} - -} - |
