15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/events/gestures/fling_curve.h" 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/gfx/frame_time.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace ui { 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TEST(FlingCurveTest, Basic) { 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const gfx::Vector2dF velocity(0, 5000); 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::TimeTicks now = gfx::FrameTime::Now(); 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) FlingCurve curve(velocity, now); 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) gfx::Vector2dF scroll = 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) curve.GetScrollAmountAtTime(now + base::TimeDelta::FromMilliseconds(20)); 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(0, scroll.x()); 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_NEAR(scroll.y(), 96, 1); 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scroll = 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) curve.GetScrollAmountAtTime(now + base::TimeDelta::FromMilliseconds(250)); 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(0, scroll.x()); 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_NEAR(scroll.y(), 705, 1); 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scroll = 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) curve.GetScrollAmountAtTime(now + base::TimeDelta::FromSeconds(10)); 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ(0, scroll.x()); 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_NEAR(scroll.y(), 392, 1); 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_TRUE(curve.GetScrollAmountAtTime( 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) now + base::TimeDelta::FromSeconds(20)).IsZero()); 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace ui 37