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