1e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch/* 2e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * Copyright (c) 2013, Google Inc. All rights reserved. 3e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * 4e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * Redistribution and use in source and binary forms, with or without 5e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * modification, are permitted provided that the following conditions are 6e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * met: 7e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * 8e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * * Redistributions of source code must retain the above copyright 9e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * notice, this list of conditions and the following disclaimer. 10e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * * Redistributions in binary form must reproduce the above 11e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * copyright notice, this list of conditions and the following disclaimer 12e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * in the documentation and/or other materials provided with the 13e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * distribution. 14e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * * Neither the name of Google Inc. nor the names of its 15e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * contributors may be used to endorse or promote products derived from 16e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * this software without specific prior written permission. 17e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * 18e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch */ 30e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 31e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include "config.h" 32197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "core/animation/animatable/AnimatableUnknown.h" 33e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 34197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "core/animation/animatable/AnimatableNeutral.h" 35e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#include "core/css/CSSValuePool.h" 36e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 37e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include <gtest/gtest.h> 38e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 39c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)using namespace blink; 40e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 41e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdochnamespace { 42e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 4351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)class AnimationAnimatableUnknownTest : public ::testing::Test { 44e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdochprotected: 45e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch virtual void SetUp() 46e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch { 47e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) cssValue = cssValuePool().createIdentifierValue(CSSValueYellow); 48e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch animatableUnknown = AnimatableUnknown::create(cssValue); 49e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 50e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) otherCSSValue = cssValuePool().createIdentifierValue(CSSValueOrange); 51e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch otherAnimatableUnknown = AnimatableUnknown::create(otherCSSValue); 52e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch } 53e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 54d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) RefPtrWillBePersistent<CSSValue> cssValue; 5507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch RefPtrWillBePersistent<AnimatableValue> animatableUnknown; 56d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) RefPtrWillBePersistent<CSSValue> otherCSSValue; 5707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch RefPtrWillBePersistent<AnimatableValue> otherAnimatableUnknown; 58e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}; 59e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 6051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)TEST_F(AnimationAnimatableUnknownTest, Create) 61e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{ 62e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch EXPECT_TRUE(animatableUnknown); 63e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch} 64e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 6551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)TEST_F(AnimationAnimatableUnknownTest, ToCSSValue) 66e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{ 673c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch EXPECT_EQ(cssValue, toAnimatableUnknown(animatableUnknown.get())->toCSSValue()); 68e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch} 69e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 7051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)TEST_F(AnimationAnimatableUnknownTest, Interpolate) 71e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{ 723c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch EXPECT_EQ(cssValue, toAnimatableUnknown(AnimatableValue::interpolate(animatableUnknown.get(), otherAnimatableUnknown.get(), 0).get())->toCSSValue()); 733c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch EXPECT_EQ(cssValue, toAnimatableUnknown(AnimatableValue::interpolate(animatableUnknown.get(), otherAnimatableUnknown.get(), 0.4).get())->toCSSValue()); 743c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch EXPECT_EQ(otherCSSValue, toAnimatableUnknown(AnimatableValue::interpolate(animatableUnknown.get(), otherAnimatableUnknown.get(), 0.5).get())->toCSSValue()); 753c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch EXPECT_EQ(otherCSSValue, toAnimatableUnknown(AnimatableValue::interpolate(animatableUnknown.get(), otherAnimatableUnknown.get(), 0.6).get())->toCSSValue()); 763c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch EXPECT_EQ(otherCSSValue, toAnimatableUnknown(AnimatableValue::interpolate(animatableUnknown.get(), otherAnimatableUnknown.get(), 1).get())->toCSSValue()); 77e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 783c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch EXPECT_EQ(otherCSSValue, toAnimatableUnknown(AnimatableValue::interpolate(otherAnimatableUnknown.get(), animatableUnknown.get(), 0).get())->toCSSValue()); 793c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch EXPECT_EQ(otherCSSValue, toAnimatableUnknown(AnimatableValue::interpolate(otherAnimatableUnknown.get(), animatableUnknown.get(), 0.4).get())->toCSSValue()); 803c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch EXPECT_EQ(cssValue, toAnimatableUnknown(AnimatableValue::interpolate(otherAnimatableUnknown.get(), animatableUnknown.get(), 0.5).get())->toCSSValue()); 813c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch EXPECT_EQ(cssValue, toAnimatableUnknown(AnimatableValue::interpolate(otherAnimatableUnknown.get(), animatableUnknown.get(), 0.6).get())->toCSSValue()); 823c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch EXPECT_EQ(cssValue, toAnimatableUnknown(AnimatableValue::interpolate(otherAnimatableUnknown.get(), animatableUnknown.get(), 1).get())->toCSSValue()); 83e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch} 84e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 85e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch} 86