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_vector2_startup(void)
29 test_return_value = TET_UNDEF;
32 void utc_dali_vector2_cleanup(void)
34 test_return_value = TET_PASS;
37 int UtcDaliVector2Cons(void)
39 Vector3 v3(1.0f, 2.0f, 3.0f);
42 Vector2 vc(11.0f, 123.0f);
44 DALI_TEST_EQUALS(va.x, 0.0f, 0.001f, TEST_LOCATION);
45 DALI_TEST_EQUALS(va.y, 0.0f, 0.001f, TEST_LOCATION);
47 DALI_TEST_EQUALS(vb.width, 1.0f, 0.001f, TEST_LOCATION);
48 DALI_TEST_EQUALS(vb.height, 2.0f, 0.001f, TEST_LOCATION);
50 DALI_TEST_EQUALS(vc.width, 11.0f, 0.001f, TEST_LOCATION);
51 DALI_TEST_EQUALS(vc.y, 123.0f, 0.001f, TEST_LOCATION);
53 Vector4 vec4(5.0f,6.0f,7.0f,8.0f);
56 DALI_TEST_EQUALS(vec2.x, 5.0f, 0.001, TEST_LOCATION);
57 DALI_TEST_EQUALS(vec2.y, 6.0f, 0.001, TEST_LOCATION);
59 Vector3 vec3(5.0f,6.0f,7.0f);
61 DALI_TEST_EQUALS(vec2.x, 5.0f, 0.001, TEST_LOCATION);
62 DALI_TEST_EQUALS(vec2.y, 6.0f, 0.001, TEST_LOCATION);
65 DALI_TEST_EQUALS(vec2.x, 5.0f, 0.001, TEST_LOCATION);
66 DALI_TEST_EQUALS(vec2.y, 6.0f, 0.001, TEST_LOCATION);
71 int UtcDaliVector2FitInside(void)
73 DALI_TEST_EQUALS( Vector2( 1.0f, 2.0f ), FitInside( Vector2( 1.0f, 2.0f ), Vector2( 10.0f, 20.0f ) ), TEST_LOCATION );
74 DALI_TEST_EQUALS( Vector2( 1.0f, 0.5f ), FitInside( Vector2( 1.0f, 2.0f ), Vector2( 20.0f, 10.0f ) ), TEST_LOCATION );
75 DALI_TEST_EQUALS( Vector2( 10.0f, 20.0f ), FitInside( Vector2( 10.0f, 20.0f ), Vector2( 1.0f, 2.0f ) ), TEST_LOCATION );
76 DALI_TEST_EQUALS( Vector2( 10.0f, 10.0f ), FitInside( Vector2( 100.0f, 10.0f ), Vector2( 10.0f, 10.0f ) ), TEST_LOCATION );
77 DALI_TEST_EQUALS( Vector2( 20.0f, 10.0f ), FitInside( Vector2( 20.0f, 20.0f ), Vector2( 10.0f, 5.0f ) ), TEST_LOCATION );
78 DALI_TEST_EQUALS( Vector2( 10.0f, 20.0f ), FitInside( Vector2( 20.0f, 20.0f ), Vector2( 5.0f, 10.0f ) ), TEST_LOCATION );
82 int UtcDaliVector2FitScaleToFill(void)
84 DALI_TEST_EQUALS( Vector2( 1.0f, 2.0f ), FitScaleToFill( Vector2( 1.0f, 2.0f ), Vector2( 10.0f, 20.0f ) ), TEST_LOCATION );
85 DALI_TEST_EQUALS( Vector2( 1.0f, 2.0f ), FitScaleToFill( Vector2( 10.0f, 20.0f ), Vector2( 1.0f, 2.0f ) ), TEST_LOCATION );
86 DALI_TEST_EQUALS( Vector2( 10.0f, 1.0f ), FitScaleToFill( Vector2( 100.0f, 10.0f ), Vector2( 10.0f, 10.0f ) ), TEST_LOCATION );
87 DALI_TEST_EQUALS( Vector2( 5.0f, 5.0f ), FitScaleToFill( Vector2( 20.0f, 20.0f ), Vector2( 10.0f, 5.0f ) ), TEST_LOCATION );
88 DALI_TEST_EQUALS( Vector2( 5.0f, 5.0f ), FitScaleToFill( Vector2( 20.0f, 20.0f ), Vector2( 5.0f, 10.0f ) ), TEST_LOCATION );
89 DALI_TEST_EQUALS( Vector2( 20.0f, 40.0f ), FitScaleToFill( Vector2( 20.0f, 0.0f ), Vector2( 5.0f, 10.0f ) ), TEST_LOCATION );
90 DALI_TEST_EQUALS( Vector2( 10.0f, 20.0f ), FitScaleToFill( Vector2( 0.0f, 20.0f ), Vector2( 5.0f, 10.0f ) ), TEST_LOCATION );
94 int UtcDaliVector2ShrinkInside(void)
96 DALI_TEST_EQUALS( Vector2( 1.0f, 2.0f ), ShrinkInside( Vector2( 1.0f, 2.0f ), Vector2( 10.0f, 20.0f ) ), TEST_LOCATION );
97 DALI_TEST_EQUALS( Vector2( 1.0f, 2.0f ), ShrinkInside( Vector2( 10.0f, 20.0f ), Vector2( 1.0f, 2.0f ) ), TEST_LOCATION );
98 DALI_TEST_EQUALS( Vector2( 10.0f, 10.0f ), ShrinkInside( Vector2( 100.0f, 10.0f ), Vector2( 10.0f, 10.0f ) ), TEST_LOCATION );
99 DALI_TEST_EQUALS( Vector2( 10.0f, 5.0f ), ShrinkInside( Vector2( 20.0f, 20.0f ), Vector2( 10.0f, 5.0f ) ), TEST_LOCATION );
100 DALI_TEST_EQUALS( Vector2( 5.0f, 10.0f ), ShrinkInside( Vector2( 20.0f, 20.0f ), Vector2( 5.0f, 10.0f ) ), TEST_LOCATION );
101 DALI_TEST_EQUALS( Vector2( 5.0f, 10.0f ), ShrinkInside( Vector2( 10.0f, 10.0f ), Vector2( 10.0f, 20.0f ) ), TEST_LOCATION );
102 DALI_TEST_EQUALS( Vector2( 10.0f, 5.0f ), ShrinkInside( Vector2( 10.0f, 10.0f ), Vector2( 20.0f, 10.0f ) ), TEST_LOCATION );
109 int UtcDaliVector2Add(void)
111 Vector2 v0(1.0f, 2.0f);
112 Vector2 v1(10.0f, 20.0f);
113 Vector2 r0(11.0f, 22.0f);
116 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
119 DALI_TEST_EQUALS(v0, r0, TEST_LOCATION);
125 int UtcDaliVector2Subtract(void)
127 Vector2 v0(11.0f, 22.0f);
128 Vector2 v1(10.0f, 20.0f);
129 Vector2 r0(1.0f, 2.0f);
132 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
135 DALI_TEST_EQUALS(v0, r0, TEST_LOCATION);
140 int UtcDaliVector2Negate(void)
142 Vector2 v1(10.0f, 20.0f);
143 Vector2 r0(-10.0f, -20.0f);
146 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
152 int UtcDaliVector2Multiply(void)
154 Vector2 v0(2.0f, 3.0f);
155 Vector2 v1(10.0f, 20.0f);
156 Vector2 r0(20.0f, 60.0f);
158 Vector2 v2 = v0 * v1;
159 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
162 DALI_TEST_EQUALS(v0, r0, TEST_LOCATION);
167 int UtcDaliVector2Divide(void)
169 Vector2 v0(1.0f, 1.0f);
170 Vector2 v1(2.0f, 3.0f);
171 Vector2 v2(4.0f, 9.0f);
173 DALI_TEST_EQUALS( v0/v0, v0, TEST_LOCATION);
174 DALI_TEST_EQUALS( v1/v0, v1, TEST_LOCATION);
175 DALI_TEST_EQUALS( v1/v1, v0, TEST_LOCATION);
176 DALI_TEST_EQUALS( v2/v1, v1, TEST_LOCATION);
180 DALI_TEST_EQUALS(v4, v0, TEST_LOCATION);
184 DALI_TEST_EQUALS(v5, v1, TEST_LOCATION);
188 DALI_TEST_EQUALS(v6, v0, TEST_LOCATION);
191 DALI_TEST_EQUALS(v2, v1, TEST_LOCATION);
196 int UtcDaliVector2Scale(void)
198 Vector2 v0(2.0f, 4.0f);
199 const Vector2 r0(20.0f, 40.0f);
200 const Vector2 r1(10.0f, 20.0f);
201 const Vector2 r2( 1.0f, 2.0f);
202 const Vector2 r3(2.0f, 4.0f);
204 Vector2 v2 = v0 * 10.0f;
205 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
208 DALI_TEST_EQUALS(v0, r1, TEST_LOCATION);
211 DALI_TEST_EQUALS(v2, r3, TEST_LOCATION);
215 DALI_TEST_EQUALS(v2, r2, TEST_LOCATION);
220 int UtcDaliVector2Equals(void)
222 Vector2 v0(1.0f, 2.0f);
223 Vector2 v1(1.0f, 2.0f);
225 DALI_TEST_CHECK(v0 == v1);
227 Vector2 v2 = Vector2(0.0f, 2.0f);
228 DALI_TEST_CHECK(v0 != v2);
230 v2 = Vector2(1.0f, 0.0f);
231 DALI_TEST_CHECK(v0 != v2);
233 v2 = Vector2(1.0f, 77.0f);
234 DALI_TEST_CHECK(v0 != v2);
236 v2 = Vector2(33.0f, 44.0f);
237 DALI_TEST_CHECK(v0 != v2);
242 int UtcDaliVector2Length(void)
244 Vector2 v(1.0f, 2.0f);
245 DALI_TEST_EQUALS(v.Length(), sqrtf(v.x*v.x + v.y*v.y), 0.001f, TEST_LOCATION);
247 Vector2 v1(0.0f, 0.0f);
248 DALI_TEST_EQUALS(v1.Length(), 0.0f, TEST_LOCATION);
253 int UtcDaliVector2LengthSquared(void)
255 Vector2 v(1.0f, 2.0f);
256 DALI_TEST_EQUALS(v.LengthSquared(), v.x*v.x + v.y*v.y, 0.001f, TEST_LOCATION);
258 Vector2 v1(0.0f, 0.0f);
259 DALI_TEST_EQUALS(v1.LengthSquared(), 0.0f, TEST_LOCATION);
264 int UtcDaliVector2Max(void)
266 Vector2 v0(2.0f, 1.0f);
267 Vector2 v1(1.0f, 2.0f);
269 DALI_TEST_EQUALS(Max(v0, v1), Vector2(2.0f, 2.0f), 0.01f, TEST_LOCATION);
274 int UtcDaliVector2Min(void)
276 Vector2 v0(2.0f, 1.0f);
277 Vector2 v1(1.0f, 2.0f);
279 DALI_TEST_EQUALS(Min(v0, v1), Vector2(1.0f, 1.0f), 0.01f, TEST_LOCATION);
283 int UtcDaliVector2Clamp(void)
285 tet_infoline("Testing Dali::Vector2::Clamp( const Vector2& v, const float& min, const float& max )");
287 Vector2 v0(2.0f, 0.8f);
288 Vector2 v1(-1.0f, 2.0f);
290 DALI_TEST_EQUALS( Clamp( v0, 0.9f, 1.1f ), Vector2(1.1f, 0.9f), 0.01f, TEST_LOCATION );
291 DALI_TEST_EQUALS( Clamp( v1, 1.0f, 1.0f ), Vector2(1.0f, 1.0f), 0.01f, TEST_LOCATION );
292 DALI_TEST_EQUALS( Clamp( v1, 0.0f, 3.0f ), Vector2(0.0f, 2.0f), 0.01f, TEST_LOCATION );
296 int UtcDaliVector2ClampVector2(void)
298 tet_infoline("Testing Dali::Vector2::Clamp( const Vector2& v, const Vector2& min, const Vector2& max )");
300 Vector2 v0(2.0f, 0.8f);
301 Vector2 v1(-1.0f, 2.0f);
302 Vector2 v2(10.0f, 5.0f);
303 Vector2 v3(8.0f, 10.0f);
304 Vector2 v4(4.9f, 5.1f);
305 Vector2 min(1.0f, 4.0f);
306 Vector2 max(9.0f, 6.0f);
308 v0.Clamp( min, max );
309 v1.Clamp( min, max );
310 v2.Clamp( min, max );
311 v3.Clamp( min, max );
312 v4.Clamp( min, max );
314 DALI_TEST_EQUALS( v0, Vector2(2.0f, 4.0f), 0.01f, TEST_LOCATION );
315 DALI_TEST_EQUALS( v1, Vector2(1.0f, 4.0f), 0.01f, TEST_LOCATION );
316 DALI_TEST_EQUALS( v2, Vector2(9.0f, 5.0f), 0.01f, TEST_LOCATION );
317 DALI_TEST_EQUALS( v3, Vector2(8.0f, 6.0f), 0.01f, TEST_LOCATION );
318 DALI_TEST_EQUALS( v4, Vector2(4.9f, 5.1f), 0.01f, TEST_LOCATION );
323 int UtcDaliVector2Normalize(void)
325 for (float f=0.0f; f<6.0f; f+=1.0f)
327 Vector2 v(cosf(f)*10.0f, cosf(f+1.0f)*10.0f);
329 DALI_TEST_EQUALS(v.LengthSquared(), 1.0f, 0.001f, TEST_LOCATION);
332 Vector4 v(0.0f, 0.0f, 0.0f, 1.0f);
334 DALI_TEST_EQUALS(v.LengthSquared(), 0.0f, 0.00001f, TEST_LOCATION);
338 int UtcDaliVector2OperatorSubscript(void)
340 tet_infoline("Testing Dali::Vector2::operator[]()");
342 Vector2 testVector(1.0f, 2.0f);
344 // read array subscripts
345 DALI_TEST_EQUALS( testVector[0], 1.0f, TEST_LOCATION );
346 DALI_TEST_EQUALS( testVector[1], 2.0f, TEST_LOCATION );
348 // write array subscripts/read struct memebers
349 testVector[0] = 3.0f;
350 testVector[1] = 4.0f;
352 DALI_TEST_EQUALS( testVector.x, 3.0f, TEST_LOCATION );
353 DALI_TEST_EQUALS( testVector.y, 4.0f, TEST_LOCATION );
355 // write struct members/read array subscripts
359 const Vector2 testVector2(3.0f, 4.0f);
360 const float& x = testVector2[0];
361 const float& y = testVector2[1];
362 DALI_TEST_EQUALS( x, 3.0f, TEST_LOCATION );
363 DALI_TEST_EQUALS( y, 4.0f, TEST_LOCATION );
368 float& w = testVector[4];
370 tet_result(TET_FAIL);
372 catch (Dali::DaliException& e)
374 DALI_TEST_PRINT_ASSERT( e );
375 DALI_TEST_ASSERT( e, "index < 2", TEST_LOCATION);
380 const float& w = testVector2[4];
382 tet_result(TET_FAIL);
384 catch (Dali::DaliException& e)
386 DALI_TEST_PRINT_ASSERT( e );
387 DALI_TEST_ASSERT( e, "index < 2" , TEST_LOCATION);
394 int UtcDaliVector2OStreamOperator(void)
396 std::ostringstream oss;
398 Vector2 vector(1, 2);
402 std::string expectedOutput = "[1, 2]";
404 DALI_TEST_EQUALS( oss.str(), expectedOutput, TEST_LOCATION);