Merge "Add method to get ObjectRegistry from Core" into devel/master
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-Vector3.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 #include <sstream>
20 #include <cmath> // isfinite
21
22 #include <stdlib.h>
23 #include <dali/public-api/dali-core.h>
24 #include <dali-test-suite-utils.h>
25
26 using namespace Dali;
27
28 void utc_dali_vector3_startup(void)
29 {
30   test_return_value = TET_UNDEF;
31 }
32
33 void utc_dali_vector3_cleanup(void)
34 {
35   test_return_value = TET_PASS;
36 }
37
38 int UtcDaliVector3Constructor01P(void)
39 {
40   TestApplication application;
41   Vector3 va;
42   DALI_TEST_EQUALS(va.x, 0.0f, 0.001f, TEST_LOCATION);
43   DALI_TEST_EQUALS(va.y, 0.0f, 0.001f, TEST_LOCATION);
44   DALI_TEST_EQUALS(va.z, 0.0f, 0.001f, TEST_LOCATION);
45   END_TEST;
46 }
47
48 int UtcDaliVector3Constructor02P(void)
49 {
50   TestApplication application;
51   Vector3 va(1.f, 1.f, 1.f);
52   DALI_TEST_EQUALS(va.x, 1.0f, 0.001f, TEST_LOCATION);
53   DALI_TEST_EQUALS(va.y, 1.0f, 0.001f, TEST_LOCATION);
54   DALI_TEST_EQUALS(va.z, 1.0f, 0.001f, TEST_LOCATION);
55   END_TEST;
56 }
57
58 int UtcDaliVector3Constructor03P(void)
59 {
60   TestApplication application;
61   float array [] = {1.f, 1.f, 1.f};
62   Vector3 va(array);
63   DALI_TEST_EQUALS(va.x, 1.0f, 0.001f, TEST_LOCATION);
64   DALI_TEST_EQUALS(va.y, 1.0f, 0.001f, TEST_LOCATION);
65   DALI_TEST_EQUALS(va.z, 1.0f, 0.001f, TEST_LOCATION);
66   END_TEST;
67 }
68
69 int UtcDaliVector3Constructor04P(void)
70 {
71   TestApplication application;
72   Vector2 vec2(1.f,1.f);
73   Vector3 va(vec2);
74   DALI_TEST_EQUALS(va.x, 1.0f, 0.001f, TEST_LOCATION);
75   DALI_TEST_EQUALS(va.y, 1.0f, 0.001f, TEST_LOCATION);
76   DALI_TEST_EQUALS(va.z, 0.0f, 0.001f, TEST_LOCATION);
77   END_TEST;
78 }
79
80 int UtcDaliVector3Constructor05P(void)
81 {
82   TestApplication application;
83   Vector4 vec4(1.f, 1.f, 1.f, 1.f);
84   Vector3 va(vec4);
85   DALI_TEST_EQUALS(va.x, 1.0f, 0.001f, TEST_LOCATION);
86   DALI_TEST_EQUALS(va.y, 1.0f, 0.001f, TEST_LOCATION);
87   DALI_TEST_EQUALS(va.z, 1.0f, 0.001f, TEST_LOCATION);
88   END_TEST;
89 }
90
91 int UtcDaliVector3CopyConstructor(void)
92 {
93   TestApplication application;
94   Vector3 vec0( 10.f, 20.f, 30.0f );
95   Vector3 vec1( vec0 );
96   DALI_TEST_EQUALS(vec1.x, 10.0f, 0.001, TEST_LOCATION);
97   DALI_TEST_EQUALS(vec1.y, 20.0f, 0.001, TEST_LOCATION);
98   DALI_TEST_EQUALS(vec1.z, 30.0f, 0.001, TEST_LOCATION);
99   END_TEST;
100 }
101
102 int UtcDaliVector3MoveConstructor(void)
103 {
104   TestApplication application;
105   Vector3 vec0( 10.f, 20.f, 30.0f );
106   Vector3 vec1 = std::move( vec0 );
107   DALI_TEST_EQUALS(vec1.x, 10.0f, 0.001, TEST_LOCATION);
108   DALI_TEST_EQUALS(vec1.y, 20.0f, 0.001, TEST_LOCATION);
109   DALI_TEST_EQUALS(vec1.z, 30.0f, 0.001, TEST_LOCATION);
110
111   END_TEST;
112 }
113
114 int UtcDaliVector3CopyAssignment(void)
115 {
116   TestApplication application;
117   Vector3 vec0( 10.f, 20.f, 30.0f );
118   Vector3 vec1;
119   vec1 = vec0;
120   DALI_TEST_EQUALS(vec1.x, 10.0f, 0.001, TEST_LOCATION);
121   DALI_TEST_EQUALS(vec1.y, 20.0f, 0.001, TEST_LOCATION);
122   DALI_TEST_EQUALS(vec1.z, 30.0f, 0.001, TEST_LOCATION);
123
124   END_TEST;
125 }
126
127 int UtcDaliVector3MoveAssignment(void)
128 {
129   TestApplication application;
130   Vector3 vec0( 10.f, 20.f, 30.0f );
131   Vector3 vec1;
132   vec1 = std::move( vec0 );
133   DALI_TEST_EQUALS(vec1.x, 10.0f, 0.001, TEST_LOCATION);
134   DALI_TEST_EQUALS(vec1.y, 20.0f, 0.001, TEST_LOCATION);
135   DALI_TEST_EQUALS(vec1.z, 30.0f, 0.001, TEST_LOCATION);
136
137   END_TEST;
138 }
139
140 int UtcDaliVector3Assign01P(void)
141 {
142   TestApplication application;
143   Vector3 v0;
144   const float array[] = { 1.0f, 2.0f, 3.0f };
145   v0 = (const float*)array;
146
147   DALI_TEST_EQUALS(v0.x, 1.0f, 0.001f, TEST_LOCATION);
148   DALI_TEST_EQUALS(v0.y, 2.0f, 0.001f, TEST_LOCATION);
149   DALI_TEST_EQUALS(v0.z, 3.0f, 0.001f, TEST_LOCATION);
150   END_TEST;
151 }
152
153 int UtcDaliVector3Assign02P(void)
154 {
155   TestApplication application;
156   Vector2 vec2_q(1.0f, 2.0f);
157   Vector3 vec3a;
158   vec3a = vec2_q;
159
160   DALI_TEST_EQUALS(vec3a.x, 1.0f, 0.001f, TEST_LOCATION);
161   DALI_TEST_EQUALS(vec3a.y, 2.0f, 0.001f, TEST_LOCATION);
162   DALI_TEST_EQUALS(vec3a.z, 0.0f, 0.001f, TEST_LOCATION);
163   END_TEST;
164 }
165
166 int UtcDaliVector3Assign03P(void)
167 {
168   TestApplication application;
169   Vector4 vec4_q(4.0f, 3.0f, 2.0f, 1.0f);
170   Vector3 vec3b;
171   vec3b = vec4_q;
172
173   DALI_TEST_EQUALS(vec3b.x, 4.0f, 0.001f, TEST_LOCATION);
174   DALI_TEST_EQUALS(vec3b.y, 3.0f, 0.001f, TEST_LOCATION);
175   DALI_TEST_EQUALS(vec3b.z, 2.0f, 0.001f, TEST_LOCATION);
176   END_TEST;
177 }
178
179 int UtcDaliVector3Add01P(void)
180 {
181   TestApplication application;
182   Vector3 v0(1.0f, 2.0f, 3.0f);
183   Vector3 v1(10.0f, 20.0f, 30.0f);
184   Vector3 r0(11.0f, 22.0f, 33.0f);
185
186   Vector3 v2 = v0+v1;
187   DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
188
189   END_TEST;
190 }
191
192 int UtcDaliVector3Add02P(void)
193 {
194   TestApplication application;
195   Vector3 v0(1.0f, 2.0f, 3.0f);
196   Vector3 v1(10.0f, 20.0f, 30.0f);
197   Vector3 r0(11.0f, 22.0f, 33.0f);
198
199   v0 += v1;
200   DALI_TEST_EQUALS(v0, r0, TEST_LOCATION);
201
202   END_TEST;
203 }
204
205 int UtcDaliVector3Subtract01P(void)
206 {
207   TestApplication application;
208   Vector3 v0(11.0f, 22.0f, 33.0f);
209   Vector3 v1(10.0f, 20.0f, 30.0f);
210   Vector3 r0(1.0f, 2.0f, 3.0f);
211
212   Vector3 v2 = v0-v1;
213   DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
214
215   END_TEST;
216 }
217
218 int UtcDaliVector3Subtract02P(void)
219 {
220   TestApplication application;
221   Vector3 v0(11.0f, 22.0f, 33.0f);
222   Vector3 v1(10.0f, 20.0f, 30.0f);
223   Vector3 r0(1.0f, 2.0f, 3.0f);
224
225   v0 -= v1;
226   DALI_TEST_EQUALS(v0, r0, TEST_LOCATION);
227   END_TEST;
228 }
229
230 int UtcDaliVector3Multiply01P(void)
231 {
232   TestApplication application;
233   Vector3 v0(2.0f, 3.0f, 4.0f);
234   Vector3 v1(10.0f, 20.0f,  30.0f);
235   Vector3 r0(20.0f, 60.0f, 120.0f);
236
237   Vector3 v2 = v0 * v1;
238   DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
239   END_TEST;
240 }
241
242 int UtcDaliVector3Multiply02P(void)
243 {
244   TestApplication application;
245   Vector3 v0(2.0f, 3.0f, 4.0f);
246   Vector3 r0(20.0f, 30.0f, 40.0f);
247   Vector3 v2 = v0 * 10.f;
248   DALI_TEST_EQUALS(v2, r0, 0.001, TEST_LOCATION);
249   END_TEST;
250 }
251
252 int UtcDaliVector3Multiply03P(void)
253 {
254   TestApplication application;
255   Vector3 v0(2.0f, 3.0f, 4.0f);
256   Vector3 v1(10.0f, 20.0f,  30.0f);
257   Vector3 r0(20.0f, 60.0f, 120.0f);
258   v0 *= v1;
259   DALI_TEST_EQUALS(v0, r0, 0.001, TEST_LOCATION);
260   END_TEST;
261 }
262
263 int UtcDaliVector3Multiply04P(void)
264 {
265   TestApplication application;
266   Vector3 v0(2.0f, 3.0f, 4.0f);
267   Vector3 r0(20.0f, 30.0f, 40.0f);
268   v0 *= 10.f;
269   DALI_TEST_EQUALS(v0, r0, TEST_LOCATION);
270   END_TEST;
271 }
272
273 int UtcDaliVector3Multiply05P(void)
274 {
275   TestApplication application;
276   Vector3 vec3(Vector3::YAXIS);
277   Quaternion rotation(Radian(Math::PI_2), Vector3::ZAXIS);
278   Vector3 result(-Vector3::XAXIS);
279   vec3 *= rotation;
280   DALI_TEST_EQUALS( vec3, result, 0.001, TEST_LOCATION );
281   END_TEST;
282 }
283
284 int UtcDaliVector3Divide01P(void)
285 {
286   TestApplication application;
287   Vector3 v0(1.0f, 1.0f, 1.0f);
288   Vector3 v1(2.0f, 3.0f, 5.0f);
289   Vector3 v2(4.0f, 9.0f, 25.0f);
290
291   DALI_TEST_EQUALS( v0/v0, v0, TEST_LOCATION);
292   DALI_TEST_EQUALS( v1/v0, v1, TEST_LOCATION);
293   DALI_TEST_EQUALS( v1/v1, v0, TEST_LOCATION);
294   DALI_TEST_EQUALS( v2/v1, v1, TEST_LOCATION);
295
296   END_TEST;
297 }
298
299 int UtcDaliVector3Divide02P(void)
300 {
301   TestApplication application;
302   Vector3 v0(3.0f, 6.0f, 9.0f);
303   Vector3 v1(1.0f, 2.0f, 3.0f);
304   Vector3 r(3.0f, 3.0f, 3.0f);
305   Vector3 v2 = v0 / v1;
306   DALI_TEST_EQUALS(v2, r, TEST_LOCATION);
307   END_TEST;
308 }
309
310 int UtcDaliVector3Divide03P(void)
311 {
312   TestApplication application;
313   Vector3 v0(3.0f, 6.0f, 9.0f);
314   Vector3 v1(1.0f, 2.0f, 3.0f);
315   Vector3 v2 = v0 / 3.f;
316   DALI_TEST_EQUALS(v2, v1, TEST_LOCATION);
317   END_TEST;
318 }
319
320 int UtcDaliVector3Divide04P(void)
321 {
322   TestApplication application;
323   Vector3 v0(3.0f, 6.0f, 9.0f);
324   Vector3 v1(1.0f, 1.0f, 1.0f);
325   Vector3 v4(v0);
326   v4 /= v0;
327   DALI_TEST_EQUALS(v4, v1, TEST_LOCATION);
328   END_TEST;
329 }
330
331 int UtcDaliVector3Divide05P(void)
332 {
333   TestApplication application;
334   Vector3 v0(3.0f, 6.0f, 9.0f);
335   Vector3 v1(1.0f, 2.0f, 3.0f);
336   Vector3 v4(v0);
337   v4 /= 3.f;
338   DALI_TEST_EQUALS(v4, v1, TEST_LOCATION);
339   END_TEST;
340 }
341
342
343 int UtcDaliVector3NegateP(void)
344 {
345   TestApplication application;
346   Vector3 v1(10.0f, 20.0f, 30.f);
347   Vector3 r0(-10.0f, -20.0f, -30.f);
348
349   Vector3 v2 = -v1;
350   DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
351   END_TEST;
352 }
353
354 int UtcDaliVector3EqualsP(void)
355 {
356   TestApplication application;
357   Vector3 v0(1.0f, 2.0f,  3.0f);
358   Vector3 v1(1.0f, 2.0f,  3.0f);
359
360   DALI_TEST_CHECK(v0 == v1);
361   END_TEST;
362 }
363
364 int UtcDaliVector3NotEqualsP(void)
365 {
366   TestApplication application;
367   Vector3 v0(1.0f, 2.0f,  3.0f);
368   Vector3 v1(1.0f, 2.0f,  3.0f);
369   Vector3 v2 = Vector3(0.0f, 2.0f, 3.0f);
370   DALI_TEST_CHECK(v0 != v2);
371
372   v2 = Vector3(1.0f, 0.0f, 3.0f);
373   DALI_TEST_CHECK(v0 != v2);
374
375   v2 = Vector3(1.0f, 2.0f, 0.0f);
376   DALI_TEST_CHECK(v0 != v2);
377
378   v2 = Vector3(11.0f, 22.0f, 33.0f);
379   DALI_TEST_CHECK(v0 != v2);
380   END_TEST;
381 }
382
383 int UtcDaliVector3OperatorSubscriptP(void)
384 {
385   TestApplication application;
386   Vector3 testVector(1.0f, 2.0f, 3.0f);
387
388   // read array subscripts
389   DALI_TEST_EQUALS( testVector[0], 1.0f, TEST_LOCATION );
390   DALI_TEST_EQUALS( testVector[1], 2.0f, TEST_LOCATION );
391   DALI_TEST_EQUALS( testVector[2], 3.0f, TEST_LOCATION );
392
393   // write array subscripts/read struct memebers
394   testVector[0] = 4.0f;
395   testVector[1] = 5.0f;
396   testVector[2] = 6.0f;
397
398   DALI_TEST_EQUALS( testVector.x, 4.0f, TEST_LOCATION );
399   DALI_TEST_EQUALS( testVector.y, 5.0f, TEST_LOCATION );
400   DALI_TEST_EQUALS( testVector.z, 6.0f, TEST_LOCATION );
401
402   // write struct members/read array subscripts
403   testVector.x = 7.0f;
404   testVector.y = 8.0f;
405   testVector.z = 9.0f;
406
407   DALI_TEST_EQUALS( testVector[0], 7.0f, TEST_LOCATION );
408   DALI_TEST_EQUALS( testVector[1], 8.0f, TEST_LOCATION );
409   DALI_TEST_EQUALS( testVector[2], 9.0f, TEST_LOCATION );
410   END_TEST;
411 }
412
413 int UtcDaliVector3ConstOperatorSubscriptP(void)
414 {
415   TestApplication application;
416   Vector3 testVector(1.0f, 2.0f, 3.0f);
417
418   // write struct members/read array subscripts
419   const Vector3 testVector2(1.0f, 2.0f, 3.0f);
420   const float& x = testVector2[0];
421   const float& y = testVector2[1];
422   const float& z ( testVector2[2] );
423
424   DALI_TEST_EQUALS( x, 1.0f, TEST_LOCATION );
425   DALI_TEST_EQUALS( y, 2.0f, TEST_LOCATION );
426   DALI_TEST_EQUALS( z, 3.0f, TEST_LOCATION );
427
428   try
429   {
430     float& w = testVector[4];
431     (void)w; // Suppress unused variable warning
432     tet_result(TET_FAIL);
433   }
434   catch (Dali::DaliException& e)
435   {
436     DALI_TEST_PRINT_ASSERT( e );
437     DALI_TEST_ASSERT( e, "index < 3", TEST_LOCATION );
438   }
439
440   try
441   {
442     const float& w = testVector2[4];
443     (void)w; // Suppress unused variable warning
444     tet_result(TET_FAIL);
445   }
446   catch (Dali::DaliException& e)
447   {
448     DALI_TEST_PRINT_ASSERT( e );
449     DALI_TEST_ASSERT(e, "index < 3", TEST_LOCATION);
450   }
451
452   END_TEST;
453 }
454
455 int UtcDaliVector3DotP(void)
456 {
457   TestApplication application;
458   DALI_TEST_EQUALS(Vector3::XAXIS.Dot(Vector3::YAXIS), 0.0f, TEST_LOCATION);
459   DALI_TEST_EQUALS(Vector3::XAXIS.Dot(Vector3::ZAXIS), 0.0f, TEST_LOCATION);
460   DALI_TEST_EQUALS(Vector3::XAXIS.Dot(Vector3::XAXIS), 1.0f, TEST_LOCATION);
461   DALI_TEST_EQUALS(Vector3::YAXIS.Dot(Vector3::YAXIS), 1.0f, TEST_LOCATION);
462   DALI_TEST_EQUALS(Vector3::ZAXIS.Dot(Vector3::ZAXIS), 1.0f, TEST_LOCATION);
463
464   DALI_TEST_EQUALS(Vector3(1.0f, 0.0f, 0.0f).Dot(Vector3(1.0f, 0.0f, 0.0f)), 1.0f, TEST_LOCATION);
465
466   for (float x = 0; x<6.0f; x+=1.0f)
467   {
468     Vector3 v0(cosf(x), sinf(x), 0.0f);
469     Vector3 v1(sinf(x), -cosf(x), 0.0f);
470     DALI_TEST_EQUALS(v0.Dot(v1), 0.0f, 0.0001f, TEST_LOCATION);
471     DALI_TEST_EQUALS(v0.Dot(v0), 1.0f, 0.0001f, TEST_LOCATION);
472
473     v0 = Vector3(cosf(x), 0.0f, sinf(x));
474     v1 = Vector3(sinf(x), 0.0f, -cosf(x));
475     DALI_TEST_EQUALS(v0.Dot(v0), 1.0f, 0.0001f, TEST_LOCATION);
476   }
477
478   Vector3 v0 = Vector3(12.0f, 7.0f, 9.0f);
479   v0.Normalize();
480
481   Vector3 v1 = v0 * 2.0f;
482   DALI_TEST_EQUALS(v0.Dot(v1), 2.0f, 0.001f, TEST_LOCATION);
483   END_TEST;
484 }
485
486 int UtcDaliVector3CrossP(void)
487 {
488   TestApplication application;
489   DALI_TEST_EQUALS(Vector3::XAXIS.Cross(Vector3::YAXIS), Vector3::ZAXIS, 0.0001f, TEST_LOCATION);
490   DALI_TEST_EQUALS(Vector3::YAXIS.Cross(Vector3::ZAXIS), Vector3::XAXIS, 0.0001f, TEST_LOCATION);
491   DALI_TEST_EQUALS(Vector3::ZAXIS.Cross(Vector3::XAXIS), Vector3::YAXIS, 0.0001f, TEST_LOCATION);
492
493   DALI_TEST_EQUALS(Vector3::XAXIS.Cross(Vector3::ZAXIS), -Vector3::YAXIS, 0.0001f, TEST_LOCATION);
494   DALI_TEST_EQUALS(Vector3::YAXIS.Cross(Vector3::XAXIS), -Vector3::ZAXIS, 0.0001f, TEST_LOCATION);
495   DALI_TEST_EQUALS(Vector3::ZAXIS.Cross(Vector3::YAXIS), -Vector3::XAXIS, 0.0001f, TEST_LOCATION);
496
497   Vector3 v0(2.0f, 3.0f, 4.0f);
498   Vector3 v1(10.0f, 20.0f, 30.0f);
499   Vector3 result(   (v0.y * v1.z) - (v0.z * v1.y),
500                     (v0.z * v1.x) - (v0.x * v1.z),
501                     (v0.x * v1.y) - (v0.y * v1.x) );
502
503
504   DALI_TEST_EQUALS(v0.Cross(v1), result, 0.001f, TEST_LOCATION);
505   END_TEST;
506 }
507
508 int UtcDaliVector3LengthP(void)
509 {
510   TestApplication application;
511   Vector3 v(1.0f, 2.0f, 3.0f);
512   DALI_TEST_EQUALS(v.Length(), sqrtf(v.x*v.x + v.y*v.y + v.z*v.z), 0.001f, TEST_LOCATION);
513
514   Vector3 v1(0.0f, 0.0f, 0.0f);
515   DALI_TEST_EQUALS(v1.Length(), 0.0f, TEST_LOCATION);
516   END_TEST;
517 }
518
519 int UtcDaliVector3LengthSquaredP(void)
520 {
521   TestApplication application;
522   Vector3 v(1.0f, 2.0f, 3.0f);
523   DALI_TEST_EQUALS(v.LengthSquared(), v.x*v.x + v.y*v.y + v.z*v.z, 0.001f, TEST_LOCATION);
524
525   Vector3 v1(0.0f, 0.0f, 0.0f);
526   DALI_TEST_EQUALS(v1.LengthSquared(), 0.0f, TEST_LOCATION);
527   END_TEST;
528 }
529
530 int UtcDaliVector3NormalizeP(void)
531 {
532   TestApplication application;
533   for (float f=0.0f; f<6.0f; f+=1.0f)
534   {
535     Vector3 v(cosf(f)*10.0f, cosf(f+1.0f)*10.0f, cosf(f+2.0f)*10.0f);
536     v.Normalize();
537     DALI_TEST_EQUALS(v.LengthSquared(), 1.0f, 0.001f, TEST_LOCATION);
538   }
539
540   Vector3 v(0.0f, 0.0f, 0.0f);
541   v.Normalize();
542   DALI_TEST_EQUALS(v.LengthSquared(), 0.0f, 0.00001f, TEST_LOCATION);
543   END_TEST;
544 }
545
546 int UtcDaliVector3ClampVector3P(void)
547 {
548   TestApplication application;
549
550   Vector3 v0(2.0f, 0.8f, 0.0f);
551   Vector3 v1(-1.0f, 2.0f, 10.0f);
552   Vector3 v2(10.0f, 5.0f, 0.0f);
553   Vector3 v3(8.0f, 10.0f, 5.0f);
554   Vector3 v4(4.9f, 5.1f, 10.0f);
555   Vector3 min(1.0f, 4.0f, 1.5f);
556   Vector3 max(9.0f, 6.0f, 8.0f);
557
558   v0.Clamp( min, max );
559   v1.Clamp( min, max );
560   v2.Clamp( min, max );
561   v3.Clamp( min, max );
562   v4.Clamp( min, max );
563
564   DALI_TEST_EQUALS( v0, Vector3(2.0f, 4.0f, 1.5f), 0.01f, TEST_LOCATION );
565   DALI_TEST_EQUALS( v1, Vector3(1.0f, 4.0f, 8.0f), 0.01f, TEST_LOCATION );
566   DALI_TEST_EQUALS( v2, Vector3(9.0f, 5.0f, 1.5f), 0.01f, TEST_LOCATION );
567   DALI_TEST_EQUALS( v3, Vector3(8.0f, 6.0f, 5.0f), 0.01f, TEST_LOCATION );
568   DALI_TEST_EQUALS( v4, Vector3(4.9f, 5.1f, 8.0f), 0.01f, TEST_LOCATION );
569   END_TEST;
570 }
571
572 int UtcDaliVector3AsFloatP(void)
573 {
574   TestApplication application;
575   float values[] = {0.0f,  1.0f,  2.0f};
576   Vector3 v0(values);
577
578   for (int i=0;i<3;++i)
579   {
580     DALI_TEST_EQUALS(v0.AsFloat()[i], values[i], TEST_LOCATION);
581   }
582
583   END_TEST;
584 }
585
586 int UtcDaliVector3ConstAsFloatP(void)
587 {
588   TestApplication application;
589   float values[] = {0.0f,  1.0f,  2.0f};
590   Vector3 v0(values);
591
592   const Vector3 v1(values);
593   for (int i=0;i<3;++i)
594   {
595     DALI_TEST_EQUALS(v1.AsFloat()[i], values[i], TEST_LOCATION);
596   }
597   END_TEST;
598 }
599
600 int UtcDaliVector3ConstAsVectorXYP(void)
601 {
602   TestApplication application;
603   float values[] = {0.0f,  1.0f,  2.0f};
604   const Vector3 v0(values);
605   DALI_TEST_EQUALS(v0.GetVectorXY().x, values[0], TEST_LOCATION);
606   DALI_TEST_EQUALS(v0.GetVectorXY().y, values[1], TEST_LOCATION);
607   END_TEST;
608 }
609
610 int UtcDaliVector3AsVectorXYP(void)
611 {
612   TestApplication application;
613   float values[] = {0.0f,  1.0f,  2.0f};
614   Vector3 v0(values);
615
616   DALI_TEST_EQUALS(v0.GetVectorXY().x, values[0], TEST_LOCATION);
617   DALI_TEST_EQUALS(v0.GetVectorXY().y, values[1], TEST_LOCATION);
618   END_TEST;
619 }
620
621 int UtcDaliVector3ConstAsVectorXZP(void)
622 {
623   TestApplication application;
624   float values[] = {0.0f,  1.0f,  2.0f};
625   const Vector3 v0(values);
626
627   DALI_TEST_EQUALS(v0.GetVectorYZ().x, values[1], TEST_LOCATION);
628   DALI_TEST_EQUALS(v0.GetVectorYZ().y, values[2], TEST_LOCATION);
629   END_TEST;
630 }
631
632 int UtcDaliVector3AsVectorXZP(void)
633 {
634   TestApplication application;
635   float values[] = {0.0f,  1.0f,  2.0f};
636   Vector3 v0(values);
637
638   DALI_TEST_EQUALS(v0.GetVectorYZ().x, values[1], TEST_LOCATION);
639   DALI_TEST_EQUALS(v0.GetVectorYZ().y, values[2], TEST_LOCATION);
640   END_TEST;
641 }
642
643 int UtcDaliVector3OStreamOperatorP(void)
644 {
645   TestApplication application;
646   std::ostringstream oss;
647
648   Vector3 vector(1, 2, 3);
649
650   oss << vector;
651
652   std::string expectedOutput = "[1, 2, 3]";
653
654   DALI_TEST_EQUALS( oss.str(), expectedOutput, TEST_LOCATION);
655   END_TEST;
656 }
657
658 int UtcDaliVector3MinP(void)
659 {
660   TestApplication application;
661   Vector3 v0(2.0f, 2.0f, 1.0f);
662   Vector3 v1(1.0f, 1.0f, 2.0f);
663
664   DALI_TEST_EQUALS(Min(v0, v1), Vector3(1.0f, 1.0f, 1.0f), 0.01f, TEST_LOCATION);
665   END_TEST;
666 }
667
668 int UtcDaliVector3MaxP(void)
669 {
670   TestApplication application;
671   Vector3 v0(2.0f, 1.0f, 3.0f);
672   Vector3 v1(1.0f, 2.0f, 3.0f);
673
674   DALI_TEST_EQUALS(Max(v0, v1), Vector3(2.0f, 2.0f, 3.0f), 0.01f, TEST_LOCATION);
675   END_TEST;
676 }
677
678 int UtcDaliVector3ClampP(void)
679 {
680   TestApplication application;
681   Vector3 v0( 2.0f, 1.0f, 0.0f );
682   Vector3 v1( -1.0f, 2.0f, 1.0f );
683
684   DALI_TEST_EQUALS( Clamp( v0, 0.9f, 1.1f ), Vector3(1.1f, 1.0f, 0.9f), 0.01f, TEST_LOCATION );
685   DALI_TEST_EQUALS( Clamp( v1, 1.0f, 1.0f ), Vector3(1.0f, 1.0f, 1.0f), 0.01f, TEST_LOCATION );
686   END_TEST;
687 }
688
689 int UtcDaliVector3ConstantsP(void)
690 {
691   TestApplication application;
692   Vector3 va = Vector3::ZERO;
693   Vector3 vb = Vector3::ONE;
694   Vector3 vc = Vector3::XAXIS;
695
696   DALI_TEST_EQUALS(va.x, 0.0f, 0.001f, TEST_LOCATION);
697   DALI_TEST_EQUALS(va.y, 0.0f, 0.001f, TEST_LOCATION);
698   DALI_TEST_EQUALS(va.z, 0.0f, 0.001f, TEST_LOCATION);
699
700   DALI_TEST_EQUALS(vb.x, 1.0f, 0.001f, TEST_LOCATION);
701   DALI_TEST_EQUALS(vb.y, 1.0f, 0.001f, TEST_LOCATION);
702   DALI_TEST_EQUALS(vb.z, 1.0f, 0.001f, TEST_LOCATION);
703
704   DALI_TEST_EQUALS(vc.x, 1.0f, 0.001f, TEST_LOCATION);
705   DALI_TEST_EQUALS(vc.y, 0.0f, 0.001f, TEST_LOCATION);
706   DALI_TEST_EQUALS(vc.z, 0.0f, 0.001f, TEST_LOCATION);
707   END_TEST;
708 }
709