2 * Copyright (c) 2016 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);
114 DALI_TEST_EQUALS(v0.x, 1.0f, 0.001f, TEST_LOCATION);
115 DALI_TEST_EQUALS(v0.y, 2.0f, 0.001f, TEST_LOCATION);
116 DALI_TEST_EQUALS(v0.z, 0.0f, 0.001f, TEST_LOCATION);
117 DALI_TEST_EQUALS(v0.z, 0.0f, 0.001f, TEST_LOCATION);
122 int UtcDaliVector4Assign03P(void)
124 Vector3 vec3(1.f, 2.f, 3.f);
127 DALI_TEST_EQUALS(v0.x, 1.0f, 0.001f, TEST_LOCATION);
128 DALI_TEST_EQUALS(v0.y, 2.0f, 0.001f, TEST_LOCATION);
129 DALI_TEST_EQUALS(v0.z, 3.0f, 0.001f, TEST_LOCATION);
130 DALI_TEST_EQUALS(v0.w, 0.0f, 0.001f, TEST_LOCATION);
134 int UtcDaliVector4Add01P(void)
136 Vector4 v0(1.0f, 2.0f, 3.0f, 4.0f);
137 Vector4 v1(10.0f, 20.0f, 30.0f, 40.0f);
138 Vector4 r0(11.0f, 22.0f, 33.0f, 44.0f);
141 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
146 int UtcDaliVector4Add02P(void)
148 Vector4 v0(1.0f, 2.0f, 3.0f, 4.0f);
149 Vector4 v1(10.0f, 20.0f, 30.0f, 40.0f);
150 Vector4 r0(11.0f, 22.0f, 33.0f, 44.0f);
153 DALI_TEST_EQUALS(v0, r0, TEST_LOCATION);
157 int UtcDaliVector4Subtract01P(void)
159 Vector4 v0(11.0f, 22.0f, 33.0f, 44.0f);
160 Vector4 v1(10.0f, 20.0f, 30.0f, 40.0f);
161 Vector4 r0(1.0f, 2.0f, 3.0f, 4.0f);
164 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
168 int UtcDaliVector4Subtract02P(void)
170 Vector4 v0(11.0f, 22.0f, 33.0f, 44.0f);
171 Vector4 v1(10.0f, 20.0f, 30.0f, 40.0f);
172 Vector4 r0(1.0f, 2.0f, 3.0f, 4.0f);
175 DALI_TEST_EQUALS(v0, r0, TEST_LOCATION);
179 int UtcDaliVector4Multiply01P(void)
181 Vector4 v0(2.0f, 3.0f, 4.0f, 5.0f);
182 Vector4 v1(10.0f, 20.0f, 30.0f, 40.0f);
183 Vector4 r0(20.0f, 60.0f, 120.0f, 200.0f);
185 Vector4 v2 = v0 * v1;
186 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
191 int UtcDaliVector4Multiply02P(void)
193 Vector4 v0(2.0f, 4.0f, 8.0f, 16.0f);
194 const Vector4 r0(20.0f, 40.0f, 80.0f, 160.0f);
195 Vector4 v2 = v0 * 10.0f;
196 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
200 int UtcDaliVector4Multiply03P(void)
202 Vector4 v0(2.0f, 3.0f, 4.0f, 5.0f);
203 Vector4 v1(10.0f, 20.0f, 30.0f, 40.0f);
204 Vector4 r0(20.0f, 60.0f, 120.0f, 200.0f);
207 DALI_TEST_EQUALS(v0, r0, TEST_LOCATION);
211 int UtcDaliVector4Multiply04P(void)
213 Vector4 v0(2.0f, 4.0f, 8.0f, 16.0f);
214 const Vector4 r0(20.0f, 40.0f, 80.0f, 160.0f);
217 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
221 int UtcDaliVector4Divide01P(void)
223 Vector4 v0(1.0f, 1.0f, 1.0f, 1.0f);
224 Vector4 v1(2.0f, 3.0f, 5.0f, 7.0f);
225 Vector4 v2(4.0f, 9.0f, 25.0f, 49.0f);
227 DALI_TEST_EQUALS( v0/v0, v0, TEST_LOCATION);
228 DALI_TEST_EQUALS( v1/v0, v1, TEST_LOCATION);
229 DALI_TEST_EQUALS( v1/v1, v0, TEST_LOCATION);
230 DALI_TEST_EQUALS( v2/v1, v1, TEST_LOCATION);
236 int UtcDaliVector4Divide02P(void)
238 Vector4 v0(2.0f, 4.0f, 8.0f, 16.0f);
239 const Vector4 r0(20.0f, 40.0f, 80.0f, 160.0f);
240 const Vector4 r1(10.0f, 20.0f, 40.0f, 80.0f);
241 const Vector4 r2( 1.0f, 2.0f, 4.0f, 8.0f);
242 const Vector4 r3(2.0f, 4.0f, 8.0f, 16.0f);
244 Vector4 v2 = r0 / 10.0f;
245 DALI_TEST_EQUALS(v2, r3, TEST_LOCATION);
250 int UtcDaliVector4Divide03P(void)
252 Vector4 v0(1.0f, 1.0f, 1.0f, 1.0f);
253 Vector4 v1(2.0f, 3.0f, 5.0f, 7.0f);
254 Vector4 v2(4.0f, 9.0f, 25.0f, 49.0f);
258 DALI_TEST_EQUALS(v4, v0, TEST_LOCATION);
262 DALI_TEST_EQUALS(v5, v1, TEST_LOCATION);
266 DALI_TEST_EQUALS(v6, v0, TEST_LOCATION);
269 DALI_TEST_EQUALS(v2, v1, TEST_LOCATION);
274 int UtcDaliVector4Divide04P(void)
276 Vector4 v0(2.0f, 4.0f, 8.0f, 16.0f);
277 const Vector4 r0(20.0f, 40.0f, 80.0f, 160.0f);
278 const Vector4 r1(10.0f, 20.0f, 40.0f, 80.0f);
279 const Vector4 r2( 1.0f, 2.0f, 4.0f, 8.0f);
280 const Vector4 r3(2.0f, 4.0f, 8.0f, 16.0f);
284 DALI_TEST_EQUALS(v2, r3, TEST_LOCATION);
289 int UtcDaliVector4NegateP(void)
291 TestApplication application;
292 Vector4 v1(10.0f, 20.0f, 30.f, 40.f);
293 Vector4 r0(-10.0f, -20.0f, -30.f, -40.f);
296 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
300 int UtcDaliVector4EqualsP(void)
302 Vector4 v0(1.0f, 2.0f, 3.0f, 4.0f);
303 Vector4 v1(1.0f, 2.0f, 3.0f, 4.0f);
305 DALI_TEST_CHECK(v0 == v1);
309 int UtcDaliVector4NotEqualsP(void)
311 Vector4 v0(1.0f, 2.0f, 3.0f, 4.0f);
312 Vector4 v1(1.0f, 2.0f, 3.0f, 4.0f);
314 Vector4 v2 = Vector4(0.0f, 2.0f, 3.0f, 4.0f);
315 DALI_TEST_CHECK(v0 != v2);
317 v2 = Vector4(1.0f, 0.0f, 3.0f, 4.0f);
318 DALI_TEST_CHECK(v0 != v2);
320 v2 = Vector4(1.0f, 2.0f, 0.0f, 4.0f);
321 DALI_TEST_CHECK(v0 != v2);
323 v2 = Vector4(1.0f, 2.0f, 3.0f, 0.0f);
324 DALI_TEST_CHECK(v0 != v2);
328 int UtcDaliVector4OperatorSubscriptP(void)
330 Vector4 testVector(1.0f, 2.0f, 3.0f, 4.0f);
332 // read array subscripts
333 DALI_TEST_EQUALS( testVector[0], 1.0f, TEST_LOCATION );
334 DALI_TEST_EQUALS( testVector[1], 2.0f, TEST_LOCATION );
335 DALI_TEST_EQUALS( testVector[2], 3.0f, TEST_LOCATION );
336 DALI_TEST_EQUALS( testVector[3], 4.0f, TEST_LOCATION );
338 // write array subscripts/read struct memebers
339 testVector[0] = 5.0f;
340 testVector[1] = 6.0f;
341 testVector[2] = 7.0f;
342 testVector[3] = 8.0f;
344 DALI_TEST_EQUALS( testVector.x, 5.0f, TEST_LOCATION );
345 DALI_TEST_EQUALS( testVector.y, 6.0f, TEST_LOCATION );
346 DALI_TEST_EQUALS( testVector.z, 7.0f, TEST_LOCATION );
347 DALI_TEST_EQUALS( testVector.w, 8.0f, TEST_LOCATION );
349 // write struct members/read array subscripts
351 testVector.y = 10.0f;
352 testVector.z = 11.0f;
353 testVector.w = 12.0f;
355 DALI_TEST_EQUALS( testVector[0], 9.0f, TEST_LOCATION );
356 DALI_TEST_EQUALS( testVector[1], 10.0f, TEST_LOCATION );
357 DALI_TEST_EQUALS( testVector[2], 11.0f, TEST_LOCATION );
358 DALI_TEST_EQUALS( testVector[3], 12.0f, TEST_LOCATION );
364 int UtcDaliVector4ConstOperatorSubscriptP(void)
366 Vector4 testVector(1.0f, 2.0f, 3.0f, 4.0f);
368 // write struct members/read array subscripts
369 const Vector4 testVector2(1.0f, 2.0f, 3.0f, 4.0f);
370 const float& x = testVector2[0];
371 const float& y = testVector2[1];
372 const float& z ( testVector2[2] );
373 const float& w ( testVector2[3] );
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 DALI_TEST_EQUALS( w, 4.0f, TEST_LOCATION );
382 float& w = testVector[4];
383 (void)w; // Suppress unused variable warning
384 tet_result(TET_FAIL);
386 catch (Dali::DaliException& e)
388 DALI_TEST_PRINT_ASSERT( e );
389 DALI_TEST_ASSERT( e, "index < 4", TEST_LOCATION );
394 const float& w = testVector2[4];
395 (void)w; // Suppress unused variable warning
396 tet_result(TET_FAIL);
398 catch (Dali::DaliException& e)
400 DALI_TEST_PRINT_ASSERT( e );
401 DALI_TEST_ASSERT( e, "index < 4", TEST_LOCATION );
406 int UtcDaliVector4Dot01P(void)
408 DALI_TEST_EQUALS(Vector4::XAXIS.Dot(Vector4::YAXIS), 0.0f, TEST_LOCATION);
409 DALI_TEST_EQUALS(Vector4::XAXIS.Dot(Vector4::ZAXIS), 0.0f, TEST_LOCATION);
410 DALI_TEST_EQUALS(Vector4::XAXIS.Dot(Vector4::XAXIS), 1.0f, TEST_LOCATION);
411 DALI_TEST_EQUALS(Vector4::YAXIS.Dot(Vector4::YAXIS), 1.0f, TEST_LOCATION);
412 DALI_TEST_EQUALS(Vector4::ZAXIS.Dot(Vector4::ZAXIS), 1.0f, TEST_LOCATION);
414 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);
416 // Test v0 . v0 and v0 . v1 (v1 is always 90 degrees out of phase with v0)
417 for (float x = 0; x<6.0f; x+=1.0f)
419 // vectors rotating in the XY plane.
420 Vector4 v0(cosf(x), sinf(x), 0.0f, 1.0f);
421 Vector4 v1(sinf(x), -cosf(x), 0.0f, 1.0f);
422 DALI_TEST_EQUALS(v0.Dot(v1), 0.0f, 0.0001f, TEST_LOCATION);
423 DALI_TEST_EQUALS(v0.Dot(v0), 1.0f, 0.0001f, TEST_LOCATION);
425 // vectors rotating in the XZ plane.
426 v0 = Vector4(cosf(x), 0.0f, sinf(x), 0.0f);
427 v1 = Vector4(sinf(x), 0.0f, -cosf(x), 0.0f);
428 DALI_TEST_EQUALS(v0.Dot(v1), 0.0f, 0.0001f, TEST_LOCATION);
429 DALI_TEST_EQUALS(v0.Dot(v0), 1.0f, 0.0001f, TEST_LOCATION);
432 Vector4 v0 = Vector4(12.0f, 7.0f, 9.0f, 14.0f);
435 Vector4 v1 = v0 * 2.0f;
436 DALI_TEST_EQUALS(v0.Dot(v1), 2.0f, 0.001f, TEST_LOCATION);
440 int UtcDaliVector4DotVector302P(void)
442 DALI_TEST_EQUALS(Vector4::XAXIS.Dot(Vector3::YAXIS), 0.0f, TEST_LOCATION);
443 DALI_TEST_EQUALS(Vector4::XAXIS.Dot(Vector3::ZAXIS), 0.0f, TEST_LOCATION);
444 DALI_TEST_EQUALS(Vector4::XAXIS.Dot(Vector3::XAXIS), 1.0f, TEST_LOCATION);
445 DALI_TEST_EQUALS(Vector4::YAXIS.Dot(Vector3::YAXIS), 1.0f, TEST_LOCATION);
446 DALI_TEST_EQUALS(Vector4::ZAXIS.Dot(Vector3::ZAXIS), 1.0f, TEST_LOCATION);
448 DALI_TEST_EQUALS(Vector4(1.0f, 0.0f, 0.0f, 1.0f).Dot(Vector3(1.0f, 0.0f, 0.0f)), 1.0f, TEST_LOCATION);
450 // Test v0 . v0b and v0 . v1 (v1 is always 90 degrees out of phase with v0)
451 for (float x = 0; x<6.0f; x+=1.0f)
453 // vectors rotating in the XY plane.
454 Vector4 v0(cosf(x), sinf(x), 0.0f, 1.0f);
455 Vector3 v0b(cosf(x), sinf(x), 0.0f);
456 Vector3 v1(sinf(x), -cosf(x), 0.0f);
457 DALI_TEST_EQUALS(v0.Dot(v1), 0.0f, 0.0001f, TEST_LOCATION);
458 DALI_TEST_EQUALS(v0.Dot(v0b), 1.0f, 0.0001f, TEST_LOCATION);
460 // vectors rotating in the XZ plane.
461 v0 = Vector4(cosf(x), 0.0f, sinf(x), 0.0f);
462 v0b = Vector3(cosf(x), 0.0f, sinf(x));
463 v1 = Vector3(sinf(x), 0.0f, -cosf(x));
464 DALI_TEST_EQUALS(v0.Dot(v1), 0.0f, 0.0001f, TEST_LOCATION);
465 DALI_TEST_EQUALS(v0.Dot(v0b), 1.0f, 0.0001f, TEST_LOCATION);
468 Vector4 v0 = Vector4(12.0f, 7.0f, 9.0f, 14.0f);
471 Vector3 v1(v0 * 2.0f);
472 DALI_TEST_EQUALS(v0.Dot(v1), 2.0f, 0.001f, TEST_LOCATION);
476 int UtcDaliVector4Dot4P(void)
478 DALI_TEST_EQUALS(Vector4::XAXIS.Dot4(Vector4::YAXIS), 0.0f, TEST_LOCATION);
479 DALI_TEST_EQUALS(Vector4::XAXIS.Dot4(Vector4::ZAXIS), 0.0f, TEST_LOCATION);
480 DALI_TEST_EQUALS(Vector4::YAXIS.Dot4(Vector4::ZAXIS), 0.0f, TEST_LOCATION);
482 DALI_TEST_EQUALS(Vector4::XAXIS.Dot4(Vector4::XAXIS), 1.0f, TEST_LOCATION);
483 DALI_TEST_EQUALS(Vector4::YAXIS.Dot4(Vector4::YAXIS), 1.0f, TEST_LOCATION);
484 DALI_TEST_EQUALS(Vector4::ZAXIS.Dot4(Vector4::ZAXIS), 1.0f, TEST_LOCATION);
486 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);
488 for (float x = 0; x<6.0f; x+=1.0f)
490 Vector4 v0(cosf(x), sinf(x), 0.0f, 1.0f);
491 Vector4 v1(sinf(x), -cosf(x), 0.0f, 1.0f);
492 DALI_TEST_EQUALS(v0.Dot4(v1), 1.0f, 0.0001f, TEST_LOCATION);
493 DALI_TEST_EQUALS(v0.Dot4(v0), 2.0f, 0.0001f, TEST_LOCATION);
495 v0 = Vector4(cosf(x), 0.0f, sinf(x), 0.0f);
496 v1 = Vector4(sinf(x), 0.0f, -cosf(x), 0.0f);
497 DALI_TEST_EQUALS(v0.Dot4(v1), 0.0f, 0.0001f, TEST_LOCATION);
498 DALI_TEST_EQUALS(v0.Dot4(v0), 1.0f, 0.0001f, TEST_LOCATION);
501 Vector4 v0(12.0f, 7.0f, 9.0f, 3.0f);
504 Vector4 v1 = v0 * 2.0f;
505 DALI_TEST_EQUALS(v0.Dot4(v1), 2.0f + 3.0f*6.0f, 0.001f, TEST_LOCATION);
509 int UtcDaliVector4CrossP(void)
511 DALI_TEST_EQUALS(Vector4::XAXIS.Cross(Vector4::YAXIS), Vector4::ZAXIS, 0.0001f, TEST_LOCATION);
512 DALI_TEST_EQUALS(Vector4::YAXIS.Cross(Vector4::ZAXIS), Vector4::XAXIS, 0.0001f, TEST_LOCATION);
513 DALI_TEST_EQUALS(Vector4::ZAXIS.Cross(Vector4::XAXIS), Vector4::YAXIS, 0.0001f, TEST_LOCATION);
515 DALI_TEST_EQUALS(Vector4::XAXIS.Cross(Vector4::ZAXIS), -Vector4::YAXIS, 0.0001f, TEST_LOCATION);
516 DALI_TEST_EQUALS(Vector4::YAXIS.Cross(Vector4::XAXIS), -Vector4::ZAXIS, 0.0001f, TEST_LOCATION);
517 DALI_TEST_EQUALS(Vector4::ZAXIS.Cross(Vector4::YAXIS), -Vector4::XAXIS, 0.0001f, TEST_LOCATION);
519 Vector4 v0(2.0f, 3.0f, 4.0f, 5.0f);
520 Vector4 v1(10.0f, 20.0f, 30.0f, 40.0f);
521 Vector4 result( (v0.y * v1.z) - (v0.z * v1.y),
522 (v0.z * v1.x) - (v0.x * v1.z),
523 (v0.x * v1.y) - (v0.y * v1.x),
526 DALI_TEST_EQUALS(v0.Cross(v1), result, 0.001f, TEST_LOCATION);
530 int UtcDaliVector4LengthP(void)
532 Vector4 v(1.0f, 2.0f, 3.0f, 4.0f);
533 DALI_TEST_EQUALS(v.Length(), sqrtf(v.x*v.x + v.y*v.y + v.z*v.z), 0.001f, TEST_LOCATION);
535 Vector4 v1(0.0f, 0.0f, 0.0f, 0.0f);
536 DALI_TEST_EQUALS(v1.Length(), 0.0f, TEST_LOCATION);
540 int UtcDaliVector4LengthSquaredP(void)
542 Vector4 v(1.0f, 2.0f, 3.0f, 4.0f);
543 DALI_TEST_EQUALS(v.LengthSquared(), v.x*v.x + v.y*v.y + v.z*v.z, 0.001f, TEST_LOCATION);
545 Vector4 v1(0.0f, 0.0f, 0.0f, 0.0f);
546 DALI_TEST_EQUALS(v1.LengthSquared(), 0.0f, TEST_LOCATION);
550 int UtcDaliVector4NormalizeP(void)
552 for (float f=0.0f; f<6.0f; f+=1.0f)
554 Vector4 v(cosf(f)*10.0f, cosf(f+1.0f)*10.0f, cosf(f+2.0f)*10.0f, 1.0f);
556 DALI_TEST_EQUALS(v.LengthSquared(), 1.0f, 0.001f, TEST_LOCATION);
559 Vector4 v(0.0f, 0.0f, 0.0f, 1.0f);
561 DALI_TEST_EQUALS(v.LengthSquared(), 0.0f, 0.00001f, TEST_LOCATION);
565 int UtcDaliVector4ClampVector4P(void)
567 tet_infoline("Testing Dali::Vector4::Clamp( const Vector4& v, const Vector4& min, const Vector4& max )");
569 Vector4 v0(2.0f, 0.8f, 0.0f, 5.0f);
570 Vector4 v1(-1.0f, 2.0f, 10.0f, -10.0f);
571 Vector4 v2(10.0f, 5.0f, 0.0f, 10.0f);
572 Vector4 v3(8.0f, 10.0f, 5.0f, -20.0f);
573 Vector4 v4(4.9f, 5.1f, 10.0f, 0.0f);
575 Vector4 min(1.0f, -2.0f, -8.0f, -16.0f);
576 Vector4 max(2.0f, 4.0f, 4.0f, -8.0f);
578 v0.Clamp( min, max );
579 v1.Clamp( min, max );
580 v2.Clamp( min, max );
581 v3.Clamp( min, max );
582 v4.Clamp( min, max );
584 DALI_TEST_EQUALS( v0, Vector4( 2.0f, 0.8f, 0.0f, -8.0f), 0.01f, TEST_LOCATION );
585 DALI_TEST_EQUALS( v1, Vector4( 1.0f, 2.0f, 4.0f, -10.0f), 0.01f, TEST_LOCATION );
586 DALI_TEST_EQUALS( v2, Vector4( 2.0f, 4.0f, 0.0f, -8.0f), 0.01f, TEST_LOCATION );
587 DALI_TEST_EQUALS( v3, Vector4( 2.0f, 4.0f, 4.0f, -16.0f), 0.01f, TEST_LOCATION );
588 DALI_TEST_EQUALS( v4, Vector4( 2.0f, 4.0f, 4.0f, -8.0f), 0.01f, TEST_LOCATION );
592 int UtcDaliVector4AsFloatP(void)
594 float values[] = {0.0f, 1.0f, 2.0f, 3.0f};
597 for (int i=0;i<4;++i)
599 DALI_TEST_EQUALS(v0.AsFloat()[i], values[i], TEST_LOCATION);
605 int UtcDaliVector4ConstAsFloatP(void)
607 float values[] = {0.0f, 1.0f, 2.0f, 3.0f};
610 const Vector4 v1(values);
611 for (int i=0;i<4;++i)
613 DALI_TEST_EQUALS(v1.AsFloat()[i], values[i], TEST_LOCATION);
618 int UtcDaliVector4OStreamOperatorP(void)
620 std::ostringstream oss;
622 Vector4 vector(1.0f, 2.0f, 3.0f, 4.0f);
626 std::string expectedOutput = "[1, 2, 3, 4]";
628 DALI_TEST_EQUALS( oss.str(), expectedOutput, TEST_LOCATION);
632 int UtcDaliVector4MaxP(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(Max(v0, v1), Vector4(2.0f, 2.0f, 2.0f, 2.0f), 0.01f, TEST_LOCATION);
641 int UtcDaliVector4MinP(void)
643 Vector4 v0(2.0f, 2.0f, 1.0f, 1.0f);
644 Vector4 v1(1.0f, 1.0f, 2.0f, 2.0f);
646 DALI_TEST_EQUALS(Min(v0, v1), Vector4(1.0f, 1.0f, 1.0f, 1.0f), 0.01f, TEST_LOCATION);
650 int UtcDaliVector4ClampP(void)
652 tet_infoline("Testing Dali::Vector4::Clamp()");
654 Vector4 v0(2.0f, 2.0f, -2.0f, -2.0f);
655 DALI_TEST_EQUALS(Clamp(v0, -1.0f, 1.0f), Vector4(1.0f, 1.0f, -1.0f, -1.0f), 0.01f, TEST_LOCATION);
657 Vector4 v1(1.0f, 0.0f, 0.0f, -1.0f);
658 DALI_TEST_EQUALS(Clamp(v1, -1.0f, 1.0f), v1, 0.01f, TEST_LOCATION);
663 int UtcDaliVector4ConstantsP(void)
665 float f[] = {2.0f, 3.0f, 4.0f, 5.0f};
667 Vector4 v1(f[0], f[1], f[2], f[3]);
670 DALI_TEST_EQUALS(v0, v1, TEST_LOCATION);
671 DALI_TEST_EQUALS(v0, v2, TEST_LOCATION);
672 DALI_TEST_CHECK(v0 == v1);