Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(158)

Side by Side Diff: sky/engine/core/animation/InterpolableValueTest.cpp

Issue 1229273004: Remove Animations and Transitions. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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 "sky/engine/core/animation/InterpolableValue.h"
6
7 #include "sky/engine/core/animation/Interpolation.h"
8
9 #include <gtest/gtest.h>
10
11 namespace blink {
12
13 class AnimationInterpolableValueTest : public ::testing::Test {
14 protected:
15 InterpolableValue* interpolationValue(Interpolation& interpolation)
16 {
17 return interpolation.getCachedValueForTesting();
18 }
19
20 double interpolateNumbers(double a, double b, double progress)
21 {
22 RefPtr<Interpolation> i = Interpolation::create(InterpolableNumber::crea te(a), InterpolableNumber::create(b));
23 i->interpolate(0, progress);
24 return toInterpolableNumber(interpolationValue(*i.get()))->value();
25 }
26
27 bool interpolateBools(bool a, bool b, double progress)
28 {
29 RefPtr<Interpolation> i = Interpolation::create(InterpolableBool::create (a), InterpolableBool::create(b));
30 i->interpolate(0, progress);
31 return toInterpolableBool(interpolationValue(*i.get()))->value();
32 }
33
34 PassRefPtr<Interpolation> interpolateLists(PassOwnPtr<InterpolableList> list A, PassOwnPtr<InterpolableList> listB, double progress)
35 {
36 RefPtr<Interpolation> i = Interpolation::create(listA, listB);
37 i->interpolate(0, progress);
38 return i;
39 }
40 };
41
42 TEST_F(AnimationInterpolableValueTest, InterpolateNumbers)
43 {
44 EXPECT_FLOAT_EQ(126, interpolateNumbers(42, 0, -2));
45 EXPECT_FLOAT_EQ(42, interpolateNumbers(42, 0, 0));
46 EXPECT_FLOAT_EQ(29.4f, interpolateNumbers(42, 0, 0.3));
47 EXPECT_FLOAT_EQ(21, interpolateNumbers(42, 0, 0.5));
48 EXPECT_FLOAT_EQ(0, interpolateNumbers(42, 0, 1));
49 EXPECT_FLOAT_EQ(-21, interpolateNumbers(42, 0, 1.5));
50 }
51
52 TEST_F(AnimationInterpolableValueTest, InterpolateBools)
53 {
54 EXPECT_FALSE(interpolateBools(false, true, -1));
55 EXPECT_FALSE(interpolateBools(false, true, 0));
56 EXPECT_FALSE(interpolateBools(false, true, 0.3));
57 EXPECT_TRUE(interpolateBools(false, true, 0.5));
58 EXPECT_TRUE(interpolateBools(false, true, 1));
59 EXPECT_TRUE(interpolateBools(false, true, 2));
60 }
61
62 TEST_F(AnimationInterpolableValueTest, SimpleList)
63 {
64 OwnPtr<InterpolableList> listA = InterpolableList::create(3);
65 listA->set(0, InterpolableNumber::create(0));
66 listA->set(1, InterpolableNumber::create(42));
67 listA->set(2, InterpolableNumber::create(20.5));
68
69 OwnPtr<InterpolableList> listB = InterpolableList::create(3);
70 listB->set(0, InterpolableNumber::create(100));
71 listB->set(1, InterpolableNumber::create(-200));
72 listB->set(2, InterpolableNumber::create(300));
73
74 RefPtr<Interpolation> i = interpolateLists(listA.release(), listB.release(), 0.3);
75 InterpolableList* outList = toInterpolableList(interpolationValue(*i.get())) ;
76 EXPECT_FLOAT_EQ(30, toInterpolableNumber(outList->get(0))->value());
77 EXPECT_FLOAT_EQ(-30.6f, toInterpolableNumber(outList->get(1))->value());
78 EXPECT_FLOAT_EQ(104.35f, toInterpolableNumber(outList->get(2))->value());
79 }
80
81 TEST_F(AnimationInterpolableValueTest, NestedList)
82 {
83 OwnPtr<InterpolableList> listA = InterpolableList::create(3);
84 listA->set(0, InterpolableNumber::create(0));
85 OwnPtr<InterpolableList> subListA = InterpolableList::create(1);
86 subListA->set(0, InterpolableNumber::create(100));
87 listA->set(1, subListA.release());
88 listA->set(2, InterpolableBool::create(false));
89
90 OwnPtr<InterpolableList> listB = InterpolableList::create(3);
91 listB->set(0, InterpolableNumber::create(100));
92 OwnPtr<InterpolableList> subListB = InterpolableList::create(1);
93 subListB->set(0, InterpolableNumber::create(50));
94 listB->set(1, subListB.release());
95 listB->set(2, InterpolableBool::create(true));
96
97 RefPtr<Interpolation> i = interpolateLists(listA.release(), listB.release(), 0.5);
98 InterpolableList* outList = toInterpolableList(interpolationValue(*i.get())) ;
99 EXPECT_FLOAT_EQ(50, toInterpolableNumber(outList->get(0))->value());
100 EXPECT_FLOAT_EQ(75, toInterpolableNumber(toInterpolableList(outList->get(1)) ->get(0))->value());
101 EXPECT_TRUE(toInterpolableBool(outList->get(2))->value());
102 }
103
104 }
OLDNEW
« no previous file with comments | « sky/engine/core/animation/InterpolableValue.cpp ('k') | sky/engine/core/animation/Interpolation.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698