2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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.
21 #include <dali/dali.h>
22 #include <dali-test-suite-utils.h>
26 void utc_dali_vector2_startup(void)
28 test_return_value = TET_UNDEF;
31 void utc_dali_vector2_cleanup(void)
33 test_return_value = TET_PASS;
36 int UtcDaliVector2Cons(void)
38 Vector3 v3(1.0f, 2.0f, 3.0f);
41 Vector2 vc(11.0f, 123.0f);
43 DALI_TEST_EQUALS(va.x, 0.0f, 0.001f, TEST_LOCATION);
44 DALI_TEST_EQUALS(va.y, 0.0f, 0.001f, TEST_LOCATION);
46 DALI_TEST_EQUALS(vb.width, 1.0f, 0.001f, TEST_LOCATION);
47 DALI_TEST_EQUALS(vb.height, 2.0f, 0.001f, TEST_LOCATION);
49 DALI_TEST_EQUALS(vc.width, 11.0f, 0.001f, TEST_LOCATION);
50 DALI_TEST_EQUALS(vc.y, 123.0f, 0.001f, TEST_LOCATION);
52 Vector4 vec4(5.0f,6.0f,7.0f,8.0f);
55 DALI_TEST_EQUALS(vec2.x, 5.0f, 0.001, TEST_LOCATION);
56 DALI_TEST_EQUALS(vec2.y, 6.0f, 0.001, TEST_LOCATION);
58 Vector3 vec3(5.0f,6.0f,7.0f);
60 DALI_TEST_EQUALS(vec2.x, 5.0f, 0.001, TEST_LOCATION);
61 DALI_TEST_EQUALS(vec2.y, 6.0f, 0.001, TEST_LOCATION);
64 DALI_TEST_EQUALS(vec2.x, 5.0f, 0.001, TEST_LOCATION);
65 DALI_TEST_EQUALS(vec2.y, 6.0f, 0.001, TEST_LOCATION);
70 int UtcDaliVector2FitInside(void)
72 DALI_TEST_EQUALS( Vector2( 1.0f, 2.0f ), FitInside( Vector2( 1.0f, 2.0f ), Vector2( 10.0f, 20.0f ) ), TEST_LOCATION );
73 DALI_TEST_EQUALS( Vector2( 1.0f, 0.5f ), FitInside( Vector2( 1.0f, 2.0f ), Vector2( 20.0f, 10.0f ) ), TEST_LOCATION );
74 DALI_TEST_EQUALS( Vector2( 10.0f, 20.0f ), FitInside( Vector2( 10.0f, 20.0f ), Vector2( 1.0f, 2.0f ) ), TEST_LOCATION );
75 DALI_TEST_EQUALS( Vector2( 10.0f, 10.0f ), FitInside( Vector2( 100.0f, 10.0f ), Vector2( 10.0f, 10.0f ) ), TEST_LOCATION );
76 DALI_TEST_EQUALS( Vector2( 20.0f, 10.0f ), FitInside( Vector2( 20.0f, 20.0f ), Vector2( 10.0f, 5.0f ) ), TEST_LOCATION );
77 DALI_TEST_EQUALS( Vector2( 10.0f, 20.0f ), FitInside( Vector2( 20.0f, 20.0f ), Vector2( 5.0f, 10.0f ) ), TEST_LOCATION );
81 int UtcDaliVector2FitScaleToFill(void)
83 DALI_TEST_EQUALS( Vector2( 1.0f, 2.0f ), FitScaleToFill( Vector2( 1.0f, 2.0f ), Vector2( 10.0f, 20.0f ) ), TEST_LOCATION );
84 DALI_TEST_EQUALS( Vector2( 1.0f, 2.0f ), FitScaleToFill( Vector2( 10.0f, 20.0f ), Vector2( 1.0f, 2.0f ) ), TEST_LOCATION );
85 DALI_TEST_EQUALS( Vector2( 10.0f, 1.0f ), FitScaleToFill( Vector2( 100.0f, 10.0f ), Vector2( 10.0f, 10.0f ) ), TEST_LOCATION );
86 DALI_TEST_EQUALS( Vector2( 5.0f, 5.0f ), FitScaleToFill( Vector2( 20.0f, 20.0f ), Vector2( 10.0f, 5.0f ) ), TEST_LOCATION );
87 DALI_TEST_EQUALS( Vector2( 5.0f, 5.0f ), FitScaleToFill( Vector2( 20.0f, 20.0f ), Vector2( 5.0f, 10.0f ) ), TEST_LOCATION );
88 DALI_TEST_EQUALS( Vector2( 20.0f, 40.0f ), FitScaleToFill( Vector2( 20.0f, 0.0f ), Vector2( 5.0f, 10.0f ) ), TEST_LOCATION );
89 DALI_TEST_EQUALS( Vector2( 10.0f, 20.0f ), FitScaleToFill( Vector2( 0.0f, 20.0f ), Vector2( 5.0f, 10.0f ) ), TEST_LOCATION );
93 int UtcDaliVector2ShrinkInside(void)
95 DALI_TEST_EQUALS( Vector2( 1.0f, 2.0f ), ShrinkInside( Vector2( 1.0f, 2.0f ), Vector2( 10.0f, 20.0f ) ), TEST_LOCATION );
96 DALI_TEST_EQUALS( Vector2( 1.0f, 2.0f ), ShrinkInside( Vector2( 10.0f, 20.0f ), Vector2( 1.0f, 2.0f ) ), TEST_LOCATION );
97 DALI_TEST_EQUALS( Vector2( 10.0f, 10.0f ), ShrinkInside( Vector2( 100.0f, 10.0f ), Vector2( 10.0f, 10.0f ) ), TEST_LOCATION );
98 DALI_TEST_EQUALS( Vector2( 10.0f, 5.0f ), ShrinkInside( Vector2( 20.0f, 20.0f ), Vector2( 10.0f, 5.0f ) ), TEST_LOCATION );
99 DALI_TEST_EQUALS( Vector2( 5.0f, 10.0f ), ShrinkInside( Vector2( 20.0f, 20.0f ), Vector2( 5.0f, 10.0f ) ), TEST_LOCATION );
100 DALI_TEST_EQUALS( Vector2( 5.0f, 10.0f ), ShrinkInside( Vector2( 10.0f, 10.0f ), Vector2( 10.0f, 20.0f ) ), TEST_LOCATION );
101 DALI_TEST_EQUALS( Vector2( 10.0f, 5.0f ), ShrinkInside( Vector2( 10.0f, 10.0f ), Vector2( 20.0f, 10.0f ) ), TEST_LOCATION );
108 int UtcDaliVector2Add(void)
110 Vector2 v0(1.0f, 2.0f);
111 Vector2 v1(10.0f, 20.0f);
112 Vector2 r0(11.0f, 22.0f);
115 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
118 DALI_TEST_EQUALS(v0, r0, TEST_LOCATION);
124 int UtcDaliVector2Subtract(void)
126 Vector2 v0(11.0f, 22.0f);
127 Vector2 v1(10.0f, 20.0f);
128 Vector2 r0(1.0f, 2.0f);
131 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
134 DALI_TEST_EQUALS(v0, r0, TEST_LOCATION);
139 int UtcDaliVector2Negate(void)
141 Vector2 v1(10.0f, 20.0f);
142 Vector2 r0(-10.0f, -20.0f);
145 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
151 int UtcDaliVector2Multiply(void)
153 Vector2 v0(2.0f, 3.0f);
154 Vector2 v1(10.0f, 20.0f);
155 Vector2 r0(20.0f, 60.0f);
157 Vector2 v2 = v0 * v1;
158 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
161 DALI_TEST_EQUALS(v0, r0, TEST_LOCATION);
166 int UtcDaliVector2Divide(void)
168 Vector2 v0(1.0f, 1.0f);
169 Vector2 v1(2.0f, 3.0f);
170 Vector2 v2(4.0f, 9.0f);
172 DALI_TEST_EQUALS( v0/v0, v0, TEST_LOCATION);
173 DALI_TEST_EQUALS( v1/v0, v1, TEST_LOCATION);
174 DALI_TEST_EQUALS( v1/v1, v0, TEST_LOCATION);
175 DALI_TEST_EQUALS( v2/v1, v1, TEST_LOCATION);
179 DALI_TEST_EQUALS(v4, v0, TEST_LOCATION);
183 DALI_TEST_EQUALS(v5, v1, TEST_LOCATION);
187 DALI_TEST_EQUALS(v6, v0, TEST_LOCATION);
190 DALI_TEST_EQUALS(v2, v1, TEST_LOCATION);
195 int UtcDaliVector2Scale(void)
197 Vector2 v0(2.0f, 4.0f);
198 const Vector2 r0(20.0f, 40.0f);
199 const Vector2 r1(10.0f, 20.0f);
200 const Vector2 r2( 1.0f, 2.0f);
201 const Vector2 r3(2.0f, 4.0f);
203 Vector2 v2 = v0 * 10.0f;
204 DALI_TEST_EQUALS(v2, r0, TEST_LOCATION);
207 DALI_TEST_EQUALS(v0, r1, TEST_LOCATION);
210 DALI_TEST_EQUALS(v2, r3, TEST_LOCATION);
214 DALI_TEST_EQUALS(v2, r2, TEST_LOCATION);
219 int UtcDaliVector2Equals(void)
221 Vector2 v0(1.0f, 2.0f);
222 Vector2 v1(1.0f, 2.0f);
224 DALI_TEST_CHECK(v0 == v1);
226 Vector2 v2 = Vector2(0.0f, 2.0f);
227 DALI_TEST_CHECK(v0 != v2);
229 v2 = Vector2(1.0f, 0.0f);
230 DALI_TEST_CHECK(v0 != v2);
232 v2 = Vector2(1.0f, 77.0f);
233 DALI_TEST_CHECK(v0 != v2);
235 v2 = Vector2(33.0f, 44.0f);
236 DALI_TEST_CHECK(v0 != v2);
241 int UtcDaliVector2Length(void)
243 Vector2 v(1.0f, 2.0f);
244 DALI_TEST_EQUALS(v.Length(), sqrtf(v.x*v.x + v.y*v.y), 0.001f, TEST_LOCATION);
246 Vector2 v1(0.0f, 0.0f);
247 DALI_TEST_EQUALS(v1.Length(), 0.0f, TEST_LOCATION);
252 int UtcDaliVector2LengthSquared(void)
254 Vector2 v(1.0f, 2.0f);
255 DALI_TEST_EQUALS(v.LengthSquared(), v.x*v.x + v.y*v.y, 0.001f, TEST_LOCATION);
257 Vector2 v1(0.0f, 0.0f);
258 DALI_TEST_EQUALS(v1.LengthSquared(), 0.0f, TEST_LOCATION);
263 int UtcDaliVector2Max(void)
265 Vector2 v0(2.0f, 1.0f);
266 Vector2 v1(1.0f, 2.0f);
268 DALI_TEST_EQUALS(Max(v0, v1), Vector2(2.0f, 2.0f), 0.01f, TEST_LOCATION);
273 int UtcDaliVector2Min(void)
275 Vector2 v0(2.0f, 1.0f);
276 Vector2 v1(1.0f, 2.0f);
278 DALI_TEST_EQUALS(Min(v0, v1), Vector2(1.0f, 1.0f), 0.01f, TEST_LOCATION);
282 int UtcDaliVector2Clamp(void)
284 tet_infoline("Testing Dali::Vector2::Clamp( const Vector2& v, const float& min, const float& max )");
286 Vector2 v0(2.0f, 0.8f);
287 Vector2 v1(-1.0f, 2.0f);
289 DALI_TEST_EQUALS( Clamp( v0, 0.9f, 1.1f ), Vector2(1.1f, 0.9f), 0.01f, TEST_LOCATION );
290 DALI_TEST_EQUALS( Clamp( v1, 1.0f, 1.0f ), Vector2(1.0f, 1.0f), 0.01f, TEST_LOCATION );
291 DALI_TEST_EQUALS( Clamp( v1, 0.0f, 3.0f ), Vector2(0.0f, 2.0f), 0.01f, TEST_LOCATION );
295 int UtcDaliVector2ClampVector2(void)
297 tet_infoline("Testing Dali::Vector2::Clamp( const Vector2& v, const Vector2& min, const Vector2& max )");
299 Vector2 v0(2.0f, 0.8f);
300 Vector2 v1(-1.0f, 2.0f);
301 Vector2 v2(10.0f, 5.0f);
302 Vector2 v3(8.0f, 10.0f);
303 Vector2 v4(4.9f, 5.1f);
304 Vector2 min(1.0f, 4.0f);
305 Vector2 max(9.0f, 6.0f);
307 v0.Clamp( min, max );
308 v1.Clamp( min, max );
309 v2.Clamp( min, max );
310 v3.Clamp( min, max );
311 v4.Clamp( min, max );
313 DALI_TEST_EQUALS( v0, Vector2(2.0f, 4.0f), 0.01f, TEST_LOCATION );
314 DALI_TEST_EQUALS( v1, Vector2(1.0f, 4.0f), 0.01f, TEST_LOCATION );
315 DALI_TEST_EQUALS( v2, Vector2(9.0f, 5.0f), 0.01f, TEST_LOCATION );
316 DALI_TEST_EQUALS( v3, Vector2(8.0f, 6.0f), 0.01f, TEST_LOCATION );
317 DALI_TEST_EQUALS( v4, Vector2(4.9f, 5.1f), 0.01f, TEST_LOCATION );
322 int UtcDaliVector2Normalize(void)
324 for (float f=0.0f; f<6.0f; f+=1.0f)
326 Vector2 v(cosf(f)*10.0f, cosf(f+1.0f)*10.0f);
328 DALI_TEST_EQUALS(v.LengthSquared(), 1.0f, 0.001f, TEST_LOCATION);
331 Vector4 v(0.0f, 0.0f, 0.0f, 1.0f);
333 DALI_TEST_EQUALS(v.LengthSquared(), 0.0f, 0.00001f, TEST_LOCATION);
337 int UtcDaliVector2OperatorSubscript(void)
339 tet_infoline("Testing Dali::Vector2::operator[]()");
341 Vector2 testVector(1.0f, 2.0f);
343 // read array subscripts
344 DALI_TEST_EQUALS( testVector[0], 1.0f, TEST_LOCATION );
345 DALI_TEST_EQUALS( testVector[1], 2.0f, TEST_LOCATION );
347 // write array subscripts/read struct memebers
348 testVector[0] = 3.0f;
349 testVector[1] = 4.0f;
351 DALI_TEST_EQUALS( testVector.x, 3.0f, TEST_LOCATION );
352 DALI_TEST_EQUALS( testVector.y, 4.0f, TEST_LOCATION );
354 // write struct members/read array subscripts
358 const Vector2 testVector2(3.0f, 4.0f);
359 const float& x = testVector2[0];
360 const float& y = testVector2[1];
361 DALI_TEST_EQUALS( x, 3.0f, TEST_LOCATION );
362 DALI_TEST_EQUALS( y, 4.0f, TEST_LOCATION );
367 float& w = testVector[4];
369 tet_result(TET_FAIL);
371 catch (Dali::DaliException& e)
373 tet_printf("Assertion %s failed at %s\n", e.mCondition.c_str(), e.mLocation.c_str());
374 DALI_TEST_ASSERT( e, "index < 2", TEST_LOCATION);
379 const float& w = testVector2[4];
381 tet_result(TET_FAIL);
383 catch (Dali::DaliException& e)
385 tet_printf("Assertion %s failed at %s\n", e.mCondition.c_str(), e.mLocation.c_str());
386 DALI_TEST_ASSERT( e, "index < 2" , TEST_LOCATION);
393 int UtcDaliVector2OStreamOperator(void)
395 std::ostringstream oss;
397 Vector2 vector(1, 2);
401 std::string expectedOutput = "[1, 2]";
403 DALI_TEST_EQUALS( oss.str(), expectedOutput, TEST_LOCATION);