1 | // Copyright 2013 The Flutter 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 "flutter/flow/embedded_views.h" |
6 | |
7 | #include "gtest/gtest.h" |
8 | |
9 | namespace flutter { |
10 | namespace testing { |
11 | |
12 | TEST(MutatorsStack, Initialization) { |
13 | MutatorsStack stack; |
14 | ASSERT_TRUE(true); |
15 | } |
16 | |
17 | TEST(MutatorsStack, CopyConstructor) { |
18 | MutatorsStack stack; |
19 | auto rrect = SkRRect::MakeEmpty(); |
20 | auto rect = SkRect::MakeEmpty(); |
21 | stack.PushClipRect(rect); |
22 | stack.PushClipRRect(rrect); |
23 | MutatorsStack copy = MutatorsStack(stack); |
24 | ASSERT_TRUE(copy == stack); |
25 | } |
26 | |
27 | TEST(MutatorsStack, CopyAndUpdateTheCopy) { |
28 | MutatorsStack stack; |
29 | auto rrect = SkRRect::MakeEmpty(); |
30 | auto rect = SkRect::MakeEmpty(); |
31 | stack.PushClipRect(rect); |
32 | stack.PushClipRRect(rrect); |
33 | MutatorsStack copy = MutatorsStack(stack); |
34 | copy.Pop(); |
35 | copy.Pop(); |
36 | ASSERT_TRUE(copy != stack); |
37 | ASSERT_TRUE(copy.is_empty()); |
38 | ASSERT_TRUE(!stack.is_empty()); |
39 | auto iter = stack.Bottom(); |
40 | ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rrect); |
41 | ASSERT_TRUE(iter->get()->GetRRect() == rrect); |
42 | ++iter; |
43 | ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rect); |
44 | ASSERT_TRUE(iter->get()->GetRect() == rect); |
45 | } |
46 | |
47 | TEST(MutatorsStack, PushClipRect) { |
48 | MutatorsStack stack; |
49 | auto rect = SkRect::MakeEmpty(); |
50 | stack.PushClipRect(rect); |
51 | auto iter = stack.Bottom(); |
52 | ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rect); |
53 | ASSERT_TRUE(iter->get()->GetRect() == rect); |
54 | } |
55 | |
56 | TEST(MutatorsStack, PushClipRRect) { |
57 | MutatorsStack stack; |
58 | auto rrect = SkRRect::MakeEmpty(); |
59 | stack.PushClipRRect(rrect); |
60 | auto iter = stack.Bottom(); |
61 | ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rrect); |
62 | ASSERT_TRUE(iter->get()->GetRRect() == rrect); |
63 | } |
64 | |
65 | TEST(MutatorsStack, PushClipPath) { |
66 | MutatorsStack stack; |
67 | SkPath path; |
68 | stack.PushClipPath(path); |
69 | auto iter = stack.Bottom(); |
70 | ASSERT_TRUE(iter->get()->GetType() == flutter::MutatorType::clip_path); |
71 | ASSERT_TRUE(iter->get()->GetPath() == path); |
72 | } |
73 | |
74 | TEST(MutatorsStack, PushTransform) { |
75 | MutatorsStack stack; |
76 | SkMatrix matrix; |
77 | matrix.setIdentity(); |
78 | stack.PushTransform(matrix); |
79 | auto iter = stack.Bottom(); |
80 | ASSERT_TRUE(iter->get()->GetType() == MutatorType::transform); |
81 | ASSERT_TRUE(iter->get()->GetMatrix() == matrix); |
82 | } |
83 | |
84 | TEST(MutatorsStack, PushOpacity) { |
85 | MutatorsStack stack; |
86 | int alpha = 240; |
87 | stack.PushOpacity(alpha); |
88 | auto iter = stack.Bottom(); |
89 | ASSERT_TRUE(iter->get()->GetType() == MutatorType::opacity); |
90 | ASSERT_TRUE(iter->get()->GetAlpha() == 240); |
91 | } |
92 | |
93 | TEST(MutatorsStack, Pop) { |
94 | MutatorsStack stack; |
95 | SkMatrix matrix; |
96 | matrix.setIdentity(); |
97 | stack.PushTransform(matrix); |
98 | stack.Pop(); |
99 | auto iter = stack.Bottom(); |
100 | ASSERT_TRUE(iter == stack.Top()); |
101 | } |
102 | |
103 | TEST(MutatorsStack, Traversal) { |
104 | MutatorsStack stack; |
105 | SkMatrix matrix; |
106 | matrix.setIdentity(); |
107 | stack.PushTransform(matrix); |
108 | auto rect = SkRect::MakeEmpty(); |
109 | stack.PushClipRect(rect); |
110 | auto rrect = SkRRect::MakeEmpty(); |
111 | stack.PushClipRRect(rrect); |
112 | auto iter = stack.Bottom(); |
113 | int index = 0; |
114 | while (iter != stack.Top()) { |
115 | switch (index) { |
116 | case 0: |
117 | ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rrect); |
118 | ASSERT_TRUE(iter->get()->GetRRect() == rrect); |
119 | break; |
120 | case 1: |
121 | ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rect); |
122 | ASSERT_TRUE(iter->get()->GetRect() == rect); |
123 | break; |
124 | case 2: |
125 | ASSERT_TRUE(iter->get()->GetType() == MutatorType::transform); |
126 | ASSERT_TRUE(iter->get()->GetMatrix() == matrix); |
127 | break; |
128 | default: |
129 | break; |
130 | } |
131 | ++iter; |
132 | ++index; |
133 | } |
134 | } |
135 | |
136 | TEST(MutatorsStack, Equality) { |
137 | MutatorsStack stack; |
138 | SkMatrix matrix = SkMatrix::Scale(1, 1); |
139 | stack.PushTransform(matrix); |
140 | SkRect rect = SkRect::MakeEmpty(); |
141 | stack.PushClipRect(rect); |
142 | SkRRect rrect = SkRRect::MakeEmpty(); |
143 | stack.PushClipRRect(rrect); |
144 | SkPath path; |
145 | stack.PushClipPath(path); |
146 | int alpha = 240; |
147 | stack.PushOpacity(alpha); |
148 | |
149 | MutatorsStack stackOther; |
150 | SkMatrix matrixOther = SkMatrix::Scale(1, 1); |
151 | stackOther.PushTransform(matrixOther); |
152 | SkRect rectOther = SkRect::MakeEmpty(); |
153 | stackOther.PushClipRect(rectOther); |
154 | SkRRect rrectOther = SkRRect::MakeEmpty(); |
155 | stackOther.PushClipRRect(rrectOther); |
156 | SkPath otherPath; |
157 | stackOther.PushClipPath(otherPath); |
158 | int otherAlpha = 240; |
159 | stackOther.PushOpacity(otherAlpha); |
160 | |
161 | ASSERT_TRUE(stack == stackOther); |
162 | } |
163 | |
164 | TEST(Mutator, Initialization) { |
165 | SkRect rect = SkRect::MakeEmpty(); |
166 | Mutator mutator = Mutator(rect); |
167 | ASSERT_TRUE(mutator.GetType() == MutatorType::clip_rect); |
168 | ASSERT_TRUE(mutator.GetRect() == rect); |
169 | |
170 | SkRRect rrect = SkRRect::MakeEmpty(); |
171 | Mutator mutator2 = Mutator(rrect); |
172 | ASSERT_TRUE(mutator2.GetType() == MutatorType::clip_rrect); |
173 | ASSERT_TRUE(mutator2.GetRRect() == rrect); |
174 | |
175 | SkPath path; |
176 | Mutator mutator3 = Mutator(path); |
177 | ASSERT_TRUE(mutator3.GetType() == MutatorType::clip_path); |
178 | ASSERT_TRUE(mutator3.GetPath() == path); |
179 | |
180 | SkMatrix matrix; |
181 | matrix.setIdentity(); |
182 | Mutator mutator4 = Mutator(matrix); |
183 | ASSERT_TRUE(mutator4.GetType() == MutatorType::transform); |
184 | ASSERT_TRUE(mutator4.GetMatrix() == matrix); |
185 | |
186 | int alpha = 240; |
187 | Mutator mutator5 = Mutator(alpha); |
188 | ASSERT_TRUE(mutator5.GetType() == MutatorType::opacity); |
189 | } |
190 | |
191 | TEST(Mutator, CopyConstructor) { |
192 | SkRect rect = SkRect::MakeEmpty(); |
193 | Mutator mutator = Mutator(rect); |
194 | Mutator copy = Mutator(mutator); |
195 | ASSERT_TRUE(mutator == copy); |
196 | |
197 | SkRRect rrect = SkRRect::MakeEmpty(); |
198 | Mutator mutator2 = Mutator(rrect); |
199 | Mutator copy2 = Mutator(mutator2); |
200 | ASSERT_TRUE(mutator2 == copy2); |
201 | |
202 | SkPath path; |
203 | Mutator mutator3 = Mutator(path); |
204 | Mutator copy3 = Mutator(mutator3); |
205 | ASSERT_TRUE(mutator3 == copy3); |
206 | |
207 | SkMatrix matrix; |
208 | matrix.setIdentity(); |
209 | Mutator mutator4 = Mutator(matrix); |
210 | Mutator copy4 = Mutator(mutator4); |
211 | ASSERT_TRUE(mutator4 == copy4); |
212 | |
213 | int alpha = 240; |
214 | Mutator mutator5 = Mutator(alpha); |
215 | Mutator copy5 = Mutator(mutator5); |
216 | ASSERT_TRUE(mutator5 == copy5); |
217 | } |
218 | |
219 | TEST(Mutator, Equality) { |
220 | SkMatrix matrix; |
221 | matrix.setIdentity(); |
222 | Mutator mutator = Mutator(matrix); |
223 | Mutator otherMutator = Mutator(matrix); |
224 | ASSERT_TRUE(mutator == otherMutator); |
225 | |
226 | SkRect rect = SkRect::MakeEmpty(); |
227 | Mutator mutator2 = Mutator(rect); |
228 | Mutator otherMutator2 = Mutator(rect); |
229 | ASSERT_TRUE(mutator2 == otherMutator2); |
230 | |
231 | SkRRect rrect = SkRRect::MakeEmpty(); |
232 | Mutator mutator3 = Mutator(rrect); |
233 | Mutator otherMutator3 = Mutator(rrect); |
234 | ASSERT_TRUE(mutator3 == otherMutator3); |
235 | |
236 | SkPath path; |
237 | flutter::Mutator mutator4 = flutter::Mutator(path); |
238 | flutter::Mutator otherMutator4 = flutter::Mutator(path); |
239 | ASSERT_TRUE(mutator4 == otherMutator4); |
240 | ASSERT_FALSE(mutator2 == mutator); |
241 | int alpha = 240; |
242 | Mutator mutator5 = Mutator(alpha); |
243 | Mutator otherMutator5 = Mutator(alpha); |
244 | ASSERT_TRUE(mutator5 == otherMutator5); |
245 | } |
246 | |
247 | TEST(Mutator, UnEquality) { |
248 | SkRect rect = SkRect::MakeEmpty(); |
249 | Mutator mutator = Mutator(rect); |
250 | SkMatrix matrix; |
251 | matrix.setIdentity(); |
252 | Mutator notEqualMutator = Mutator(matrix); |
253 | ASSERT_TRUE(notEqualMutator != mutator); |
254 | |
255 | int alpha = 240; |
256 | int alpha2 = 241; |
257 | Mutator mutator2 = Mutator(alpha); |
258 | Mutator otherMutator2 = Mutator(alpha2); |
259 | ASSERT_TRUE(mutator2 != otherMutator2); |
260 | } |
261 | |
262 | } // namespace testing |
263 | } // namespace flutter |
264 | |