[dali_1.9.14] 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 UtcDaliRectAssignmentOperatorRect(void)
93 {
94   TestApplication application;
95
96   Rect<float> rect(10.0f, 20.0f, 400.0f, 200.0f);
97
98   Rect<float> r2;
99   r2 = rect;
100
101   DALI_TEST_EQUALS(r2.x, 10.0f, 0.001, TEST_LOCATION);
102   DALI_TEST_EQUALS(r2.y, 20.0f, 0.001, TEST_LOCATION);
103   DALI_TEST_EQUALS(r2.width, 400.0f, 0.001, TEST_LOCATION);
104   DALI_TEST_EQUALS(r2.height, 200.0f, 0.001, TEST_LOCATION);
105   END_TEST;
106 }
107
108 int UtcDaliRectAssignmentOperatorVector4(void)
109 {
110   TestApplication application;
111
112   Vector4 vec4(10.0f, 20.0f, 400.0f, 200.0f);
113
114   Rect<float> rect;
115   rect = vec4;
116
117   DALI_TEST_EQUALS(rect.x, 10.0f, 0.001, TEST_LOCATION);
118   DALI_TEST_EQUALS(rect.y, 20.0f, 0.001, TEST_LOCATION);
119   DALI_TEST_EQUALS(rect.width, 400.0f, 0.001, TEST_LOCATION);
120   DALI_TEST_EQUALS(rect.height, 200.0f, 0.001, TEST_LOCATION);
121   END_TEST;
122 }
123
124 int UtcDaliRectSet(void)
125 {
126   TestApplication application;
127
128   Rect<float> rect(10.0f, 20.0f, 400.0f, 200.0f);
129
130   rect.Set(1.0f, 2.0f, 3.0f, 4.0f);
131
132   DALI_TEST_EQUALS(rect.x, 1.0f, 0.001, TEST_LOCATION);
133   DALI_TEST_EQUALS(rect.y, 2.0f, 0.001, TEST_LOCATION);
134   DALI_TEST_EQUALS(rect.width, 3.0f, 0.001, TEST_LOCATION);
135   DALI_TEST_EQUALS(rect.height, 4.0f, 0.001, TEST_LOCATION);
136   END_TEST;
137 }
138
139 int UtcDaliRectIsEmpty(void)
140 {
141   TestApplication application;
142
143   Rect<int>   ri;
144   Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
145   Rect<float> rf2;
146   Rect<float> rf3(10.0f, 20.0f, 0.0f, 200.0f);
147   Rect<float> rf4(10.0f, 20.0f, 400.0f, 0.0f);
148   Rect<double> rd(10.0, 20.0, 0.0, 200.0);
149   Rect<unsigned int> ru(0u, 0u, 4u, 0u);
150
151   DALI_TEST_CHECK(!rf.IsEmpty());
152   DALI_TEST_CHECK(rf2.IsEmpty());
153   DALI_TEST_CHECK(rf3.IsEmpty());
154   DALI_TEST_CHECK(rf4.IsEmpty());
155   DALI_TEST_CHECK(ri.IsEmpty());
156   DALI_TEST_CHECK(rd.IsEmpty());
157   DALI_TEST_CHECK(ru.IsEmpty());
158   END_TEST;
159 }
160
161 int UtcDaliRectLeft(void)
162 {
163   TestApplication application;
164
165   Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
166
167   DALI_TEST_EQUALS(rf.Left(), 10.0f, 0.001, TEST_LOCATION);
168   END_TEST;
169 }
170
171 int UtcDaliRectRight(void)
172 {
173   TestApplication application;
174
175   Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
176
177   DALI_TEST_EQUALS(rf.Right(), 410.0f, 0.001, TEST_LOCATION);
178   END_TEST;
179 }
180
181 int UtcDaliRectTop(void)
182 {
183   TestApplication application;
184
185   Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
186
187   DALI_TEST_EQUALS(rf.Top(), 20.0f, 0.001, TEST_LOCATION);
188   END_TEST;
189 }
190
191 int UtcDaliRectBottom(void)
192 {
193   TestApplication application;
194
195   Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
196
197   DALI_TEST_EQUALS(rf.Bottom(), 220.0f, 0.001, TEST_LOCATION);
198   END_TEST;
199 }
200
201
202 int UtcDaliRectArea(void)
203 {
204   TestApplication application;
205
206   Rect<float> rf(10.0f, 20.0f, 400.0f, 200.0f);
207
208   DALI_TEST_EQUALS(rf.Area(), 80000.0f, 0.001, TEST_LOCATION);
209   END_TEST;
210 }
211
212
213 int UtcDaliRectIntersects(void)
214 {
215   TestApplication application;
216
217   Rect<float> rf1( 10.0f,  20.0f, 200.0f, 200.0f);
218   Rect<float> rf2( 10.0f, 120.0f, 200.0f, 200.0f);
219   Rect<float> rf3( 10.0f, -80.0f, 200.0f, 200.0f);
220   Rect<float> rf4(110.0f,  20.0f, 200.0f, 200.0f);
221   Rect<float> rf5(-90.0f,  20.0f, 200.0f, 200.0f);
222   Rect<float> rf6(1000.0f, 1200.0f, 10.0f, 10.0f);
223
224   DALI_TEST_CHECK(rf1.Intersects(rf2));
225   DALI_TEST_CHECK(rf1.Intersects(rf3));
226   DALI_TEST_CHECK(rf1.Intersects(rf4));
227   DALI_TEST_CHECK(rf1.Intersects(rf5));
228   DALI_TEST_CHECK(!rf1.Intersects(rf6));
229   END_TEST;
230 }
231
232
233
234 int UtcDaliRectContains(void)
235 {
236   TestApplication application;
237
238   Rect<float> rf1( 10.0f,  20.0f, 200.0f, 200.0f);
239
240   Rect<float> rf2( 10.0f, 120.0f, 200.0f, 200.0f);
241   Rect<float> rf3( 10.0f, -80.0f, 200.0f, 200.0f);
242   Rect<float> rf4(110.0f,  20.0f, 200.0f, 200.0f);
243   Rect<float> rf5(-90.0f,  20.0f, 200.0f, 200.0f);
244   Rect<float> rf6(1000.0f, 1200.0f, 10.0f, 10.0f);
245
246   Rect<float> rf7( 50.0f,  70.0f, 50.0f,   50.0f);
247
248   Rect<float> rf8(  10.0f,  20.0f, 100.0f, 100.0f);
249   Rect<float> rf9( 110.0f,  20.0f, 100.0f, 100.0f);
250   Rect<float> rf10( 110.0f, 120.0f, 100.0f, 100.0f);
251   Rect<float> rf11(  10.0f, 120.0f, 100.0f, 100.0f);
252
253   DALI_TEST_CHECK(rf1.Contains(rf1));
254   DALI_TEST_CHECK(!rf1.Contains(rf2));
255   DALI_TEST_CHECK(!rf1.Contains(rf3));
256   DALI_TEST_CHECK(!rf1.Contains(rf4));
257   DALI_TEST_CHECK(!rf1.Contains(rf5));
258   DALI_TEST_CHECK(!rf1.Contains(rf6));
259
260   DALI_TEST_CHECK(rf1.Contains(rf7));
261
262   DALI_TEST_CHECK(rf1.Contains(rf8));
263   DALI_TEST_CHECK(rf1.Contains(rf9));
264   DALI_TEST_CHECK(rf1.Contains(rf10));
265   DALI_TEST_CHECK(rf1.Contains(rf11));
266   END_TEST;
267 }
268
269
270 int UtcDaliRectOperatorNotEquals(void)
271 {
272   TestApplication application;
273
274   Rect<float> rf1( 10.0f,  20.0f, 200.0f, 200.0f);
275   Rect<float> rf2( 10.0f, 120.0f, 200.0f, 200.0f);
276   Rect<float> rf3( 10.0f, -80.0f, 200.0f, 200.0f);
277   Rect<float> rf4(110.0f,  20.0f, 200.0f, 200.0f);
278   Rect<float> rf5(-90.0f,  20.0f, 200.0f, 200.0f);
279   Rect<float> rf6(1000.0f, 1200.0f, 10.0f, 10.0f);
280   Rect<float> rf7( 50.0f,  70.0f, 50.0f,   50.0f);
281   Rect<float> rf8(  10.0f,  20.0f, 100.0f, 100.0f);
282   Rect<float> rf9( 110.0f,  20.0f, 100.0f, 100.0f);
283   Rect<float> rf10( 110.0f, 120.0f, 100.0f, 100.0f);
284   Rect<float> rf11(  10.0f, 120.0f, 100.0f, 100.0f);
285
286   DALI_TEST_CHECK(rf1 != rf2);
287   DALI_TEST_CHECK(rf1 != rf3);
288   DALI_TEST_CHECK(rf1 != rf4);
289   DALI_TEST_CHECK(rf1 != rf5);
290   DALI_TEST_CHECK(rf1 != rf6);
291   DALI_TEST_CHECK(rf1 != rf7);
292   DALI_TEST_CHECK(rf1 != rf8);
293   DALI_TEST_CHECK(rf1 != rf9);
294   DALI_TEST_CHECK(rf1 != rf10);
295   DALI_TEST_CHECK(rf1 != rf11);
296   END_TEST;
297 }
298
299
300 int UtcDaliRectOperatorEquals(void)
301 {
302   TestApplication application;
303
304   Rect<float> rf1( 10.0f,  20.0f, 200.0f, 200.0f);
305   Rect<float> rf1p( 10.0f,  20.0f, 200.0f, 200.0f);
306
307   Rect<float> rf2(110.0f,  20.0f, 200.0f, 200.0f);
308   Rect<float> rf3( 10.0f, 120.0f, 200.0f, 200.0f);
309   Rect<float> rf4( 10.0f,  20.0f, 300.0f, 200.0f);
310   Rect<float> rf5( 10.0f,  20.0f, 200.0f, 500.0f);
311
312   Rect<float> rf6( 0.0f,  0.0f, 9.0f, 10.0f);
313
314   DALI_TEST_CHECK(rf1 == rf1p);
315   DALI_TEST_CHECK(rf1 == rf1);
316   DALI_TEST_CHECK(!(rf1 == rf2));
317   DALI_TEST_CHECK(!(rf1 == rf3));
318   DALI_TEST_CHECK(!(rf1 == rf4));
319   DALI_TEST_CHECK(!(rf1 == rf5));
320   DALI_TEST_CHECK(!(rf1 == rf6));
321
322
323   // integers
324   Rect<int> ri1( 10,  20, 200, 200 );
325   Rect<int> ri1p( 10,  20, 200, 200 );
326
327   DALI_TEST_CHECK(ri1 == ri1p);
328   END_TEST;
329 }
330
331 int UtcDaliRectOStreamOperatorP(void)
332 {
333   TestApplication application;
334   std::ostringstream oss;
335
336   Rect<int> rect( 1, 2, 10, 10 );
337
338   oss << rect;
339
340   std::string expectedOutput = "[1, 2, 10, 10]";
341
342   DALI_TEST_EQUALS( oss.str(), expectedOutput, TEST_LOCATION);
343   END_TEST;
344 }