diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2013-09-13 12:51:20 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-19 20:50:05 +0200 |
commit | d441d6f39bb846989d95bcf5caf387b42414718d (patch) | |
tree | e367e64a75991c554930278175d403c072de6bb8 /Source/WebKit/chromium/tests/ScrollAnimatorNoneTest.cpp | |
parent | 0060b2994c07842f4c59de64b5e3e430525c4b90 (diff) | |
download | qtwebkit-d441d6f39bb846989d95bcf5caf387b42414718d.tar.gz |
Import Qt5x2 branch of QtWebkit for Qt 5.2
Importing a new snapshot of webkit.
Change-Id: I2d01ad12cdc8af8cb015387641120a9d7ea5f10c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Source/WebKit/chromium/tests/ScrollAnimatorNoneTest.cpp')
-rw-r--r-- | Source/WebKit/chromium/tests/ScrollAnimatorNoneTest.cpp | 1049 |
1 files changed, 0 insertions, 1049 deletions
diff --git a/Source/WebKit/chromium/tests/ScrollAnimatorNoneTest.cpp b/Source/WebKit/chromium/tests/ScrollAnimatorNoneTest.cpp deleted file mode 100644 index 35ad63c46..000000000 --- a/Source/WebKit/chromium/tests/ScrollAnimatorNoneTest.cpp +++ /dev/null @@ -1,1049 +0,0 @@ -/* - * Copyright (C) 2010 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -// Tests for the ScrollAnimatorNone class. - -#include "config.h" - -#if ENABLE(SMOOTH_SCROLLING) - -#include "ScrollAnimatorNone.h" - -#include "FloatPoint.h" -#include "IntRect.h" -#include "Logging.h" -#include "ScrollAnimator.h" -#include "ScrollableArea.h" -#include "TreeTestHelpers.h" -#include <gmock/gmock.h> -#include <gtest/gtest.h> - -using namespace std; -using namespace WebCore; - -using testing::AtLeast; -using testing::Return; -using testing::_; - -class MockScrollableArea : public ScrollableArea { -public: - MockScrollableArea(bool scrollAnimatorEnabled) - : m_scrollAnimatorEnabled(scrollAnimatorEnabled) { } - - MOCK_CONST_METHOD0(isActive, bool()); - MOCK_CONST_METHOD1(scrollSize, int(ScrollbarOrientation)); - MOCK_CONST_METHOD1(scrollPosition, int(Scrollbar*)); - MOCK_METHOD2(invalidateScrollbar, void(Scrollbar*, const IntRect&)); - MOCK_CONST_METHOD0(isScrollCornerVisible, bool()); - MOCK_CONST_METHOD0(scrollCornerRect, IntRect()); - MOCK_METHOD1(setScrollOffset, void(const IntPoint&)); - MOCK_METHOD2(invalidateScrollbarRect, void(Scrollbar*, const IntRect&)); - MOCK_METHOD1(invalidateScrollCornerRect, void(const IntRect&)); - MOCK_METHOD1(setScrollOffsetFromAnimation, void(const IntPoint&)); - MOCK_CONST_METHOD0(enclosingScrollableArea, ScrollableArea*()); - MOCK_CONST_METHOD0(minimumScrollPosition, IntPoint()); - MOCK_CONST_METHOD0(maximumScrollPosition, IntPoint()); - MOCK_CONST_METHOD1(visibleContentRect, IntRect(bool)); - MOCK_CONST_METHOD0(contentsSize, IntSize()); - MOCK_CONST_METHOD0(overhangAmount, IntSize()); - MOCK_CONST_METHOD0(scrollbarsCanBeActive, bool()); - MOCK_CONST_METHOD0(scrollableAreaBoundingBox, IntRect()); - - virtual IntPoint scrollPosition() const OVERRIDE { return IntPoint(); } - virtual int visibleHeight() const OVERRIDE { return 768; } - virtual int visibleWidth() const OVERRIDE { return 1024; } - virtual bool scrollAnimatorEnabled() const OVERRIDE { return m_scrollAnimatorEnabled; } - -private: - bool m_scrollAnimatorEnabled; -}; - -class MockScrollAnimatorNone : public ScrollAnimatorNone { -public: - MockScrollAnimatorNone() - : ScrollAnimatorNone(new MockScrollableArea(true)) { } - MockScrollAnimatorNone(ScrollableArea* scrollableArea) - : ScrollAnimatorNone(scrollableArea) { } - - float currentX() { return m_currentPosX; } - float currentY() { return m_currentPosY; } - - FloatPoint m_fp; - int m_count; - - void reset() - { - stopAnimationTimerIfNeeded(); - m_currentPosX = 0; - m_currentPosY = 0; - m_horizontalData.reset(); - m_verticalData.reset(); - m_fp = FloatPoint::zero(); - m_count = 0; - } - - virtual void fireUpAnAnimation(FloatPoint fp) - { - m_fp = fp; - m_count++; - } - - MOCK_METHOD1(scrollToOffsetWithoutAnimation, void(const FloatPoint&)); -}; - -TEST(ScrollAnimatorEnabled, Enabled) -{ - MockScrollableArea scrollableArea(true); - MockScrollAnimatorNone scrollAnimatorNone(&scrollableArea); - - EXPECT_CALL(scrollableArea, scrollSize(_)).Times(AtLeast(1)).WillRepeatedly(Return(1000)); - EXPECT_CALL(scrollableArea, setScrollOffset(_)).Times(4); - - scrollAnimatorNone.scroll(HorizontalScrollbar, ScrollByLine, 100, 1); - EXPECT_NE(100, scrollAnimatorNone.currentX()); - EXPECT_NE(0, scrollAnimatorNone.currentX()); - EXPECT_EQ(0, scrollAnimatorNone.currentY()); - scrollAnimatorNone.reset(); - - scrollAnimatorNone.scroll(HorizontalScrollbar, ScrollByPage, 100, 1); - EXPECT_NE(100, scrollAnimatorNone.currentX()); - EXPECT_NE(0, scrollAnimatorNone.currentX()); - EXPECT_EQ(0, scrollAnimatorNone.currentY()); - scrollAnimatorNone.reset(); - - scrollAnimatorNone.scroll(HorizontalScrollbar, ScrollByPixel, 4, 25); - EXPECT_NE(100, scrollAnimatorNone.currentX()); - EXPECT_NE(0, scrollAnimatorNone.currentX()); - EXPECT_EQ(0, scrollAnimatorNone.currentY()); - scrollAnimatorNone.reset(); - - scrollAnimatorNone.scroll(HorizontalScrollbar, ScrollByPrecisePixel, 4, 25); - EXPECT_EQ(100, scrollAnimatorNone.currentX()); - EXPECT_NE(0, scrollAnimatorNone.currentX()); - EXPECT_EQ(0, scrollAnimatorNone.currentY()); - scrollAnimatorNone.reset(); -} - -TEST(ScrollAnimatorEnabled, Disabled) -{ - MockScrollableArea scrollableArea(false); - MockScrollAnimatorNone scrollAnimatorNone(&scrollableArea); - - EXPECT_CALL(scrollableArea, scrollSize(_)).Times(AtLeast(1)).WillRepeatedly(Return(1000)); - EXPECT_CALL(scrollableArea, setScrollOffset(_)).Times(4); - - scrollAnimatorNone.scroll(HorizontalScrollbar, ScrollByLine, 100, 1); - EXPECT_EQ(100, scrollAnimatorNone.currentX()); - EXPECT_EQ(0, scrollAnimatorNone.currentY()); - scrollAnimatorNone.reset(); - - scrollAnimatorNone.scroll(HorizontalScrollbar, ScrollByPage, 100, 1); - EXPECT_EQ(100, scrollAnimatorNone.currentX()); - EXPECT_EQ(0, scrollAnimatorNone.currentY()); - scrollAnimatorNone.reset(); - - scrollAnimatorNone.scroll(HorizontalScrollbar, ScrollByDocument, 100, 1); - EXPECT_EQ(100, scrollAnimatorNone.currentX()); - EXPECT_EQ(0, scrollAnimatorNone.currentY()); - scrollAnimatorNone.reset(); - - scrollAnimatorNone.scroll(HorizontalScrollbar, ScrollByPixel, 100, 1); - EXPECT_EQ(100, scrollAnimatorNone.currentX()); - EXPECT_EQ(0, scrollAnimatorNone.currentY()); - scrollAnimatorNone.reset(); -} - -class ScrollAnimatorNoneTest : public testing::Test { -public: - struct SavePerAxisData : public ScrollAnimatorNone::PerAxisData { - SavePerAxisData(const ScrollAnimatorNone::PerAxisData& data) - : ScrollAnimatorNone::PerAxisData(&m_mockScrollAnimatorNone, 0, 768) - { - this->m_currentVelocity = data.m_currentVelocity; - this->m_desiredPosition = data.m_desiredPosition; - this->m_desiredVelocity = data.m_desiredVelocity; - this->m_startPosition = data.m_startPosition; - this->m_startTime = data.m_startTime; - this->m_startVelocity = data.m_startVelocity; - this->m_animationTime = data.m_animationTime; - this->m_lastAnimationTime = data.m_lastAnimationTime; - this->m_attackPosition = data.m_attackPosition; - this->m_attackTime = data.m_attackTime; - this->m_attackCurve = data.m_attackCurve; - this->m_releasePosition = data.m_releasePosition; - this->m_releaseTime = data.m_releaseTime; - this->m_releaseCurve = data.m_releaseCurve; - } - - bool operator==(const SavePerAxisData& other) const - { - return m_currentVelocity == other.m_currentVelocity && m_desiredPosition == other.m_desiredPosition && m_desiredVelocity == other.m_desiredVelocity && m_startPosition == other.m_startPosition && m_startTime == other.m_startTime && m_startVelocity == other.m_startVelocity && m_animationTime == other.m_animationTime && m_lastAnimationTime == other.m_lastAnimationTime && m_attackPosition == other.m_attackPosition && m_attackTime == other.m_attackTime && m_attackCurve == other.m_attackCurve && m_releasePosition == other.m_releasePosition && m_releaseTime == other.m_releaseTime && m_releaseCurve == other.m_releaseCurve; - } - MockScrollAnimatorNone m_mockScrollAnimatorNone; - }; - - ScrollAnimatorNoneTest() - { - } - - virtual void SetUp() - { - m_currentPosition = 100; - m_data = new ScrollAnimatorNone::PerAxisData(&m_mockScrollAnimatorNone, &m_currentPosition, 768); - } - virtual void TearDown() - { - delete m_data; - } - - void reset(); - bool updateDataFromParameters(float step, float multiplier, float scrollableSize, double currentTime, ScrollAnimatorNone::Parameters*); - bool animateScroll(double currentTime); - - double attackArea(ScrollAnimatorNone::Curve, double startT, double endT); - double releaseArea(ScrollAnimatorNone::Curve, double startT, double endT); - double attackCurve(ScrollAnimatorNone::Curve, double deltaT, double curveT, double startPosition, double attackPosition); - double releaseCurve(ScrollAnimatorNone::Curve, double deltaT, double curveT, double releasePosition, double desiredPosition); - double coastCurve(ScrollAnimatorNone::Curve, double factor); - - void curveTestInner(ScrollAnimatorNone::Curve, double step, double time); - void curveTest(ScrollAnimatorNone::Curve); - - void checkDesiredPosition(float expectedPosition); - void checkSoftLanding(float expectedPosition); - - static double kTickTime; - static double kAnimationTime; - static double kStartTime; - static double kEndTime; - float m_currentPosition; - MockScrollAnimatorNone m_mockScrollAnimatorNone; - bool m_scrollingDown; - ScrollAnimatorNone::PerAxisData* m_data; -}; - -double ScrollAnimatorNoneTest::kTickTime = 1 / 60.0; -double ScrollAnimatorNoneTest::kAnimationTime = 0.01; -double ScrollAnimatorNoneTest::kStartTime = 10.0; -double ScrollAnimatorNoneTest::kEndTime = 20.0; - -void ScrollAnimatorNoneTest::reset() -{ - m_data->reset(); - m_scrollingDown = true; -} - -bool ScrollAnimatorNoneTest::updateDataFromParameters(float step, float multiplier, float scrollableSize, double currentTime, ScrollAnimatorNone::Parameters* parameters) -{ - if (step * multiplier) - m_scrollingDown = (step * multiplier > 0); - - double oldVelocity = m_data->m_currentVelocity; - double oldDesiredVelocity = m_data->m_desiredVelocity; - double oldTimeLeft = m_data->m_animationTime - (m_data->m_lastAnimationTime - m_data->m_startTime); - bool result = m_data->updateDataFromParameters(step, multiplier, scrollableSize, currentTime, parameters); - if (m_scrollingDown) - EXPECT_LE(oldVelocity, m_data->m_currentVelocity); - else - EXPECT_GE(oldVelocity, m_data->m_currentVelocity); - - double deltaTime = m_data->m_lastAnimationTime - m_data->m_startTime; - double timeLeft = m_data->m_animationTime - deltaTime; - double releaseTimeLeft = min(timeLeft, m_data->m_releaseTime); - double attackTimeLeft = max(0., m_data->m_attackTime - deltaTime); - double sustainTimeLeft = max(0., timeLeft - releaseTimeLeft - attackTimeLeft); - - // If we're getting near the finish, the desired velocity can decrease since the time left gets increased. - if (step * multiplier) { - double allowedVelocityDecreaseFactor = 0.99 * oldTimeLeft / timeLeft; - allowedVelocityDecreaseFactor *= allowedVelocityDecreaseFactor; - if (m_scrollingDown) - EXPECT_LE(oldDesiredVelocity * allowedVelocityDecreaseFactor, m_data->m_desiredVelocity); - else - EXPECT_GE(oldDesiredVelocity * allowedVelocityDecreaseFactor, m_data->m_desiredVelocity); - - double startPosition = attackTimeLeft ? m_data->m_attackPosition : m_currentPosition; - double expectedReleasePosition = startPosition + sustainTimeLeft * m_data->m_desiredVelocity; - EXPECT_NEAR(expectedReleasePosition, m_data->m_releasePosition, result ? .0001 : 1); - } - - return result; -} - -bool ScrollAnimatorNoneTest::animateScroll(double currentTime) -{ - double oldPosition = *m_data->m_currentPosition; - bool testEstimatedMaxVelocity = m_data->m_startTime + m_data->m_animationTime - m_data->m_lastAnimationTime > m_data->m_releaseTime; - - bool result = m_data->animateScroll(currentTime); - - double deltaTime = m_data->m_lastAnimationTime - m_data->m_startTime; - double timeLeft = m_data->m_animationTime - deltaTime; - double releaseTimeLeft = min(timeLeft, m_data->m_releaseTime); - double attackTimeLeft = max(0., m_data->m_attackTime - deltaTime); - double sustainTimeLeft = max(0., timeLeft - releaseTimeLeft - attackTimeLeft); - double distanceLeft = m_data->m_desiredPosition - *m_data->m_currentPosition; - - if (m_scrollingDown) { - EXPECT_LE(0, m_data->m_currentVelocity); - EXPECT_LE(oldPosition, *m_data->m_currentPosition); - } else { - EXPECT_GE(0, m_data->m_currentVelocity); - EXPECT_GE(oldPosition, *m_data->m_currentPosition); - } - EXPECT_GE(fabs(m_data->m_desiredVelocity) * 2, fabs(m_data->m_currentVelocity)); - if (testEstimatedMaxVelocity) - EXPECT_GE(fabs(distanceLeft / sustainTimeLeft) * 1.2, fabs(m_data->m_currentVelocity)); - - return result; -} - -double ScrollAnimatorNoneTest::attackArea(ScrollAnimatorNone::Curve curve, double startT, double endT) -{ - return ScrollAnimatorNone::PerAxisData::attackArea(curve, startT, endT); -} - -double ScrollAnimatorNoneTest::releaseArea(ScrollAnimatorNone::Curve curve, double startT, double endT) -{ - return ScrollAnimatorNone::PerAxisData::releaseArea(curve, startT, endT); -} - -double ScrollAnimatorNoneTest::attackCurve(ScrollAnimatorNone::Curve curve, double deltaT, double curveT, double startPosition, double attackPosition) -{ - return ScrollAnimatorNone::PerAxisData::attackCurve(curve, deltaT, curveT, startPosition, attackPosition); -} - -double ScrollAnimatorNoneTest::releaseCurve(ScrollAnimatorNone::Curve curve, double deltaT, double curveT, double releasePosition, double desiredPosition) -{ - return ScrollAnimatorNone::PerAxisData::releaseCurve(curve, deltaT, curveT, releasePosition, desiredPosition); -} - -double ScrollAnimatorNoneTest::coastCurve(ScrollAnimatorNone::Curve curve, double factor) -{ - return ScrollAnimatorNone::PerAxisData::coastCurve(curve, factor); -} - -void ScrollAnimatorNoneTest::curveTestInner(ScrollAnimatorNone::Curve curve, double step, double time) -{ - const double kPosition = 1000; - - double oldPos = 0; - double oldVelocity = 0; - double accumulate = 0; - - for (double t = step ; t <= time ; t += step) { - double newPos = attackCurve(curve, t, time, 0, kPosition); - double delta = newPos - oldPos; - double velocity = delta / step; - double velocityDelta = velocity - oldVelocity; - - accumulate += (oldPos + newPos) / 2 * (step / time); - oldPos = newPos; - oldVelocity = velocity; - if (curve != ScrollAnimatorNone::Bounce) { - EXPECT_LE(-.0001, velocityDelta); - EXPECT_LT(0, delta); - } - - double area = attackArea(curve, 0, t / time) * kPosition; - EXPECT_LE(0, area); - EXPECT_NEAR(accumulate, area, 1.0); - } - - oldPos = 0; - oldVelocity *= 2; - accumulate = releaseArea(curve, 0, 1) * kPosition; - for (double t = step ; t <= time ; t += step) { - double newPos = releaseCurve(curve, t, time, 0, kPosition); - double delta = newPos - oldPos; - double velocity = delta / step; - double velocityDelta = velocity - oldVelocity; - - accumulate -= (kPosition - (oldPos + newPos) / 2) * (step / time); - oldPos = newPos; - oldVelocity = velocity; - if (curve != ScrollAnimatorNone::Bounce) { - EXPECT_GE(0.01, velocityDelta); - EXPECT_LT(0, delta); - } - - double area = releaseArea(curve, t / time, 1) * kPosition; - EXPECT_LE(0, area); - EXPECT_NEAR(accumulate, area, 1.0); - } -} - -void ScrollAnimatorNoneTest::curveTest(ScrollAnimatorNone::Curve curve) -{ - curveTestInner(curve, 0.01, 0.25); - curveTestInner(curve, 0.2, 10); - curveTestInner(curve, 0.025, 10); - curveTestInner(curve, 0.01, 1); - curveTestInner(curve, 0.25, 40); -} - -void ScrollAnimatorNoneTest::checkDesiredPosition(float expectedPosition) -{ - EXPECT_EQ(expectedPosition, m_data->m_desiredPosition); -} - -void ScrollAnimatorNoneTest::checkSoftLanding(float expectedPosition) -{ - EXPECT_EQ(expectedPosition, m_currentPosition); - EXPECT_LE(m_data->m_desiredVelocity / 2, m_data->m_currentVelocity); -} - -TEST_F(ScrollAnimatorNoneTest, CurveMathLinear) -{ - curveTest(ScrollAnimatorNone::Linear); -} - -TEST_F(ScrollAnimatorNoneTest, CurveMathQuadratic) -{ - curveTest(ScrollAnimatorNone::Quadratic); -} - -TEST_F(ScrollAnimatorNoneTest, CurveMathCubic) -{ - curveTest(ScrollAnimatorNone::Cubic); -} - -TEST_F(ScrollAnimatorNoneTest, CurveMathQuartic) -{ - curveTest(ScrollAnimatorNone::Quartic); -} - -TEST_F(ScrollAnimatorNoneTest, CurveMathBounce) -{ - curveTest(ScrollAnimatorNone::Bounce); -} - -TEST_F(ScrollAnimatorNoneTest, CurveMathCoast) -{ - for (double t = .25; t < 1; t += .25) { - EXPECT_EQ(t, coastCurve(ScrollAnimatorNone::Linear, t)); - EXPECT_LT(t, coastCurve(ScrollAnimatorNone::Quadratic, t)); - EXPECT_LT(t, coastCurve(ScrollAnimatorNone::Cubic, t)); - EXPECT_LT(coastCurve(ScrollAnimatorNone::Quadratic, t), coastCurve(ScrollAnimatorNone::Cubic, t)); - EXPECT_LT(t, coastCurve(ScrollAnimatorNone::Quartic, t)); - EXPECT_LT(coastCurve(ScrollAnimatorNone::Cubic, t), coastCurve(ScrollAnimatorNone::Quartic, t)); - } -} - -TEST_F(ScrollAnimatorNoneTest, ScrollOnceLinear) -{ - ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, 0, ScrollAnimatorNone::Linear, 3 * kTickTime, ScrollAnimatorNone::Linear, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, 40, 1000, kStartTime, ¶meters)); - bool result = true; - for (double t = kStartTime; result && t < kEndTime; t += kAnimationTime) - result = animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollOnceQuadratic) -{ - ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, 0, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, 40, 1000, kStartTime, ¶meters)); - bool result = true; - for (double t = kStartTime; result && t < kEndTime; t += kAnimationTime) - result = animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollLongQuadratic) -{ - ScrollAnimatorNone::Parameters parameters(true, 20 * kTickTime, 0, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, 40, 1000, kStartTime, ¶meters)); - bool result = true; - for (double t = kStartTime; result && t < kEndTime; t += kAnimationTime) - result = animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollQuadraticNoSustain) -{ - ScrollAnimatorNone::Parameters parameters(true, 8 * kTickTime, 0, ScrollAnimatorNone::Quadratic, 4 * kTickTime, ScrollAnimatorNone::Quadratic, 4 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, 40, 1000, kStartTime, ¶meters)); - bool result = true; - for (double t = kStartTime; result && t < kEndTime; t += kAnimationTime) - result = animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollQuadraticSmoothed) -{ - ScrollAnimatorNone::Parameters parameters(true, 8 * kTickTime, 8 * kTickTime, ScrollAnimatorNone::Quadratic, 4 * kTickTime, ScrollAnimatorNone::Quadratic, 4 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, 40, 1000, kStartTime, ¶meters)); - bool result = true; - for (double t = kStartTime; result && t < kEndTime; t += kAnimationTime) - result = animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollOnceCubic) -{ - ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, 0, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, 40, 1000, kStartTime, ¶meters)); - bool result = true; - for (double t = kStartTime; result && t < kEndTime; t += kAnimationTime) - result = animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollOnceQuartic) -{ - ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, 0, ScrollAnimatorNone::Quartic, 3 * kTickTime, ScrollAnimatorNone::Quartic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, 40, 1000, kStartTime, ¶meters)); - bool result = true; - for (double t = kStartTime; result && t < kEndTime; t += kAnimationTime) - result = animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollOnceShort) -{ - ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, 0, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, 40, 1000, kStartTime, ¶meters)); - bool result = true; - for (double t = kStartTime; result && t < kEndTime; t += kTickTime) - result = animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollTwiceQuadratic) -{ - ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, 0, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, 40, 1000, kStartTime, ¶meters)); - bool result = true; - double t; - for (t = kStartTime; result && t < kStartTime + 1.5 * kTickTime; t += kAnimationTime) - result = animateScroll(t); - - result = result && animateScroll(t); - double before = m_currentPosition; - result = result && updateDataFromParameters(1, 40, 1000, t, ¶meters); - result = result && animateScroll(t); - double after = m_currentPosition; - EXPECT_NEAR(before, after, 10); - - t += kAnimationTime; - - result = result && animateScroll(t); - before = m_currentPosition; - result = result && updateDataFromParameters(1, 40, 1000, t, ¶meters); - result = result && animateScroll(t); - after = m_currentPosition; - EXPECT_NEAR(before, after, 10); - - t += kAnimationTime; - for (; result && t < kEndTime; t += kAnimationTime) - result = animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollLotsQuadratic) -{ - ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, 0, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, 40, 10000, kStartTime, ¶meters)); - bool result = true; - double t; - for (t = kStartTime; result && t < kStartTime + 1.5 * kTickTime; t += kAnimationTime) - result = animateScroll(t); - - for (int i = 0; i < 20; ++i) { - t += kAnimationTime; - result = result && animateScroll(t); - result = result && updateDataFromParameters(3, 40, 10000, t, ¶meters); - } - - t += kAnimationTime; - for (; result && t < kEndTime; t += kAnimationTime) - result = result && animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollLotsQuadraticSmoothed) -{ - ScrollAnimatorNone::Parameters parameters(true, 10 * kTickTime, 6 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Quadratic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, 40, 10000, kStartTime, ¶meters)); - bool result = true; - double t; - for (t = kStartTime; result && t < kStartTime + 1.5 * kTickTime; t += kAnimationTime) - result = animateScroll(t); - - for (int i = 0; i < 20; ++i) { - t += kAnimationTime; - result = result && animateScroll(t); - result = result && updateDataFromParameters(3, 40, 10000, t, ¶meters); - } - - t += kAnimationTime; - for (; result && t < kEndTime; t += kAnimationTime) - result = result && animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollTwiceCubic) -{ - ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, 0, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, 40, 1000, kStartTime, ¶meters)); - bool result = true; - double t; - for (t = kStartTime; result && t < kStartTime + 1.5 * kTickTime; t += kAnimationTime) - result = animateScroll(t); - - result = result && animateScroll(t); - double before = m_currentPosition; - result = result && updateDataFromParameters(1, 40, 1000, t, ¶meters); - result = result && animateScroll(t); - double after = m_currentPosition; - EXPECT_NEAR(before, after, 10); - - t += kAnimationTime; - - result = result && animateScroll(t); - before = m_currentPosition; - result = result && updateDataFromParameters(1, 40, 1000, t, ¶meters); - result = result && animateScroll(t); - after = m_currentPosition; - EXPECT_NEAR(before, after, 10); - - t += kAnimationTime; - for (; result && t < kEndTime; t += kAnimationTime) - result = animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollLotsCubic) -{ - ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, 0, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, 40, 10000, kStartTime, ¶meters)); - bool result = true; - double t; - for (t = kStartTime; result && t < kStartTime + 1.5 * kTickTime; t += kAnimationTime) - result = animateScroll(t); - - for (int i = 0; i < 20; ++i) { - t += kAnimationTime; - result = result && animateScroll(t); - result = result && updateDataFromParameters(3, 40, 10000, t, ¶meters); - } - - t += kAnimationTime; - for (; result && t < kEndTime; t += kAnimationTime) - result = result && animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollLotsCubicSmoothed) -{ - ScrollAnimatorNone::Parameters parameters(true, 10 * kTickTime, 6 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, 40, 10000, kStartTime, ¶meters)); - bool result = true; - double t; - for (t = kStartTime; result && t < kStartTime + 1.5 * kTickTime; t += kAnimationTime) - result = animateScroll(t); - - for (int i = 0; i < 20; ++i) { - t += kAnimationTime; - result = result && animateScroll(t); - result = result && updateDataFromParameters(3, 40, 10000, t, ¶meters); - } - - t += kAnimationTime; - for (; result && t < kEndTime; t += kAnimationTime) - result = result && animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollWheelTrace) -{ - ScrollAnimatorNone::Parameters parameters(true, 11 * kTickTime, 0, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - // Constructed from an actual scroll wheel trace that exhibited a glitch. - bool result = updateDataFromParameters(1, 53.33f, 1000, 100.5781f, ¶meters); - result = animateScroll(100.5933); - result = result && animateScroll(100.6085); - result = result && updateDataFromParameters(1, 53.33f, 1000, 100.6485f, ¶meters); - result = result && animateScroll(100.6515); - result = result && animateScroll(100.6853); - result = result && updateDataFromParameters(1, 53.33f, 1000, 100.6863f, ¶meters); - result = result && animateScroll(100.7005); - result = result && animateScroll(100.7157); - result = result && animateScroll(100.7312); - result = result && updateDataFromParameters(1, 53.33f, 1000, 100.7379f, ¶meters); - result = result && animateScroll(100.7464); - result = result && animateScroll(100.7617); - result = result && animateScroll(100.7775); - result = result && updateDataFromParameters(1, 53.33f, 1000, 100.7779f, ¶meters); - for (double t = 100.7928; result && t < 200; t += 0.015) - result = result && animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollWheelTraceSmoothed) -{ - ScrollAnimatorNone::Parameters parameters(true, 11 * kTickTime, 7 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - // Constructed from an actual scroll wheel trace that exhibited a glitch. - bool result = updateDataFromParameters(1, 53.33f, 1000, 100.5781f, ¶meters); - result = animateScroll(100.5933); - result = result && animateScroll(100.6085); - result = result && updateDataFromParameters(1, 53.33f, 1000, 100.6485f, ¶meters); - result = result && animateScroll(100.6515); - result = result && animateScroll(100.6853); - result = result && updateDataFromParameters(1, 53.33f, 1000, 100.6863f, ¶meters); - result = result && animateScroll(100.7005); - result = result && animateScroll(100.7157); - result = result && animateScroll(100.7312); - result = result && updateDataFromParameters(1, 53.33f, 1000, 100.7379f, ¶meters); - result = result && animateScroll(100.7464); - result = result && animateScroll(100.7617); - result = result && animateScroll(100.7775); - result = result && updateDataFromParameters(1, 53.33f, 1000, 100.7779f, ¶meters); - for (double t = 100.7928; result && t < 200; t += 0.015) - result = result && animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, LinuxTrackPadTrace) -{ - ScrollAnimatorNone::Parameters parameters(true, 11 * kTickTime, 0, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - bool result = updateDataFromParameters(1.00, 60.00, 1000, 100.6863, ¶meters); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.6897, ¶meters); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.7001, ¶meters); - result = result && animateScroll(100.7015); - result = result && animateScroll(100.7169); - result = result && updateDataFromParameters(1.00, 40.00, 1000, 100.7179, ¶meters); - result = result && animateScroll(100.7322); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.7332, ¶meters); - result = result && animateScroll(100.7491); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.7519, ¶meters); - result = result && animateScroll(100.7676); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.7698, ¶meters); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.7830, ¶meters); - result = result && animateScroll(100.7834); - result = result && animateScroll(100.7997); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.8019, ¶meters); - result = result && animateScroll(100.8154); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.8241, ¶meters); - result = result && animateScroll(100.8335); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.8465, ¶meters); - result = result && animateScroll(100.8513); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.8623, ¶meters); - for (double t = 100.8674; result && t < 200; t += 0.015) - result = result && animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, LinuxTrackPadTraceSmoothed) -{ - ScrollAnimatorNone::Parameters parameters(true, 11 * kTickTime, 7 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - bool result = updateDataFromParameters(1.00, 60.00, 1000, 100.6863, ¶meters); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.6897, ¶meters); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.7001, ¶meters); - result = result && animateScroll(100.7015); - result = result && animateScroll(100.7169); - result = result && updateDataFromParameters(1.00, 40.00, 1000, 100.7179, ¶meters); - result = result && animateScroll(100.7322); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.7332, ¶meters); - result = result && animateScroll(100.7491); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.7519, ¶meters); - result = result && animateScroll(100.7676); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.7698, ¶meters); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.7830, ¶meters); - result = result && animateScroll(100.7834); - result = result && animateScroll(100.7997); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.8019, ¶meters); - result = result && animateScroll(100.8154); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.8241, ¶meters); - result = result && animateScroll(100.8335); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.8465, ¶meters); - result = result && animateScroll(100.8513); - result = result && updateDataFromParameters(1.00, 20.00, 1000, 100.8623, ¶meters); - for (double t = 100.8674; result && t < 200; t += 0.015) - result = result && animateScroll(t); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollDownToBumper) -{ - ScrollAnimatorNone::Parameters parameters(true, 10 * kTickTime, 7 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, 20, 200, kStartTime, ¶meters)); - bool result = true; - double t = kStartTime; - for (int i = 0; i < 10; ++i) { - t += kAnimationTime; - result = result && animateScroll(t); - updateDataFromParameters(1, 20, 200, t, ¶meters); - } - checkDesiredPosition(200); - - t += kAnimationTime; - for (; result && t < kEndTime; t += kAnimationTime) - result = result && animateScroll(t); - checkSoftLanding(200); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollUpToBumper) -{ - ScrollAnimatorNone::Parameters parameters(true, 10 * kTickTime, 7 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, -20, 200, kStartTime, ¶meters)); - bool result = true; - double t = kStartTime; - for (int i = 0; i < 10; ++i) { - t += kAnimationTime; - result = result && animateScroll(t); - updateDataFromParameters(1, -20, 200, t, ¶meters); - } - checkDesiredPosition(0); - - t += kAnimationTime; - for (; result && t < kEndTime; t += kAnimationTime) - result = result && animateScroll(t); - checkSoftLanding(0); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollUpToBumperCoast) -{ - ScrollAnimatorNone::Parameters parameters(true, 11 * kTickTime, 2 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Linear, 1); - - m_currentPosition = 40000; - EXPECT_TRUE(updateDataFromParameters(1, -10000, 50000, kStartTime, ¶meters)); - bool result = true; - double t = kStartTime; - for (int i = 0; i < 10; ++i) { - t += kAnimationTime; - result = result && animateScroll(t); - updateDataFromParameters(1, -10000, 50000, t, ¶meters); - } - checkDesiredPosition(0); - - t += kAnimationTime; - for (; result && t < kEndTime; t += kAnimationTime) - result = result && animateScroll(t); - checkSoftLanding(0); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollDownToBumperCoast) -{ - ScrollAnimatorNone::Parameters parameters(true, 11 * kTickTime, 2 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Linear, 1); - - m_currentPosition = 10000; - EXPECT_TRUE(updateDataFromParameters(1, 10000, 50000, kStartTime, ¶meters)); - bool result = true; - double t = kStartTime; - for (int i = 0; i < 10; ++i) { - t += kAnimationTime; - result = result && animateScroll(t); - updateDataFromParameters(1, 10000, 50000, t, ¶meters); - } - checkDesiredPosition(50000); - - t += kAnimationTime; - for (; result && t < kEndTime; t += kAnimationTime) - result = result && animateScroll(t); - checkSoftLanding(50000); -} - -TEST_F(ScrollAnimatorNoneTest, VaryingInputsEquivalency) -{ - ScrollAnimatorNone::Parameters parameters(true, 15 * kTickTime, 10 * kTickTime, ScrollAnimatorNone::Cubic, 5 * kTickTime, ScrollAnimatorNone::Cubic, 5 * kTickTime, ScrollAnimatorNone::Linear, 0); - - reset(); - EXPECT_TRUE(updateDataFromParameters(1, 300, 50000, kStartTime, ¶meters)); - SavePerAxisData dataSingle(*m_data); - - reset(); - EXPECT_TRUE(updateDataFromParameters(1, 150, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 150, 50000, kStartTime, ¶meters)); - SavePerAxisData dataDouble(*m_data); - - reset(); - EXPECT_TRUE(updateDataFromParameters(1, 100, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 100, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 100, 50000, kStartTime, ¶meters)); - SavePerAxisData dataTriple(*m_data); - - reset(); - EXPECT_TRUE(updateDataFromParameters(1, 50, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 50, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 50, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 50, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 50, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 50, 50000, kStartTime, ¶meters)); - SavePerAxisData dataMany(*m_data); - - EXPECT_EQ(dataSingle, dataDouble); - EXPECT_EQ(dataSingle, dataTriple); - EXPECT_EQ(dataSingle, dataMany); -} - -TEST_F(ScrollAnimatorNoneTest, VaryingInputsEquivalencyCoast) -{ - ScrollAnimatorNone::Parameters parameters(true, 15 * kTickTime, 10 * kTickTime, ScrollAnimatorNone::Cubic, 5 * kTickTime, ScrollAnimatorNone::Cubic, 5 * kTickTime, ScrollAnimatorNone::Linear, 1); - - reset(); - updateDataFromParameters(1, 300, 50000, kStartTime, ¶meters); - SavePerAxisData dataSingle(*m_data); - - reset(); - updateDataFromParameters(1, 150, 50000, kStartTime, ¶meters); - updateDataFromParameters(1, 150, 50000, kStartTime, ¶meters); - SavePerAxisData dataDouble(*m_data); - - reset(); - updateDataFromParameters(1, 100, 50000, kStartTime, ¶meters); - updateDataFromParameters(1, 100, 50000, kStartTime, ¶meters); - updateDataFromParameters(1, 100, 50000, kStartTime, ¶meters); - SavePerAxisData dataTriple(*m_data); - - reset(); - updateDataFromParameters(1, 50, 50000, kStartTime, ¶meters); - updateDataFromParameters(1, 50, 50000, kStartTime, ¶meters); - updateDataFromParameters(1, 50, 50000, kStartTime, ¶meters); - updateDataFromParameters(1, 50, 50000, kStartTime, ¶meters); - updateDataFromParameters(1, 50, 50000, kStartTime, ¶meters); - updateDataFromParameters(1, 50, 50000, kStartTime, ¶meters); - SavePerAxisData dataMany(*m_data); - - EXPECT_EQ(dataSingle, dataDouble); - EXPECT_EQ(dataSingle, dataTriple); - EXPECT_EQ(dataSingle, dataMany); -} - -TEST_F(ScrollAnimatorNoneTest, VaryingInputsEquivalencyCoastLarge) -{ - ScrollAnimatorNone::Parameters parameters(true, 15 * kTickTime, 10 * kTickTime, ScrollAnimatorNone::Cubic, 5 * kTickTime, ScrollAnimatorNone::Cubic, 5 * kTickTime, ScrollAnimatorNone::Linear, 1); - - reset(); - EXPECT_TRUE(updateDataFromParameters(1, 30000, 50000, kStartTime, ¶meters)); - SavePerAxisData dataSingle(*m_data); - - reset(); - EXPECT_TRUE(updateDataFromParameters(1, 15000, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 15000, 50000, kStartTime, ¶meters)); - SavePerAxisData dataDouble(*m_data); - - reset(); - EXPECT_TRUE(updateDataFromParameters(1, 10000, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 10000, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 10000, 50000, kStartTime, ¶meters)); - SavePerAxisData dataTriple(*m_data); - - reset(); - EXPECT_TRUE(updateDataFromParameters(1, 5000, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 5000, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 5000, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 5000, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 5000, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 5000, 50000, kStartTime, ¶meters)); - SavePerAxisData dataMany(*m_data); - - EXPECT_EQ(dataSingle, dataDouble); - EXPECT_EQ(dataSingle, dataTriple); - EXPECT_EQ(dataSingle, dataMany); -} - -TEST_F(ScrollAnimatorNoneTest, VaryingInputsEquivalencyCoastSteep) -{ - ScrollAnimatorNone::Parameters parameters(true, 15 * kTickTime, 10 * kTickTime, ScrollAnimatorNone::Cubic, 5 * kTickTime, ScrollAnimatorNone::Cubic, 5 * kTickTime, ScrollAnimatorNone::Quadratic, 1); - - reset(); - EXPECT_TRUE(updateDataFromParameters(1, 30000, 50000, kStartTime, ¶meters)); - SavePerAxisData dataSingle(*m_data); - - reset(); - EXPECT_TRUE(updateDataFromParameters(1, 15000, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 15000, 50000, kStartTime, ¶meters)); - SavePerAxisData dataDouble(*m_data); - - reset(); - EXPECT_TRUE(updateDataFromParameters(1, 10000, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 10000, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 10000, 50000, kStartTime, ¶meters)); - SavePerAxisData dataTriple(*m_data); - - reset(); - EXPECT_TRUE(updateDataFromParameters(1, 5000, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 5000, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 5000, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 5000, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 5000, 50000, kStartTime, ¶meters)); - EXPECT_TRUE(updateDataFromParameters(1, 5000, 50000, kStartTime, ¶meters)); - SavePerAxisData dataMany(*m_data); - - EXPECT_EQ(dataSingle, dataDouble); - EXPECT_EQ(dataSingle, dataTriple); - EXPECT_EQ(dataSingle, dataMany); -} - -TEST_F(ScrollAnimatorNoneTest, ScrollStopInMiddle) -{ - ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, 0, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, 40, 1000, kStartTime, ¶meters)); - bool result = true; - double t; - for (t = kStartTime; result && t < kStartTime + 1.5 * kTickTime; t += kAnimationTime) - result = animateScroll(t); - - result = result && animateScroll(t); - EXPECT_TRUE(result); - double before = m_currentPosition; - result = result && updateDataFromParameters(0, 0, 1000, t, ¶meters); - EXPECT_FALSE(result); - result = result && animateScroll(t); - double after = m_currentPosition; - EXPECT_EQ(before, after); - checkDesiredPosition(after); -} - -TEST_F(ScrollAnimatorNoneTest, ReverseInMiddle) -{ - ScrollAnimatorNone::Parameters parameters(true, 7 * kTickTime, 0, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Cubic, 3 * kTickTime, ScrollAnimatorNone::Linear, 0); - - EXPECT_TRUE(updateDataFromParameters(1, 40, 1000, kStartTime, ¶meters)); - bool result = true; - double t; - for (t = kStartTime; result && t < kStartTime + 1.5 * kTickTime; t += kAnimationTime) - result = animateScroll(t); - - result = result && animateScroll(t); - EXPECT_TRUE(result); - double before = m_currentPosition; - result = result && updateDataFromParameters(1, -10, 1000, t, ¶meters); - EXPECT_TRUE(result); - result = result && animateScroll(t); - double after = m_currentPosition; - EXPECT_GE(before, after); - - t += kAnimationTime; - for (; result && t < kEndTime; t += kAnimationTime) - result = result && animateScroll(t); - EXPECT_GE(before, m_currentPosition); -} - -#endif // ENABLE(SMOOTH_SCROLLING) |