2 * Copyright (c) 2020 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include <dali-test-suite-utils.h>
19 #include <dali/public-api/dali-core.h>
26 void utc_dali_rect_startup(void)
28 test_return_value = TET_UNDEF;
31 void utc_dali_rect_cleanup(void)
33 test_return_value = TET_PASS;
36 // Positive test case for a method
37 int UtcDaliRectCons01(void)
39 TestApplication application;
42 DALI_TEST_EQUALS(rect.x, 0.0f, 0.001, TEST_LOCATION);
43 DALI_TEST_EQUALS(rect.y, 0.0f, 0.001, TEST_LOCATION);
44 DALI_TEST_EQUALS(rect.width, 0.0f, 0.001, TEST_LOCATION);
45 DALI_TEST_EQUALS(rect.height, 0.0f, 0.001, TEST_LOCATION);
49 int UtcDaliRectCons02(void)
51 TestApplication application;
53 Rect<float> rect(10.0f, 20.0f, 400.0f, 200.0f);
54 DALI_TEST_EQUALS(rect.x, 10.0f, 0.001, TEST_LOCATION);
55 DALI_TEST_EQUALS(rect.y, 20.0f, 0.001, TEST_LOCATION);
56 DALI_TEST_EQUALS(rect.width, 400.0f, 0.001, TEST_LOCATION);
57 DALI_TEST_EQUALS(rect.height, 200.0f, 0.001, TEST_LOCATION);
61 int UtcDaliRectCons03(void)
63 TestApplication application;
65 Rect<float> rect(10.0f, 20.0f, 400.0f, 200.0f);
69 DALI_TEST_EQUALS(r2.x, 10.0f, 0.001, TEST_LOCATION);
70 DALI_TEST_EQUALS(r2.y, 20.0f, 0.001, TEST_LOCATION);
71 DALI_TEST_EQUALS(r2.width, 400.0f, 0.001, TEST_LOCATION);
72 DALI_TEST_EQUALS(r2.height, 200.0f, 0.001, TEST_LOCATION);
76 int UtcDaliRectCons04(void)
78 TestApplication application;
80 Vector4 vec4(10.0f, 20.0f, 400.0f, 200.0f);
82 Rect<float> rect(vec4);
84 DALI_TEST_EQUALS(rect.x, 10.0f, 0.001, TEST_LOCATION);
85 DALI_TEST_EQUALS(rect.y, 20.0f, 0.001, TEST_LOCATION);
86 DALI_TEST_EQUALS(rect.width, 400.0f, 0.001, TEST_LOCATION);
87 DALI_TEST_EQUALS(rect.height, 200.0f, 0.001, TEST_LOCATION);
91 int UtcDaliRectMoveConstructor(void)
93 TestApplication application;
95 Rect<float> rect(10.0f, 20.0f, 400.0f, 200.0f);
97 Rect<float> r2 = std::move(rect);
99 DALI_TEST_EQUALS(r2.x, 10.0f, 0.001, TEST_LOCATION);
100 DALI_TEST_EQUALS(r2.y, 20.0f, 0.001, TEST_LOCATION);
101 DALI_TEST_EQUALS(r2.width, 400.0f, 0.001, TEST_LOCATION);
102 DALI_TEST_EQUALS(r2.height, 200.0f, 0.001, TEST_LOCATION);
106 int UtcDaliRectMoveAssignmentOperator(void)
108 TestApplication application;
110 Rect<float> rect(10.0f, 20.0f, 400.0f, 200.0f);
113 r2 = std::move(rect);
115 DALI_TEST_EQUALS(r2.x, 10.0f, 0.001, TEST_LOCATION);
116 DALI_TEST_EQUALS(r2.y, 20.0f, 0.001, TEST_LOCATION);
117 DALI_TEST_EQUALS(r2.width, 400.0f, 0.001, TEST_LOCATION);
118 DALI_TEST_EQUALS(r2.height, 200.0f, 0.001, TEST_LOCATION);
122 int UtcDaliRectAssignmentOperatorRect(void)
124 TestApplication application;
126 Rect<float> rect(10.0f, 20.0f, 400.0f, 200.0f);
131 DALI_TEST_EQUALS(r2.x, 10.0f, 0.001, TEST_LOCATION);
132 DALI_TEST_EQUALS(r2.y, 20.0f, 0.001, TEST_LOCATION);
133 DALI_TEST_EQUALS(r2.width, 400.0f, 0.001, TEST_LOCATION);
134 DALI_TEST_EQUALS(r2.height, 200.0f, 0.001, TEST_LOCATION);
138 int UtcDaliRectAssignmentOperatorVector4(void)
140 TestApplication application;
142 Vector4 vec4(10.0f, 20.0f, 400.0f, 200.0f);
147 DALI_TEST_EQUALS(rect.x, 10.0f, 0.001, TEST_LOCATION);
148 DALI_TEST_EQUALS(rect.y, 20.0f, 0.001, TEST_LOCATION);
149 DALI_TEST_EQUALS(rect.width, 400.0f, 0.001, TEST_LOCATION);
150 DALI_TEST_EQUALS(rect.height, 200.0f, 0.001, TEST_LOCATION);
154 int UtcDaliRectSet(void)
156 TestApplication application;
158 Rect<float> rect(10.0f, 20.0f, 400.0f, 200.0f);
160 rect.Set(1.0f, 2.0f, 3.0f, 4.0f);
162 DALI_TEST_EQUALS(rect.x, 1.0f, 0.001, TEST_LOCATION);
163 DALI_TEST_EQUALS(rect.y, 2.0f, 0.001, TEST_LOCATION);
164 DALI_TEST_EQUALS(rect.width, 3.0f, 0.001, TEST_LOCATION);
165 DALI_TEST_EQUALS(rect.height, 4.0f, 0.001, TEST_LOCATION);
169 int UtcDaliRectIsEmpty(void)
171 TestApplication application;
174 Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
176 Rect<float> rf3(10.0f, 20.0f, 0.0f, 200.0f);
177 Rect<float> rf4(10.0f, 20.0f, 400.0f, 0.0f);
178 Rect<double> rd(10.0, 20.0, 0.0, 200.0);
179 Rect<unsigned int> ru(0u, 0u, 4u, 0u);
181 DALI_TEST_CHECK(!rf.IsEmpty());
182 DALI_TEST_CHECK(rf2.IsEmpty());
183 DALI_TEST_CHECK(rf3.IsEmpty());
184 DALI_TEST_CHECK(rf4.IsEmpty());
185 DALI_TEST_CHECK(ri.IsEmpty());
186 DALI_TEST_CHECK(rd.IsEmpty());
187 DALI_TEST_CHECK(ru.IsEmpty());
191 int UtcDaliRectLeft(void)
193 TestApplication application;
195 Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
197 DALI_TEST_EQUALS(rf.Left(), 10.0f, 0.001, TEST_LOCATION);
201 int UtcDaliRectRight(void)
203 TestApplication application;
205 Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
207 DALI_TEST_EQUALS(rf.Right(), 410.0f, 0.001, TEST_LOCATION);
211 int UtcDaliRectTop(void)
213 TestApplication application;
215 Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
217 DALI_TEST_EQUALS(rf.Top(), 20.0f, 0.001, TEST_LOCATION);
221 int UtcDaliRectBottom(void)
223 TestApplication application;
225 Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
227 DALI_TEST_EQUALS(rf.Bottom(), 220.0f, 0.001, TEST_LOCATION);
231 int UtcDaliRectArea(void)
233 TestApplication application;
235 Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
237 DALI_TEST_EQUALS(rf.Area(), 80000.0f, 0.001, TEST_LOCATION);
241 int UtcDaliRectIntersects(void)
243 TestApplication application;
245 Rect<float> rf1(10.0f, 20.0f, 200.0f, 200.0f);
246 Rect<float> rf2(10.0f, 120.0f, 200.0f, 200.0f);
247 Rect<float> rf3(10.0f, -80.0f, 200.0f, 200.0f);
248 Rect<float> rf4(110.0f, 20.0f, 200.0f, 200.0f);
249 Rect<float> rf5(-90.0f, 20.0f, 200.0f, 200.0f);
250 Rect<float> rf6(1000.0f, 1200.0f, 10.0f, 10.0f);
252 DALI_TEST_CHECK(rf1.Intersects(rf2));
253 DALI_TEST_CHECK(rf1.Intersects(rf3));
254 DALI_TEST_CHECK(rf1.Intersects(rf4));
255 DALI_TEST_CHECK(rf1.Intersects(rf5));
256 DALI_TEST_CHECK(!rf1.Intersects(rf6));
260 int UtcDaliRectContains(void)
262 TestApplication application;
264 Rect<float> rf1(10.0f, 20.0f, 200.0f, 200.0f);
266 Rect<float> rf2(10.0f, 120.0f, 200.0f, 200.0f);
267 Rect<float> rf3(10.0f, -80.0f, 200.0f, 200.0f);
268 Rect<float> rf4(110.0f, 20.0f, 200.0f, 200.0f);
269 Rect<float> rf5(-90.0f, 20.0f, 200.0f, 200.0f);
270 Rect<float> rf6(1000.0f, 1200.0f, 10.0f, 10.0f);
272 Rect<float> rf7(50.0f, 70.0f, 50.0f, 50.0f);
274 Rect<float> rf8(10.0f, 20.0f, 100.0f, 100.0f);
275 Rect<float> rf9(110.0f, 20.0f, 100.0f, 100.0f);
276 Rect<float> rf10(110.0f, 120.0f, 100.0f, 100.0f);
277 Rect<float> rf11(10.0f, 120.0f, 100.0f, 100.0f);
279 DALI_TEST_CHECK(rf1.Contains(rf1));
280 DALI_TEST_CHECK(!rf1.Contains(rf2));
281 DALI_TEST_CHECK(!rf1.Contains(rf3));
282 DALI_TEST_CHECK(!rf1.Contains(rf4));
283 DALI_TEST_CHECK(!rf1.Contains(rf5));
284 DALI_TEST_CHECK(!rf1.Contains(rf6));
286 DALI_TEST_CHECK(rf1.Contains(rf7));
288 DALI_TEST_CHECK(rf1.Contains(rf8));
289 DALI_TEST_CHECK(rf1.Contains(rf9));
290 DALI_TEST_CHECK(rf1.Contains(rf10));
291 DALI_TEST_CHECK(rf1.Contains(rf11));
295 int UtcDaliRectOperatorNotEquals(void)
297 TestApplication application;
299 Rect<float> rf1(10.0f, 20.0f, 200.0f, 200.0f);
300 Rect<float> rf2(10.0f, 120.0f, 200.0f, 200.0f);
301 Rect<float> rf3(10.0f, -80.0f, 200.0f, 200.0f);
302 Rect<float> rf4(110.0f, 20.0f, 200.0f, 200.0f);
303 Rect<float> rf5(-90.0f, 20.0f, 200.0f, 200.0f);
304 Rect<float> rf6(1000.0f, 1200.0f, 10.0f, 10.0f);
305 Rect<float> rf7(50.0f, 70.0f, 50.0f, 50.0f);
306 Rect<float> rf8(10.0f, 20.0f, 100.0f, 100.0f);
307 Rect<float> rf9(110.0f, 20.0f, 100.0f, 100.0f);
308 Rect<float> rf10(110.0f, 120.0f, 100.0f, 100.0f);
309 Rect<float> rf11(10.0f, 120.0f, 100.0f, 100.0f);
311 DALI_TEST_CHECK(rf1 != rf2);
312 DALI_TEST_CHECK(rf1 != rf3);
313 DALI_TEST_CHECK(rf1 != rf4);
314 DALI_TEST_CHECK(rf1 != rf5);
315 DALI_TEST_CHECK(rf1 != rf6);
316 DALI_TEST_CHECK(rf1 != rf7);
317 DALI_TEST_CHECK(rf1 != rf8);
318 DALI_TEST_CHECK(rf1 != rf9);
319 DALI_TEST_CHECK(rf1 != rf10);
320 DALI_TEST_CHECK(rf1 != rf11);
324 int UtcDaliRectOperatorEquals(void)
326 TestApplication application;
328 Rect<float> rf1(10.0f, 20.0f, 200.0f, 200.0f);
329 Rect<float> rf1p(10.0f, 20.0f, 200.0f, 200.0f);
331 Rect<float> rf2(110.0f, 20.0f, 200.0f, 200.0f);
332 Rect<float> rf3(10.0f, 120.0f, 200.0f, 200.0f);
333 Rect<float> rf4(10.0f, 20.0f, 300.0f, 200.0f);
334 Rect<float> rf5(10.0f, 20.0f, 200.0f, 500.0f);
336 Rect<float> rf6(0.0f, 0.0f, 9.0f, 10.0f);
338 DALI_TEST_CHECK(rf1 == rf1p);
339 DALI_TEST_CHECK(rf1 == rf1);
340 DALI_TEST_CHECK(!(rf1 == rf2));
341 DALI_TEST_CHECK(!(rf1 == rf3));
342 DALI_TEST_CHECK(!(rf1 == rf4));
343 DALI_TEST_CHECK(!(rf1 == rf5));
344 DALI_TEST_CHECK(!(rf1 == rf6));
347 Rect<int> ri1(10, 20, 200, 200);
348 Rect<int> ri1p(10, 20, 200, 200);
350 DALI_TEST_CHECK(ri1 == ri1p);
354 int UtcDaliRectOStreamOperatorP(void)
356 TestApplication application;
357 std::ostringstream oss;
359 Rect<int> rect(1, 2, 10, 10);
363 std::string expectedOutput = "[1, 2, 10, 10]";
365 DALI_TEST_EQUALS(oss.str(), expectedOutput, TEST_LOCATION);