2 * Copyright (c) 2014 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.
22 #include <dali/public-api/dali-core.h>
23 #include <dali-test-suite-utils.h>
27 void utc_dali_vector4_startup(void)
29 test_return_value = TET_UNDEF;
32 void utc_dali_vector4_cleanup(void)
34 test_return_value = TET_PASS;
37 int UtcDaliVector4Constructor01P(void)
40 DALI_TEST_EQUALS(v.x, 0.0f, TEST_LOCATION);
41 DALI_TEST_EQUALS(v.y, 0.0f, TEST_LOCATION);
42 DALI_TEST_EQUALS(v.z, 0.0f, TEST_LOCATION);
43 DALI_TEST_EQUALS(v.w, 0.0f, TEST_LOCATION);
47 int UtcDaliVector4Constructor02P(void)
49 Vector4 v(1.0f, 2.0f, 3.0f, 4.f);
50 DALI_TEST_EQUALS(v.x, 1.0f, TEST_LOCATION);
51 DALI_TEST_EQUALS(v.y, 2.0f, TEST_LOCATION);
52 DALI_TEST_EQUALS(v.z, 3.0f, TEST_LOCATION);
53 DALI_TEST_EQUALS(v.w, 4.0f, TEST_LOCATION);
57 int UtcDaliVector4Constructor03P(void)
59 float f [] = {1.0f, 2.0f, 3.0f, 4.f};
61 DALI_TEST_EQUALS(v.x, 1.0f, TEST_LOCATION);
62 DALI_TEST_EQUALS(v.y, 2.0f, TEST_LOCATION);
63 DALI_TEST_EQUALS(v.z, 3.0f, TEST_LOCATION);
64 DALI_TEST_EQUALS(v.w, 4.0f, TEST_LOCATION);
68 int UtcDaliVector4Constructor04P(void)
70 Vector2 vec2(1.f, 2.f);
72 DALI_TEST_EQUALS(v.x, 1.0f, TEST_LOCATION);
73 DALI_TEST_EQUALS(v.y, 2.0f, TEST_LOCATION);
74 DALI_TEST_EQUALS(v.z, 0.0f, TEST_LOCATION);
75 DALI_TEST_EQUALS(v.w, 0.0f, TEST_LOCATION);
79 int UtcDaliVector4Constructor05P(void)
81 Vector3 vec3(1.f, 2.f, 3.f);
83 DALI_TEST_EQUALS(v.x, 1.0f, TEST_LOCATION);
84 DALI_TEST_EQUALS(v.y, 2.0f, TEST_LOCATION);
85 DALI_TEST_EQUALS(v.z, 3.0f, TEST_LOCATION);
86 DALI_TEST_EQUALS(v.w, 0.0f, TEST_LOCATION);
90 int UtcDaliVector4Assign01P(void)
93 const float array[] = { 1.0f, 2.0f, 3.0f, 4.f };
94 v0 = (const float*)array;
96 DALI_TEST_EQUALS(v0.x, 1.0f, 0.001f, TEST_LOCATION);
97 DALI_TEST_EQUALS(v0.y, 2.0f, 0.001f, TEST_LOCATION);
98 DALI_TEST_EQUALS(v0.z, 3.0f, 0.001f, TEST_LOCATION);
99 DALI_TEST_EQUALS(v0.w, 4.0f, 0.001f, TEST_LOCATION);
103 int UtcDaliVector4Assign02P(void)
105 Vector2 vec2(1.f, 2.f);
108 DALI_TEST_EQUALS(v0.x, 1.0f, 0.001f, TEST_LOCATION);
109 DALI_TEST_EQUALS(v0.y, 2.0f, 0.001f, TEST_LOCATION);
110 DALI_TEST_EQUALS(v0.z, 0.0f, 0.001f, TEST_LOCATION);
111 DALI_TEST_EQUALS(v0.z, 0.0f, 0.001f, TEST_LOCATION);
115 int UtcDaliVector4Assign03P(void)
117 Vector3 vec3(1.f, 2.f, 3.f);
120 DALI_TEST_EQUALS(v0.x, 1.0f, 0.001f, TEST_LOCATION);
121 DALI_TEST_EQUALS(v0.y, 2.0f, 0.001f, TEST_LOCATION);
122 DALI_TEST_EQUALS(v0.z, 3.0f, 0.001f, TEST_LOCATION);
123 DALI_TEST_EQUALS(v0.w, 0.0f, 0.001f, TEST_LOCATION);
127 int UtcDaliVector4Add01P(void)
129 Vector4 v0(1.0f, 2.0f, 3.0f, 4.0f);
130 Vector4 v1(10.0f, 20.0f, 30.0f, 40.0f);
131 Vector4 r0(11.0f, 22.0f, 33.0f, 44.0f);
134 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
139 int UtcDaliVector4Add02P(void)
141 Vector4 v0(1.0f, 2.0f, 3.0f, 4.0f);
142 Vector4 v1(10.0f, 20.0f, 30.0f, 40.0f);
143 Vector4 r0(11.0f, 22.0f, 33.0f, 44.0f);
146 DALI_TEST_EQUALS(v0, r0, TEST_LOCATION);
150 int UtcDaliVector4Subtract01P(void)
152 Vector4 v0(11.0f, 22.0f, 33.0f, 44.0f);
153 Vector4 v1(10.0f, 20.0f, 30.0f, 40.0f);
154 Vector4 r0(1.0f, 2.0f, 3.0f, 4.0f);
157 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
161 int UtcDaliVector4Subtract02P(void)
163 Vector4 v0(11.0f, 22.0f, 33.0f, 44.0f);
164 Vector4 v1(10.0f, 20.0f, 30.0f, 40.0f);
165 Vector4 r0(1.0f, 2.0f, 3.0f, 4.0f);
168 DALI_TEST_EQUALS(v0, r0, TEST_LOCATION);
172 int UtcDaliVector4Multiply01P(void)
174 Vector4 v0(2.0f, 3.0f, 4.0f, 5.0f);
175 Vector4 v1(10.0f, 20.0f, 30.0f, 40.0f);
176 Vector4 r0(20.0f, 60.0f, 120.0f, 200.0f);
178 Vector4 v2 = v0 * v1;
179 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
184 int UtcDaliVector4Multiply02P(void)
186 Vector4 v0(2.0f, 4.0f, 8.0f, 16.0f);
187 const Vector4 r0(20.0f, 40.0f, 80.0f, 160.0f);
188 Vector4 v2 = v0 * 10.0f;
189 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
193 int UtcDaliVector4Multiply03P(void)
195 Vector4 v0(2.0f, 3.0f, 4.0f, 5.0f);
196 Vector4 v1(10.0f, 20.0f, 30.0f, 40.0f);
197 Vector4 r0(20.0f, 60.0f, 120.0f, 200.0f);
200 DALI_TEST_EQUALS(v0, r0, TEST_LOCATION);
204 int UtcDaliVector4Multiply04P(void)
206 Vector4 v0(2.0f, 4.0f, 8.0f, 16.0f);
207 const Vector4 r0(20.0f, 40.0f, 80.0f, 160.0f);
210 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
214 int UtcDaliVector4Divide01P(void)
216 Vector4 v0(1.0f, 1.0f, 1.0f, 1.0f);
217 Vector4 v1(2.0f, 3.0f, 5.0f, 7.0f);
218 Vector4 v2(4.0f, 9.0f, 25.0f, 49.0f);
220 DALI_TEST_EQUALS( v0/v0, v0, TEST_LOCATION);
221 DALI_TEST_EQUALS( v1/v0, v1, TEST_LOCATION);
222 DALI_TEST_EQUALS( v1/v1, v0, TEST_LOCATION);
223 DALI_TEST_EQUALS( v2/v1, v1, TEST_LOCATION);
229 int UtcDaliVector4Divide02P(void)
231 Vector4 v0(2.0f, 4.0f, 8.0f, 16.0f);
232 const Vector4 r0(20.0f, 40.0f, 80.0f, 160.0f);
233 const Vector4 r1(10.0f, 20.0f, 40.0f, 80.0f);
234 const Vector4 r2( 1.0f, 2.0f, 4.0f, 8.0f);
235 const Vector4 r3(2.0f, 4.0f, 8.0f, 16.0f);
237 Vector4 v2 = r0 / 10.0f;
238 DALI_TEST_EQUALS(v2, r3, TEST_LOCATION);
243 int UtcDaliVector4Divide03P(void)
245 Vector4 v0(1.0f, 1.0f, 1.0f, 1.0f);
246 Vector4 v1(2.0f, 3.0f, 5.0f, 7.0f);
247 Vector4 v2(4.0f, 9.0f, 25.0f, 49.0f);
251 DALI_TEST_EQUALS(v4, v0, TEST_LOCATION);
255 DALI_TEST_EQUALS(v5, v1, TEST_LOCATION);
259 DALI_TEST_EQUALS(v6, v0, TEST_LOCATION);
262 DALI_TEST_EQUALS(v2, v1, TEST_LOCATION);
267 int UtcDaliVector4Divide04P(void)
269 Vector4 v0(2.0f, 4.0f, 8.0f, 16.0f);
270 const Vector4 r0(20.0f, 40.0f, 80.0f, 160.0f);
271 const Vector4 r1(10.0f, 20.0f, 40.0f, 80.0f);
272 const Vector4 r2( 1.0f, 2.0f, 4.0f, 8.0f);
273 const Vector4 r3(2.0f, 4.0f, 8.0f, 16.0f);
277 DALI_TEST_EQUALS(v2, r3, TEST_LOCATION);
282 int UtcDaliVector4NegateP(void)
284 TestApplication application;
285 Vector4 v1(10.0f, 20.0f, 30.f, 40.f);
286 Vector4 r0(-10.0f, -20.0f, -30.f, -40.f);
289 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
293 int UtcDaliVector4EqualsP(void)
295 Vector4 v0(1.0f, 2.0f, 3.0f, 4.0f);
296 Vector4 v1(1.0f, 2.0f, 3.0f, 4.0f);
298 DALI_TEST_CHECK(v0 == v1);
302 int UtcDaliVector4NotEqualsP(void)
304 Vector4 v0(1.0f, 2.0f, 3.0f, 4.0f);
305 Vector4 v1(1.0f, 2.0f, 3.0f, 4.0f);
307 Vector4 v2 = Vector4(0.0f, 2.0f, 3.0f, 4.0f);
308 DALI_TEST_CHECK(v0 != v2);
310 v2 = Vector4(1.0f, 0.0f, 3.0f, 4.0f);
311 DALI_TEST_CHECK(v0 != v2);
313 v2 = Vector4(1.0f, 2.0f, 0.0f, 4.0f);
314 DALI_TEST_CHECK(v0 != v2);
316 v2 = Vector4(1.0f, 2.0f, 3.0f, 0.0f);
317 DALI_TEST_CHECK(v0 != v2);
321 int UtcDaliVector4OperatorSubscriptP(void)
323 Vector4 testVector(1.0f, 2.0f, 3.0f, 4.0f);
325 // read array subscripts
326 DALI_TEST_EQUALS( testVector[0], 1.0f, TEST_LOCATION );
327 DALI_TEST_EQUALS( testVector[1], 2.0f, TEST_LOCATION );
328 DALI_TEST_EQUALS( testVector[2], 3.0f, TEST_LOCATION );
329 DALI_TEST_EQUALS( testVector[3], 4.0f, TEST_LOCATION );
331 // write array subscripts/read struct memebers
332 testVector[0] = 5.0f;
333 testVector[1] = 6.0f;
334 testVector[2] = 7.0f;
335 testVector[3] = 8.0f;
337 DALI_TEST_EQUALS( testVector.x, 5.0f, TEST_LOCATION );
338 DALI_TEST_EQUALS( testVector.y, 6.0f, TEST_LOCATION );
339 DALI_TEST_EQUALS( testVector.z, 7.0f, TEST_LOCATION );
340 DALI_TEST_EQUALS( testVector.w, 8.0f, TEST_LOCATION );
342 // write struct members/read array subscripts
344 testVector.y = 10.0f;
345 testVector.z = 11.0f;
346 testVector.w = 12.0f;
348 DALI_TEST_EQUALS( testVector[0], 9.0f, TEST_LOCATION );
349 DALI_TEST_EQUALS( testVector[1], 10.0f, TEST_LOCATION );
350 DALI_TEST_EQUALS( testVector[2], 11.0f, TEST_LOCATION );
351 DALI_TEST_EQUALS( testVector[3], 12.0f, TEST_LOCATION );
357 int UtcDaliVector4ConstOperatorSubscriptP(void)
359 Vector4 testVector(1.0f, 2.0f, 3.0f, 4.0f);
361 // write struct members/read array subscripts
362 const Vector4 testVector2(1.0f, 2.0f, 3.0f, 4.0f);
363 const float& x = testVector2[0];
364 const float& y = testVector2[1];
365 const float& z ( testVector2[2] );
366 const float& w ( testVector2[3] );
368 DALI_TEST_EQUALS( x, 1.0f, TEST_LOCATION );
369 DALI_TEST_EQUALS( y, 2.0f, TEST_LOCATION );
370 DALI_TEST_EQUALS( z, 3.0f, TEST_LOCATION );
371 DALI_TEST_EQUALS( w, 4.0f, TEST_LOCATION );
375 float& w = testVector[4];
376 tet_result(TET_FAIL);
378 catch (Dali::DaliException& e)
380 DALI_TEST_PRINT_ASSERT( e );
381 DALI_TEST_ASSERT( e, "index < 4", TEST_LOCATION );
386 const float& w = testVector2[4];
387 tet_result(TET_FAIL);
389 catch (Dali::DaliException& e)
391 DALI_TEST_PRINT_ASSERT( e );
392 DALI_TEST_ASSERT( e, "index < 4", TEST_LOCATION );
397 int UtcDaliVector4Dot01P(void)
399 DALI_TEST_EQUALS(Vector4::XAXIS.Dot(Vector4::YAXIS), 0.0f, TEST_LOCATION);
400 DALI_TEST_EQUALS(Vector4::XAXIS.Dot(Vector4::ZAXIS), 0.0f, TEST_LOCATION);
401 DALI_TEST_EQUALS(Vector4::XAXIS.Dot(Vector4::XAXIS), 1.0f, TEST_LOCATION);
402 DALI_TEST_EQUALS(Vector4::YAXIS.Dot(Vector4::YAXIS), 1.0f, TEST_LOCATION);
403 DALI_TEST_EQUALS(Vector4::ZAXIS.Dot(Vector4::ZAXIS), 1.0f, TEST_LOCATION);
405 DALI_TEST_EQUALS(Vector4(1.0f, 0.0f, 0.0f, 1.0f).Dot(Vector4(1.0f, 0.0f, 0.0f, 1.0f)), 1.0f, TEST_LOCATION);
407 // Test v0 . v0 and v0 . v1 (v1 is always 90 degrees out of phase with v0)
408 for (float x = 0; x<6.0f; x+=1.0f)
410 // vectors rotating in the XY plane.
411 Vector4 v0(cosf(x), sinf(x), 0.0f, 1.0f);
412 Vector4 v1(sinf(x), -cosf(x), 0.0f, 1.0f);
413 DALI_TEST_EQUALS(v0.Dot(v1), 0.0f, 0.0001f, TEST_LOCATION);
414 DALI_TEST_EQUALS(v0.Dot(v0), 1.0f, 0.0001f, TEST_LOCATION);
416 // vectors rotating in the XZ plane.
417 v0 = Vector4(cosf(x), 0.0f, sinf(x), 0.0f);
418 v1 = Vector4(sinf(x), 0.0f, -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);
423 Vector4 v0 = Vector4(12.0f, 7.0f, 9.0f, 14.0f);
426 Vector4 v1 = v0 * 2.0f;
427 DALI_TEST_EQUALS(v0.Dot(v1), 2.0f, 0.001f, TEST_LOCATION);
431 int UtcDaliVector4DotVector302P(void)
433 DALI_TEST_EQUALS(Vector4::XAXIS.Dot(Vector3::YAXIS), 0.0f, TEST_LOCATION);
434 DALI_TEST_EQUALS(Vector4::XAXIS.Dot(Vector3::ZAXIS), 0.0f, TEST_LOCATION);
435 DALI_TEST_EQUALS(Vector4::XAXIS.Dot(Vector3::XAXIS), 1.0f, TEST_LOCATION);
436 DALI_TEST_EQUALS(Vector4::YAXIS.Dot(Vector3::YAXIS), 1.0f, TEST_LOCATION);
437 DALI_TEST_EQUALS(Vector4::ZAXIS.Dot(Vector3::ZAXIS), 1.0f, TEST_LOCATION);
439 DALI_TEST_EQUALS(Vector4(1.0f, 0.0f, 0.0f, 1.0f).Dot(Vector3(1.0f, 0.0f, 0.0f)), 1.0f, TEST_LOCATION);
441 // Test v0 . v0b and v0 . v1 (v1 is always 90 degrees out of phase with v0)
442 for (float x = 0; x<6.0f; x+=1.0f)
444 // vectors rotating in the XY plane.
445 Vector4 v0(cosf(x), sinf(x), 0.0f, 1.0f);
446 Vector3 v0b(cosf(x), sinf(x), 0.0f);
447 Vector3 v1(sinf(x), -cosf(x), 0.0f);
448 DALI_TEST_EQUALS(v0.Dot(v1), 0.0f, 0.0001f, TEST_LOCATION);
449 DALI_TEST_EQUALS(v0.Dot(v0b), 1.0f, 0.0001f, TEST_LOCATION);
451 // vectors rotating in the XZ plane.
452 v0 = Vector4(cosf(x), 0.0f, sinf(x), 0.0f);
453 v0b = Vector3(cosf(x), 0.0f, sinf(x));
454 v1 = Vector3(sinf(x), 0.0f, -cosf(x));
455 DALI_TEST_EQUALS(v0.Dot(v1), 0.0f, 0.0001f, TEST_LOCATION);
456 DALI_TEST_EQUALS(v0.Dot(v0b), 1.0f, 0.0001f, TEST_LOCATION);
459 Vector4 v0 = Vector4(12.0f, 7.0f, 9.0f, 14.0f);
462 Vector3 v1(v0 * 2.0f);
463 DALI_TEST_EQUALS(v0.Dot(v1), 2.0f, 0.001f, TEST_LOCATION);
467 int UtcDaliVector4Dot4P(void)
469 DALI_TEST_EQUALS(Vector4::XAXIS.Dot4(Vector4::YAXIS), 0.0f, TEST_LOCATION);
470 DALI_TEST_EQUALS(Vector4::XAXIS.Dot4(Vector4::ZAXIS), 0.0f, TEST_LOCATION);
471 DALI_TEST_EQUALS(Vector4::YAXIS.Dot4(Vector4::ZAXIS), 0.0f, TEST_LOCATION);
473 DALI_TEST_EQUALS(Vector4::XAXIS.Dot4(Vector4::XAXIS), 1.0f, TEST_LOCATION);
474 DALI_TEST_EQUALS(Vector4::YAXIS.Dot4(Vector4::YAXIS), 1.0f, TEST_LOCATION);
475 DALI_TEST_EQUALS(Vector4::ZAXIS.Dot4(Vector4::ZAXIS), 1.0f, TEST_LOCATION);
477 DALI_TEST_EQUALS(Vector4(1.0f, 0.0f, 0.0f, 1.0f).Dot4(Vector4(1.0f, 0.0f, 0.0f, 1.0f)), 2.0f, TEST_LOCATION);
479 for (float x = 0; x<6.0f; x+=1.0f)
481 Vector4 v0(cosf(x), sinf(x), 0.0f, 1.0f);
482 Vector4 v1(sinf(x), -cosf(x), 0.0f, 1.0f);
483 DALI_TEST_EQUALS(v0.Dot4(v1), 1.0f, 0.0001f, TEST_LOCATION);
484 DALI_TEST_EQUALS(v0.Dot4(v0), 2.0f, 0.0001f, TEST_LOCATION);
486 v0 = Vector4(cosf(x), 0.0f, sinf(x), 0.0f);
487 v1 = Vector4(sinf(x), 0.0f, -cosf(x), 0.0f);
488 DALI_TEST_EQUALS(v0.Dot4(v1), 0.0f, 0.0001f, TEST_LOCATION);
489 DALI_TEST_EQUALS(v0.Dot4(v0), 1.0f, 0.0001f, TEST_LOCATION);
492 Vector4 v0(12.0f, 7.0f, 9.0f, 3.0f);
495 Vector4 v1 = v0 * 2.0f;
496 DALI_TEST_EQUALS(v0.Dot4(v1), 2.0f + 3.0f*6.0f, 0.001f, TEST_LOCATION);
500 int UtcDaliVector4CrossP(void)
502 DALI_TEST_EQUALS(Vector4::XAXIS.Cross(Vector4::YAXIS), Vector4::ZAXIS, 0.0001f, TEST_LOCATION);
503 DALI_TEST_EQUALS(Vector4::YAXIS.Cross(Vector4::ZAXIS), Vector4::XAXIS, 0.0001f, TEST_LOCATION);
504 DALI_TEST_EQUALS(Vector4::ZAXIS.Cross(Vector4::XAXIS), Vector4::YAXIS, 0.0001f, TEST_LOCATION);
506 DALI_TEST_EQUALS(Vector4::XAXIS.Cross(Vector4::ZAXIS), -Vector4::YAXIS, 0.0001f, TEST_LOCATION);
507 DALI_TEST_EQUALS(Vector4::YAXIS.Cross(Vector4::XAXIS), -Vector4::ZAXIS, 0.0001f, TEST_LOCATION);
508 DALI_TEST_EQUALS(Vector4::ZAXIS.Cross(Vector4::YAXIS), -Vector4::XAXIS, 0.0001f, TEST_LOCATION);
510 Vector4 v0(2.0f, 3.0f, 4.0f, 5.0f);
511 Vector4 v1(10.0f, 20.0f, 30.0f, 40.0f);
512 Vector4 result( (v0.y * v1.z) - (v0.z * v1.y),
513 (v0.z * v1.x) - (v0.x * v1.z),
514 (v0.x * v1.y) - (v0.y * v1.x),
517 DALI_TEST_EQUALS(v0.Cross(v1), result, 0.001f, TEST_LOCATION);
521 int UtcDaliVector4LengthP(void)
523 Vector4 v(1.0f, 2.0f, 3.0f, 4.0f);
524 DALI_TEST_EQUALS(v.Length(), sqrtf(v.x*v.x + v.y*v.y + v.z*v.z), 0.001f, TEST_LOCATION);
526 Vector4 v1(0.0f, 0.0f, 0.0f, 0.0f);
527 DALI_TEST_EQUALS(v1.Length(), 0.0f, TEST_LOCATION);
531 int UtcDaliVector4LengthSquaredP(void)
533 Vector4 v(1.0f, 2.0f, 3.0f, 4.0f);
534 DALI_TEST_EQUALS(v.LengthSquared(), v.x*v.x + v.y*v.y + v.z*v.z, 0.001f, TEST_LOCATION);
536 Vector4 v1(0.0f, 0.0f, 0.0f, 0.0f);
537 DALI_TEST_EQUALS(v1.LengthSquared(), 0.0f, TEST_LOCATION);
541 int UtcDaliVector4NormalizeP(void)
543 for (float f=0.0f; f<6.0f; f+=1.0f)
545 Vector4 v(cosf(f)*10.0f, cosf(f+1.0f)*10.0f, cosf(f+2.0f)*10.0f, 1.0f);
547 DALI_TEST_EQUALS(v.LengthSquared(), 1.0f, 0.001f, TEST_LOCATION);
550 Vector4 v(0.0f, 0.0f, 0.0f, 1.0f);
552 DALI_TEST_EQUALS(v.LengthSquared(), 0.0f, 0.00001f, TEST_LOCATION);
556 int UtcDaliVector4ClampVector4P(void)
558 tet_infoline("Testing Dali::Vector4::Clamp( const Vector4& v, const Vector4& min, const Vector4& max )");
560 Vector4 v0(2.0f, 0.8f, 0.0f, 5.0f);
561 Vector4 v1(-1.0f, 2.0f, 10.0f, -10.0f);
562 Vector4 v2(10.0f, 5.0f, 0.0f, 10.0f);
563 Vector4 v3(8.0f, 10.0f, 5.0f, -20.0f);
564 Vector4 v4(4.9f, 5.1f, 10.0f, 0.0f);
566 Vector4 min(1.0f, -2.0f, -8.0f, -16.0f);
567 Vector4 max(2.0f, 4.0f, 4.0f, -8.0f);
569 v0.Clamp( min, max );
570 v1.Clamp( min, max );
571 v2.Clamp( min, max );
572 v3.Clamp( min, max );
573 v4.Clamp( min, max );
575 DALI_TEST_EQUALS( v0, Vector4( 2.0f, 0.8f, 0.0f, -8.0f), 0.01f, TEST_LOCATION );
576 DALI_TEST_EQUALS( v1, Vector4( 1.0f, 2.0f, 4.0f, -10.0f), 0.01f, TEST_LOCATION );
577 DALI_TEST_EQUALS( v2, Vector4( 2.0f, 4.0f, 0.0f, -8.0f), 0.01f, TEST_LOCATION );
578 DALI_TEST_EQUALS( v3, Vector4( 2.0f, 4.0f, 4.0f, -16.0f), 0.01f, TEST_LOCATION );
579 DALI_TEST_EQUALS( v4, Vector4( 2.0f, 4.0f, 4.0f, -8.0f), 0.01f, TEST_LOCATION );
583 int UtcDaliVector4AsFloatP(void)
585 float values[] = {0.0f, 1.0f, 2.0f, 3.0f};
588 for (int i=0;i<4;++i)
590 DALI_TEST_EQUALS(v0.AsFloat()[i], values[i], TEST_LOCATION);
596 int UtcDaliVector4ConstAsFloatP(void)
598 float values[] = {0.0f, 1.0f, 2.0f, 3.0f};
601 const Vector4 v1(values);
602 for (int i=0;i<4;++i)
604 DALI_TEST_EQUALS(v1.AsFloat()[i], values[i], TEST_LOCATION);
609 int UtcDaliVector4OStreamOperatorP(void)
611 std::ostringstream oss;
613 Vector4 vector(1.0f, 2.0f, 3.0f, 4.0f);
617 std::string expectedOutput = "[1, 2, 3, 4]";
619 DALI_TEST_EQUALS( oss.str(), expectedOutput, TEST_LOCATION);
623 int UtcDaliVector4MaxP(void)
625 Vector4 v0(2.0f, 2.0f, 1.0f, 1.0f);
626 Vector4 v1(1.0f, 1.0f, 2.0f, 2.0f);
628 DALI_TEST_EQUALS(Max(v0, v1), Vector4(2.0f, 2.0f, 2.0f, 2.0f), 0.01f, TEST_LOCATION);
632 int UtcDaliVector4MinP(void)
634 Vector4 v0(2.0f, 2.0f, 1.0f, 1.0f);
635 Vector4 v1(1.0f, 1.0f, 2.0f, 2.0f);
637 DALI_TEST_EQUALS(Min(v0, v1), Vector4(1.0f, 1.0f, 1.0f, 1.0f), 0.01f, TEST_LOCATION);
641 int UtcDaliVector4ClampP(void)
643 tet_infoline("Testing Dali::Vector4::Clamp()");
645 Vector4 v0(2.0f, 2.0f, -2.0f, -2.0f);
646 DALI_TEST_EQUALS(Clamp(v0, -1.0f, 1.0f), Vector4(1.0f, 1.0f, -1.0f, -1.0f), 0.01f, TEST_LOCATION);
648 Vector4 v1(1.0f, 0.0f, 0.0f, -1.0f);
649 DALI_TEST_EQUALS(Clamp(v1, -1.0f, 1.0f), v1, 0.01f, TEST_LOCATION);
654 int UtcDaliVector4ConstantsP(void)
656 float f[] = {2.0f, 3.0f, 4.0f, 5.0f};
658 Vector4 v1(f[0], f[1], f[2], f[3]);
661 DALI_TEST_EQUALS(v0, v1, TEST_LOCATION);
662 DALI_TEST_EQUALS(v0, v2, TEST_LOCATION);
663 DALI_TEST_CHECK(v0 == v1);