// Copyright 2018 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 "third_party/blink/renderer/core/animation/animation_time_delta.h" #include "testing/gtest/include/gtest/gtest.h" #include namespace blink { TEST(AnimationTimeDeltaTest, Construction) { // The default constructor is a zero-length delta. EXPECT_EQ(AnimationTimeDelta(), AnimationTimeDelta::FromSecondsD(0)); EXPECT_EQ(AnimationTimeDelta(), AnimationTimeDelta::FromMillisecondsD(0)); EXPECT_EQ(AnimationTimeDelta::FromSecondsD(5.5), AnimationTimeDelta::FromMillisecondsD(5500)); EXPECT_EQ(AnimationTimeDelta::FromSecondsD(-2), AnimationTimeDelta::FromMillisecondsD(-2000)); } TEST(AnimationTimeDeltaTest, Conversion) { AnimationTimeDelta delta = AnimationTimeDelta::FromSecondsD(5); EXPECT_EQ(delta.InSecondsF(), 5); EXPECT_EQ(delta.InMillisecondsF(), 5000); delta = AnimationTimeDelta::FromMillisecondsD(1234); EXPECT_EQ(delta.InSecondsF(), 1.234); EXPECT_EQ(delta.InMillisecondsF(), 1234); } TEST(AnimationTimeDeltaTest, Max) { AnimationTimeDelta max_delta = AnimationTimeDelta::Max(); EXPECT_TRUE(max_delta.is_max()); EXPECT_EQ(max_delta, AnimationTimeDelta::Max()); EXPECT_GT(max_delta, AnimationTimeDelta::FromSecondsD(365 * 24 * 60 * 60)); EXPECT_EQ(max_delta.InSecondsF(), std::numeric_limits::infinity()); EXPECT_EQ(max_delta.InMillisecondsF(), std::numeric_limits::infinity()); } TEST(AnimationTimeDeltaTest, Zero) { EXPECT_TRUE(AnimationTimeDelta().is_zero()); EXPECT_TRUE(AnimationTimeDelta::FromSecondsD(0).is_zero()); EXPECT_TRUE(AnimationTimeDelta::FromMillisecondsD(0).is_zero()); EXPECT_FALSE(AnimationTimeDelta::FromSecondsD(54.5).is_zero()); EXPECT_FALSE(AnimationTimeDelta::FromSecondsD(-0.5).is_zero()); EXPECT_FALSE(AnimationTimeDelta::FromMillisecondsD(123.45).is_zero()); } TEST(AnimationTimeDeltaTest, Computation) { EXPECT_EQ(AnimationTimeDelta::FromSecondsD(4.5) + AnimationTimeDelta::FromMillisecondsD(500), AnimationTimeDelta::FromSecondsD(5)); EXPECT_EQ(AnimationTimeDelta::FromSecondsD(100) + AnimationTimeDelta::FromMillisecondsD(-850), AnimationTimeDelta::FromSecondsD(99.15)); EXPECT_EQ(AnimationTimeDelta::FromSecondsD(5) * 20, AnimationTimeDelta::FromSecondsD(100)); EXPECT_EQ(AnimationTimeDelta::FromSecondsD(10) * 1.5, AnimationTimeDelta::FromSecondsD(15)); EXPECT_EQ(AnimationTimeDelta::FromSecondsD(2.5) * -2, AnimationTimeDelta::FromSecondsD(-5)); EXPECT_EQ(20 * AnimationTimeDelta::FromSecondsD(5), AnimationTimeDelta::FromSecondsD(100)); } TEST(AnimationTimeDeltaTest, Comparison) { EXPECT_TRUE(AnimationTimeDelta::FromSecondsD(10) == AnimationTimeDelta::FromSecondsD(10)); EXPECT_TRUE(AnimationTimeDelta::FromSecondsD(10) != AnimationTimeDelta::FromSecondsD(50)); EXPECT_TRUE(AnimationTimeDelta::FromSecondsD(50) > AnimationTimeDelta::FromSecondsD(49.999)); EXPECT_TRUE(AnimationTimeDelta::FromSecondsD(50) >= AnimationTimeDelta::FromSecondsD(49.999)); EXPECT_TRUE(AnimationTimeDelta::FromSecondsD(50) >= AnimationTimeDelta::FromSecondsD(50)); EXPECT_TRUE(AnimationTimeDelta::FromSecondsD(50) <= AnimationTimeDelta::FromSecondsD(50)); EXPECT_TRUE(AnimationTimeDelta::FromSecondsD(50) <= AnimationTimeDelta::FromSecondsD(100)); } } // namespace blink