Home | History | Annotate | Download | only in animatable
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "config.h"
      6 
      7 #include "core/animation/animatable/AnimatableLength.h"
      8 
      9 #include "platform/CalculationValue.h"
     10 
     11 #include <gtest/gtest.h>
     12 
     13 namespace blink {
     14 
     15 namespace {
     16 
     17     PassRefPtrWillBeRawPtr<AnimatableLength> create(const Length& length, double zoom = 1)
     18     {
     19         return AnimatableLength::create(length, zoom);
     20     }
     21 
     22 } // namespace
     23 
     24 TEST(AnimationAnimatableLengthTest, RoundTripConversion)
     25 {
     26     EXPECT_EQ(Length(0, Fixed), create(Length(0, Fixed))->length(1, ValueRangeAll));
     27     EXPECT_EQ(Length(0, Percent), create(Length(0, Percent))->length(1, ValueRangeAll));
     28     EXPECT_EQ(Length(10, Fixed), create(Length(10, Fixed))->length(1, ValueRangeAll));
     29     EXPECT_EQ(Length(10, Percent), create(Length(10, Percent))->length(1, ValueRangeAll));
     30     EXPECT_EQ(Length(-10, Fixed), create(Length(-10, Fixed))->length(1, ValueRangeAll));
     31     EXPECT_EQ(Length(-10, Percent), create(Length(-10, Percent))->length(1, ValueRangeAll));
     32     Length calc = Length(CalculationValue::create(PixelsAndPercent(5, 10), ValueRangeAll));
     33     EXPECT_EQ(calc, create(calc)->length(1, ValueRangeAll));
     34 }
     35 
     36 TEST(AnimationAnimatableLengthTest, ValueRangeNonNegative)
     37 {
     38     EXPECT_EQ(Length(10, Fixed), create(Length(10, Fixed))->length(1, ValueRangeNonNegative));
     39     EXPECT_EQ(Length(10, Percent), create(Length(10, Percent))->length(1, ValueRangeNonNegative));
     40     EXPECT_EQ(Length(0, Fixed), create(Length(-10, Fixed))->length(1, ValueRangeNonNegative));
     41     EXPECT_EQ(Length(0, Percent), create(Length(-10, Percent))->length(1, ValueRangeNonNegative));
     42     Length calc = Length(CalculationValue::create(PixelsAndPercent(-5, -10), ValueRangeNonNegative));
     43     EXPECT_TRUE(calc == create(calc)->length(1, ValueRangeNonNegative));
     44 }
     45 
     46 TEST(AnimationAnimatableLengthTest, Zoom)
     47 {
     48     EXPECT_EQ(Length(4, Fixed), create(Length(10, Fixed), 5)->length(2, ValueRangeAll));
     49     EXPECT_EQ(Length(10, Percent), create(Length(10, Percent), 5)->length(2, ValueRangeAll));
     50     Length calc = Length(CalculationValue::create(PixelsAndPercent(5, 10), ValueRangeAll));
     51     Length result = Length(CalculationValue::create(PixelsAndPercent(2, 10), ValueRangeAll));
     52     EXPECT_TRUE(result == create(calc, 5)->length(2, ValueRangeAll));
     53 }
     54 
     55 TEST(AnimationAnimatableLengthTest, Equals)
     56 {
     57     EXPECT_TRUE(create(Length(10, Fixed))->equals(create(Length(10, Fixed)).get()));
     58     EXPECT_TRUE(create(Length(20, Percent))->equals(create(Length(20, Percent)).get()));
     59     EXPECT_FALSE(create(Length(10, Fixed))->equals(create(Length(10, Percent)).get()));
     60     EXPECT_FALSE(create(Length(0, Percent))->equals(create(Length(0, Fixed)).get()));
     61     Length calc = Length(CalculationValue::create(PixelsAndPercent(5, 10), ValueRangeAll));
     62     EXPECT_TRUE(create(calc)->equals(create(calc).get()));
     63     EXPECT_FALSE(create(calc)->equals(create(Length(10, Percent)).get()));
     64 }
     65 
     66 TEST(AnimationAnimatableLengthTest, Interpolate)
     67 {
     68     EXPECT_TRUE(AnimatableValue::interpolate(create(Length(10, Fixed)).get(), create(Length(0, Fixed)).get(), 0.2)->equals(create(Length(8, Fixed)).get()));
     69     EXPECT_TRUE(AnimatableValue::interpolate(create(Length(4, Percent)).get(), create(Length(12, Percent)).get(), 0.25)->equals(create(Length(6, Percent)).get()));
     70     Length calc = Length(CalculationValue::create(PixelsAndPercent(12, 4), ValueRangeAll));
     71     EXPECT_TRUE(AnimatableValue::interpolate(create(Length(20, Fixed)).get(), create(Length(10, Percent)).get(), 0.4)->equals(create(calc).get()));
     72 }
     73 
     74 } // namespace blink
     75