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

Side by Side Diff: cc/trees/property_tree_unittest.cc

Issue 935333002: Update from https://crrev.com/316786 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 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
« no previous file with comments | « cc/trees/property_tree_builder.cc ('k') | cc/trees/proxy.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/property_tree.h" 5 #include "cc/trees/property_tree.h"
6 6
7 #include "cc/test/geometry_test_utils.h" 7 #include "cc/test/geometry_test_utils.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 namespace cc { 10 namespace cc {
11 11
12 TEST(PropertyTreeTest, ComputeTransformRoot) { 12 TEST(PropertyTreeTest, ComputeTransformRoot) {
13 TransformTree tree; 13 TransformTree tree;
14 TransformNode& root = *tree.Node(0); 14 TransformNode& root = *tree.Node(0);
15 root.data.to_parent.Translate(2, 2); 15 root.data.local.Translate(2, 2);
16 root.data.from_parent.Translate(-2, -2); 16 root.data.target_id = 0;
17 tree.UpdateScreenSpaceTransform(0); 17 tree.UpdateTransforms(0);
18 18
19 gfx::Transform expected; 19 gfx::Transform expected;
20 gfx::Transform transform; 20 gfx::Transform transform;
21 bool success = tree.ComputeTransform(0, 0, &transform); 21 bool success = tree.ComputeTransform(0, 0, &transform);
22 EXPECT_TRUE(success); 22 EXPECT_TRUE(success);
23 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 23 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
24 24
25 transform.MakeIdentity(); 25 transform.MakeIdentity();
26 expected.Translate(2, 2); 26 expected.Translate(2, 2);
27 success = tree.ComputeTransform(0, -1, &transform); 27 success = tree.ComputeTransform(0, -1, &transform);
28 EXPECT_TRUE(success); 28 EXPECT_TRUE(success);
29 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 29 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
30 30
31 transform.MakeIdentity(); 31 transform.MakeIdentity();
32 expected.MakeIdentity(); 32 expected.MakeIdentity();
33 expected.Translate(-2, -2); 33 expected.Translate(-2, -2);
34 success = tree.ComputeTransform(-1, 0, &transform); 34 success = tree.ComputeTransform(-1, 0, &transform);
35 EXPECT_TRUE(success); 35 EXPECT_TRUE(success);
36 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 36 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
37 } 37 }
38 38
39 TEST(PropertyTreeTest, ComputeTransformChild) { 39 TEST(PropertyTreeTest, ComputeTransformChild) {
40 TransformTree tree; 40 TransformTree tree;
41 TransformNode& root = *tree.Node(0); 41 TransformNode& root = *tree.Node(0);
42 root.data.to_parent.Translate(2, 2); 42 root.data.local.Translate(2, 2);
43 root.data.from_parent.Translate(-2, -2); 43 root.data.target_id = 0;
44 tree.UpdateScreenSpaceTransform(0); 44 tree.UpdateTransforms(0);
45 45
46 TransformNode child; 46 TransformNode child;
47 child.data.to_parent.Translate(3, 3); 47 child.data.local.Translate(3, 3);
48 child.data.from_parent.Translate(-3, -3); 48 child.data.target_id = 0;
49 49
50 tree.Insert(child, 0); 50 tree.Insert(child, 0);
51 tree.UpdateScreenSpaceTransform(1); 51 tree.UpdateTransforms(1);
52 52
53 gfx::Transform expected; 53 gfx::Transform expected;
54 gfx::Transform transform; 54 gfx::Transform transform;
55 55
56 expected.Translate(3, 3); 56 expected.Translate(3, 3);
57 bool success = tree.ComputeTransform(1, 0, &transform); 57 bool success = tree.ComputeTransform(1, 0, &transform);
58 EXPECT_TRUE(success); 58 EXPECT_TRUE(success);
59 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 59 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
60 60
61 transform.MakeIdentity(); 61 transform.MakeIdentity();
(...skipping 14 matching lines...) Expand all
76 expected.MakeIdentity(); 76 expected.MakeIdentity();
77 expected.Translate(-5, -5); 77 expected.Translate(-5, -5);
78 success = tree.ComputeTransform(-1, 1, &transform); 78 success = tree.ComputeTransform(-1, 1, &transform);
79 EXPECT_TRUE(success); 79 EXPECT_TRUE(success);
80 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 80 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
81 } 81 }
82 82
83 TEST(PropertyTreeTest, ComputeTransformSibling) { 83 TEST(PropertyTreeTest, ComputeTransformSibling) {
84 TransformTree tree; 84 TransformTree tree;
85 TransformNode& root = *tree.Node(0); 85 TransformNode& root = *tree.Node(0);
86 root.data.to_parent.Translate(2, 2); 86 root.data.local.Translate(2, 2);
87 root.data.from_parent.Translate(-2, -2); 87 root.data.target_id = 0;
88 tree.UpdateScreenSpaceTransform(0); 88 tree.UpdateTransforms(0);
89 89
90 TransformNode child; 90 TransformNode child;
91 child.data.to_parent.Translate(3, 3); 91 child.data.local.Translate(3, 3);
92 child.data.from_parent.Translate(-3, -3); 92 child.data.target_id = 0;
93 93
94 TransformNode sibling; 94 TransformNode sibling;
95 sibling.data.to_parent.Translate(7, 7); 95 sibling.data.local.Translate(7, 7);
96 sibling.data.from_parent.Translate(-7, -7); 96 sibling.data.target_id = 0;
97 97
98 tree.Insert(child, 0); 98 tree.Insert(child, 0);
99 tree.Insert(sibling, 0); 99 tree.Insert(sibling, 0);
100 100
101 tree.UpdateScreenSpaceTransform(1); 101 tree.UpdateTransforms(1);
102 tree.UpdateScreenSpaceTransform(2); 102 tree.UpdateTransforms(2);
103 103
104 gfx::Transform expected; 104 gfx::Transform expected;
105 gfx::Transform transform; 105 gfx::Transform transform;
106 106
107 expected.Translate(4, 4); 107 expected.Translate(4, 4);
108 bool success = tree.ComputeTransform(2, 1, &transform); 108 bool success = tree.ComputeTransform(2, 1, &transform);
109 EXPECT_TRUE(success); 109 EXPECT_TRUE(success);
110 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 110 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
111 111
112 transform.MakeIdentity(); 112 transform.MakeIdentity();
113 expected.MakeIdentity(); 113 expected.MakeIdentity();
114 expected.Translate(-4, -4); 114 expected.Translate(-4, -4);
115 success = tree.ComputeTransform(1, 2, &transform); 115 success = tree.ComputeTransform(1, 2, &transform);
116 EXPECT_TRUE(success); 116 EXPECT_TRUE(success);
117 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 117 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
118 } 118 }
119 119
120 TEST(PropertyTreeTest, ComputeTransformSiblingSingularAncestor) { 120 TEST(PropertyTreeTest, ComputeTransformSiblingSingularAncestor) {
121 // In this test, we have the following tree: 121 // In this test, we have the following tree:
122 // root 122 // root
123 // + singular 123 // + singular
124 // + child 124 // + child
125 // + sibling 125 // + sibling
126 // Now singular has a singular transform, so we cannot use screen space 126 // Now singular has a singular transform, so we cannot use screen space
127 // transforms to compute change of basis transforms between |child| and 127 // transforms to compute change of basis transforms between |child| and
128 // |sibling|. 128 // |sibling|.
129 TransformTree tree; 129 TransformTree tree;
130 TransformNode& root = *tree.Node(0); 130 TransformNode& root = *tree.Node(0);
131 root.data.to_parent.Translate(2, 2); 131 root.data.local.Translate(2, 2);
132 root.data.from_parent.Translate(-2, -2); 132 root.data.target_id = 0;
133 tree.UpdateScreenSpaceTransform(0); 133 tree.UpdateTransforms(0);
134 134
135 TransformNode singular; 135 TransformNode singular;
136 singular.data.to_parent.matrix().set(2, 2, 0.0); 136 singular.data.local.matrix().set(2, 2, 0.0);
137 singular.data.is_invertible = false; 137 singular.data.target_id = 0;
138 singular.data.ancestors_are_invertible = false;
139 138
140 TransformNode child; 139 TransformNode child;
141 child.data.to_parent.Translate(3, 3); 140 child.data.local.Translate(3, 3);
142 child.data.from_parent.Translate(-3, -3); 141 child.data.target_id = 0;
143 child.data.ancestors_are_invertible = false;
144 142
145 TransformNode sibling; 143 TransformNode sibling;
146 sibling.data.to_parent.Translate(7, 7); 144 sibling.data.local.Translate(7, 7);
147 sibling.data.from_parent.Translate(-7, -7); 145 sibling.data.target_id = 0;
148 sibling.data.ancestors_are_invertible = false;
149 146
150 tree.Insert(singular, 0); 147 tree.Insert(singular, 0);
151 tree.Insert(child, 1); 148 tree.Insert(child, 1);
152 tree.Insert(sibling, 1); 149 tree.Insert(sibling, 1);
153 150
154 tree.UpdateScreenSpaceTransform(1); 151 tree.UpdateTransforms(1);
155 tree.UpdateScreenSpaceTransform(2); 152 tree.UpdateTransforms(2);
156 tree.UpdateScreenSpaceTransform(3); 153 tree.UpdateTransforms(3);
157 154
158 gfx::Transform expected; 155 gfx::Transform expected;
159 gfx::Transform transform; 156 gfx::Transform transform;
160 157
161 expected.Translate(4, 4); 158 expected.Translate(4, 4);
162 bool success = tree.ComputeTransform(3, 2, &transform); 159 bool success = tree.ComputeTransform(3, 2, &transform);
163 EXPECT_TRUE(success); 160 EXPECT_TRUE(success);
164 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 161 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
165 162
166 transform.MakeIdentity(); 163 transform.MakeIdentity();
167 expected.MakeIdentity(); 164 expected.MakeIdentity();
168 expected.Translate(-4, -4); 165 expected.Translate(-4, -4);
169 success = tree.ComputeTransform(2, 3, &transform); 166 success = tree.ComputeTransform(2, 3, &transform);
170 EXPECT_TRUE(success); 167 EXPECT_TRUE(success);
171 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 168 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
172 } 169 }
173 170
174 TEST(PropertyTreeTest, MultiplicationOrder) { 171 TEST(PropertyTreeTest, MultiplicationOrder) {
175 TransformTree tree; 172 TransformTree tree;
176 TransformNode& root = *tree.Node(0); 173 TransformNode& root = *tree.Node(0);
177 root.data.to_parent.Translate(2, 2); 174 root.data.local.Translate(2, 2);
178 root.data.from_parent.Translate(-2, -2); 175 root.data.target_id = 0;
179 tree.UpdateScreenSpaceTransform(0); 176 tree.UpdateTransforms(0);
180 177
181 TransformNode child; 178 TransformNode child;
182 child.data.to_parent.Scale(2, 2); 179 child.data.local.Scale(2, 2);
183 child.data.from_parent.Scale(0.5, 0.5); 180 child.data.target_id = 0;
184 181
185 tree.Insert(child, 0); 182 tree.Insert(child, 0);
186 tree.UpdateScreenSpaceTransform(1); 183 tree.UpdateTransforms(1);
187 184
188 gfx::Transform expected; 185 gfx::Transform expected;
189 expected.Translate(2, 2); 186 expected.Translate(2, 2);
190 expected.Scale(2, 2); 187 expected.Scale(2, 2);
191 188
192 gfx::Transform transform; 189 gfx::Transform transform;
193 gfx::Transform inverse; 190 gfx::Transform inverse;
194 191
195 bool success = tree.ComputeTransform(1, -1, &transform); 192 bool success = tree.ComputeTransform(1, -1, &transform);
196 EXPECT_TRUE(success); 193 EXPECT_TRUE(success);
197 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 194 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
198 195
199 success = tree.ComputeTransform(-1, 1, &inverse); 196 success = tree.ComputeTransform(-1, 1, &inverse);
200 EXPECT_TRUE(success); 197 EXPECT_TRUE(success);
201 198
202 transform = transform * inverse; 199 transform = transform * inverse;
203 expected.MakeIdentity(); 200 expected.MakeIdentity();
204 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 201 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
205 } 202 }
206 203
207 } // namespace cc 204 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/property_tree_builder.cc ('k') | cc/trees/proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698