blob: 627b9b164aa81ec91f984ec4cb8dd0d2c849362e [file] [log] [blame]
// 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 <limits>
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<double>::infinity());
EXPECT_EQ(max_delta.InMillisecondsF(),
std::numeric_limits<double>::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