[dali_1.9.21] Merge branch 'devel/master'
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-Rect.cpp
1 /*
2  * Copyright (c) 2020 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 #include <iostream>
19
20 #include <stdlib.h>
21 #include <dali/public-api/dali-core.h>
22 #include <dali-test-suite-utils.h>
23
24 using namespace Dali;
25
26 void utc_dali_rect_startup(void)
27 {
28   test_return_value = TET_UNDEF;
29 }
30
31 void utc_dali_rect_cleanup(void)
32 {
33   test_return_value = TET_PASS;
34 }
35
36
37 // Positive test case for a method
38 int UtcDaliRectCons01(void)
39 {
40   TestApplication application;
41
42   Rect<float> rect;
43   DALI_TEST_EQUALS(rect.x, 0.0f, 0.001, TEST_LOCATION);
44   DALI_TEST_EQUALS(rect.y, 0.0f, 0.001, TEST_LOCATION);
45   DALI_TEST_EQUALS(rect.width, 0.0f, 0.001, TEST_LOCATION);
46   DALI_TEST_EQUALS(rect.height, 0.0f, 0.001, TEST_LOCATION);
47   END_TEST;
48 }
49
50 int UtcDaliRectCons02(void)
51 {
52   TestApplication application;
53
54   Rect<float> rect(10.0f, 20.0f, 400.0f, 200.0f);
55   DALI_TEST_EQUALS(rect.x, 10.0f, 0.001, TEST_LOCATION);
56   DALI_TEST_EQUALS(rect.y, 20.0f, 0.001, TEST_LOCATION);
57   DALI_TEST_EQUALS(rect.width, 400.0f, 0.001, TEST_LOCATION);
58   DALI_TEST_EQUALS(rect.height, 200.0f, 0.001, TEST_LOCATION);
59   END_TEST;
60 }
61
62 int UtcDaliRectCons03(void)
63 {
64   TestApplication application;
65
66   Rect<float> rect(10.0f, 20.0f, 400.0f, 200.0f);
67
68   Rect<float> r2(rect);
69
70   DALI_TEST_EQUALS(r2.x, 10.0f, 0.001, TEST_LOCATION);
71   DALI_TEST_EQUALS(r2.y, 20.0f, 0.001, TEST_LOCATION);
72   DALI_TEST_EQUALS(r2.width, 400.0f, 0.001, TEST_LOCATION);
73   DALI_TEST_EQUALS(r2.height, 200.0f, 0.001, TEST_LOCATION);
74   END_TEST;
75 }
76
77 int UtcDaliRectCons04(void)
78 {
79   TestApplication application;
80
81   Vector4 vec4(10.0f, 20.0f, 400.0f, 200.0f);
82
83   Rect<float> rect(vec4);
84
85   DALI_TEST_EQUALS(rect.x, 10.0f, 0.001, TEST_LOCATION);
86   DALI_TEST_EQUALS(rect.y, 20.0f, 0.001, TEST_LOCATION);
87   DALI_TEST_EQUALS(rect.width, 400.0f, 0.001, TEST_LOCATION);
88   DALI_TEST_EQUALS(rect.height, 200.0f, 0.001, TEST_LOCATION);
89   END_TEST;
90 }
91
92 int UtcDaliRectMoveConstructor(void)
93 {
94   TestApplication application;
95
96   Rect<float> rect(10.0f, 20.0f, 400.0f, 200.0f);
97
98   Rect<float> r2 = std::move( rect );
99
100   DALI_TEST_EQUALS(r2.x, 10.0f, 0.001, TEST_LOCATION);
101   DALI_TEST_EQUALS(r2.y, 20.0f, 0.001, TEST_LOCATION);
102   DALI_TEST_EQUALS(r2.width, 400.0f, 0.001, TEST_LOCATION);
103   DALI_TEST_EQUALS(r2.height, 200.0f, 0.001, TEST_LOCATION);
104   END_TEST;
105 }
106
107 int UtcDaliRectMoveAssignmentOperator(void)
108 {
109   TestApplication application;
110
111   Rect<float> rect(10.0f, 20.0f, 400.0f, 200.0f);
112
113   Rect<float> r2;
114   r2 = std::move( rect );
115
116   DALI_TEST_EQUALS(r2.x, 10.0f, 0.001, TEST_LOCATION);
117   DALI_TEST_EQUALS(r2.y, 20.0f, 0.001, TEST_LOCATION);
118   DALI_TEST_EQUALS(r2.width, 400.0f, 0.001, TEST_LOCATION);
119   DALI_TEST_EQUALS(r2.height, 200.0f, 0.001, TEST_LOCATION);
120   END_TEST;
121 }
122
123 int UtcDaliRectAssignmentOperatorRect(void)
124 {
125   TestApplication application;
126
127   Rect<float> rect(10.0f, 20.0f, 400.0f, 200.0f);
128
129   Rect<float> r2;
130   r2 = rect;
131
132   DALI_TEST_EQUALS(r2.x, 10.0f, 0.001, TEST_LOCATION);
133   DALI_TEST_EQUALS(r2.y, 20.0f, 0.001, TEST_LOCATION);
134   DALI_TEST_EQUALS(r2.width, 400.0f, 0.001, TEST_LOCATION);
135   DALI_TEST_EQUALS(r2.height, 200.0f, 0.001, TEST_LOCATION);
136   END_TEST;
137 }
138
139 int UtcDaliRectAssignmentOperatorVector4(void)
140 {
141   TestApplication application;
142
143   Vector4 vec4(10.0f, 20.0f, 400.0f, 200.0f);
144
145   Rect<float> rect;
146   rect = vec4;
147
148   DALI_TEST_EQUALS(rect.x, 10.0f, 0.001, TEST_LOCATION);
149   DALI_TEST_EQUALS(rect.y, 20.0f, 0.001, TEST_LOCATION);
150   DALI_TEST_EQUALS(rect.width, 400.0f, 0.001, TEST_LOCATION);
151   DALI_TEST_EQUALS(rect.height, 200.0f, 0.001, TEST_LOCATION);
152   END_TEST;
153 }
154
155 int UtcDaliRectSet(void)
156 {
157   TestApplication application;
158
159   Rect<float> rect(10.0f, 20.0f, 400.0f, 200.0f);
160
161   rect.Set(1.0f, 2.0f, 3.0f, 4.0f);
162
163   DALI_TEST_EQUALS(rect.x, 1.0f, 0.001, TEST_LOCATION);
164   DALI_TEST_EQUALS(rect.y, 2.0f, 0.001, TEST_LOCATION);
165   DALI_TEST_EQUALS(rect.width, 3.0f, 0.001, TEST_LOCATION);
166   DALI_TEST_EQUALS(rect.height, 4.0f, 0.001, TEST_LOCATION);
167   END_TEST;
168 }
169
170 int UtcDaliRectIsEmpty(void)
171 {
172   TestApplication application;
173
174   Rect<int>   ri;
175   Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
176   Rect<float> rf2;
177   Rect<float> rf3(10.0f, 20.0f, 0.0f, 200.0f);
178   Rect<float> rf4(10.0f, 20.0f, 400.0f, 0.0f);
179   Rect<double> rd(10.0, 20.0, 0.0, 200.0);
180   Rect<unsigned int> ru(0u, 0u, 4u, 0u);
181
182   DALI_TEST_CHECK(!rf.IsEmpty());
183   DALI_TEST_CHECK(rf2.IsEmpty());
184   DALI_TEST_CHECK(rf3.IsEmpty());
185   DALI_TEST_CHECK(rf4.IsEmpty());
186   DALI_TEST_CHECK(ri.IsEmpty());
187   DALI_TEST_CHECK(rd.IsEmpty());
188   DALI_TEST_CHECK(ru.IsEmpty());
189   END_TEST;
190 }
191
192 int UtcDaliRectLeft(void)
193 {
194   TestApplication application;
195
196   Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
197
198   DALI_TEST_EQUALS(rf.Left(), 10.0f, 0.001, TEST_LOCATION);
199   END_TEST;
200 }
201
202 int UtcDaliRectRight(void)
203 {
204   TestApplication application;
205
206   Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
207
208   DALI_TEST_EQUALS(rf.Right(), 410.0f, 0.001, TEST_LOCATION);
209   END_TEST;
210 }
211
212 int UtcDaliRectTop(void)
213 {
214   TestApplication application;
215
216   Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
217
218   DALI_TEST_EQUALS(rf.Top(), 20.0f, 0.001, TEST_LOCATION);
219   END_TEST;
220 }
221
222 int UtcDaliRectBottom(void)
223 {
224   TestApplication application;
225
226   Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
227
228   DALI_TEST_EQUALS(rf.Bottom(), 220.0f, 0.001, TEST_LOCATION);
229   END_TEST;
230 }
231
232
233 int UtcDaliRectArea(void)
234 {
235   TestApplication application;
236
237   Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
238
239   DALI_TEST_EQUALS(rf.Area(), 80000.0f, 0.001, TEST_LOCATION);
240   END_TEST;
241 }
242
243
244 int UtcDaliRectIntersects(void)
245 {
246   TestApplication application;
247
248   Rect<float> rf1( 10.0f,  20.0f, 200.0f, 200.0f);
249   Rect<float> rf2( 10.0f, 120.0f, 200.0f, 200.0f);
250   Rect<float> rf3( 10.0f, -80.0f, 200.0f, 200.0f);
251   Rect<float> rf4(110.0f,  20.0f, 200.0f, 200.0f);
252   Rect<float> rf5(-90.0f,  20.0f, 200.0f, 200.0f);
253   Rect<float> rf6(1000.0f, 1200.0f, 10.0f, 10.0f);
254
255   DALI_TEST_CHECK(rf1.Intersects(rf2));
256   DALI_TEST_CHECK(rf1.Intersects(rf3));
257   DALI_TEST_CHECK(rf1.Intersects(rf4));
258   DALI_TEST_CHECK(rf1.Intersects(rf5));
259   DALI_TEST_CHECK(!rf1.Intersects(rf6));
260   END_TEST;
261 }
262
263
264
265 int UtcDaliRectContains(void)
266 {
267   TestApplication application;
268
269   Rect<float> rf1( 10.0f,  20.0f, 200.0f, 200.0f);
270
271   Rect<float> rf2( 10.0f, 120.0f, 200.0f, 200.0f);
272   Rect<float> rf3( 10.0f, -80.0f, 200.0f, 200.0f);
273   Rect<float> rf4(110.0f,  20.0f, 200.0f, 200.0f);
274   Rect<float> rf5(-90.0f,  20.0f, 200.0f, 200.0f);
275   Rect<float> rf6(1000.0f, 1200.0f, 10.0f, 10.0f);
276
277   Rect<float> rf7( 50.0f,  70.0f, 50.0f,   50.0f);
278
279   Rect<float> rf8(  10.0f,  20.0f, 100.0f, 100.0f);
280   Rect<float> rf9( 110.0f,  20.0f, 100.0f, 100.0f);
281   Rect<float> rf10( 110.0f, 120.0f, 100.0f, 100.0f);
282   Rect<float> rf11(  10.0f, 120.0f, 100.0f, 100.0f);
283
284   DALI_TEST_CHECK(rf1.Contains(rf1));
285   DALI_TEST_CHECK(!rf1.Contains(rf2));
286   DALI_TEST_CHECK(!rf1.Contains(rf3));
287   DALI_TEST_CHECK(!rf1.Contains(rf4));
288   DALI_TEST_CHECK(!rf1.Contains(rf5));
289   DALI_TEST_CHECK(!rf1.Contains(rf6));
290
291   DALI_TEST_CHECK(rf1.Contains(rf7));
292
293   DALI_TEST_CHECK(rf1.Contains(rf8));
294   DALI_TEST_CHECK(rf1.Contains(rf9));
295   DALI_TEST_CHECK(rf1.Contains(rf10));
296   DALI_TEST_CHECK(rf1.Contains(rf11));
297   END_TEST;
298 }
299
300
301 int UtcDaliRectOperatorNotEquals(void)
302 {
303   TestApplication application;
304
305   Rect<float> rf1( 10.0f,  20.0f, 200.0f, 200.0f);
306   Rect<float> rf2( 10.0f, 120.0f, 200.0f, 200.0f);
307   Rect<float> rf3( 10.0f, -80.0f, 200.0f, 200.0f);
308   Rect<float> rf4(110.0f,  20.0f, 200.0f, 200.0f);
309   Rect<float> rf5(-90.0f,  20.0f, 200.0f, 200.0f);
310   Rect<float> rf6(1000.0f, 1200.0f, 10.0f, 10.0f);
311   Rect<float> rf7( 50.0f,  70.0f, 50.0f,   50.0f);
312   Rect<float> rf8(  10.0f,  20.0f, 100.0f, 100.0f);
313   Rect<float> rf9( 110.0f,  20.0f, 100.0f, 100.0f);
314   Rect<float> rf10( 110.0f, 120.0f, 100.0f, 100.0f);
315   Rect<float> rf11(  10.0f, 120.0f, 100.0f, 100.0f);
316
317   DALI_TEST_CHECK(rf1 != rf2);
318   DALI_TEST_CHECK(rf1 != rf3);
319   DALI_TEST_CHECK(rf1 != rf4);
320   DALI_TEST_CHECK(rf1 != rf5);
321   DALI_TEST_CHECK(rf1 != rf6);
322   DALI_TEST_CHECK(rf1 != rf7);
323   DALI_TEST_CHECK(rf1 != rf8);
324   DALI_TEST_CHECK(rf1 != rf9);
325   DALI_TEST_CHECK(rf1 != rf10);
326   DALI_TEST_CHECK(rf1 != rf11);
327   END_TEST;
328 }
329
330
331 int UtcDaliRectOperatorEquals(void)
332 {
333   TestApplication application;
334
335   Rect<float> rf1( 10.0f,  20.0f, 200.0f, 200.0f);
336   Rect<float> rf1p( 10.0f,  20.0f, 200.0f, 200.0f);
337
338   Rect<float> rf2(110.0f,  20.0f, 200.0f, 200.0f);
339   Rect<float> rf3( 10.0f, 120.0f, 200.0f, 200.0f);
340   Rect<float> rf4( 10.0f,  20.0f, 300.0f, 200.0f);
341   Rect<float> rf5( 10.0f,  20.0f, 200.0f, 500.0f);
342
343   Rect<float> rf6( 0.0f,  0.0f, 9.0f, 10.0f);
344
345   DALI_TEST_CHECK(rf1 == rf1p);
346   DALI_TEST_CHECK(rf1 == rf1);
347   DALI_TEST_CHECK(!(rf1 == rf2));
348   DALI_TEST_CHECK(!(rf1 == rf3));
349   DALI_TEST_CHECK(!(rf1 == rf4));
350   DALI_TEST_CHECK(!(rf1 == rf5));
351   DALI_TEST_CHECK(!(rf1 == rf6));
352
353
354   // integers
355   Rect<int> ri1( 10,  20, 200, 200 );
356   Rect<int> ri1p( 10,  20, 200, 200 );
357
358   DALI_TEST_CHECK(ri1 == ri1p);
359   END_TEST;
360 }
361
362 int UtcDaliRectOStreamOperatorP(void)
363 {
364   TestApplication application;
365   std::ostringstream oss;
366
367   Rect<int> rect( 1, 2, 10, 10 );
368
369   oss << rect;
370
371   std::string expectedOutput = "[1, 2, 10, 10]";
372
373   DALI_TEST_EQUALS( oss.str(), expectedOutput, TEST_LOCATION);
374   END_TEST;
375 }