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.
21 #include <dali/public-api/dali-core.h>
22 #include <dali-test-suite-utils.h>
32 CheckCopyCtorP(Property::Value value)
34 Property::Value copy( value );
35 DALI_TEST_CHECK( value.Get<T>() == copy.Get<T>() );
39 } // unnamed namespace
41 void utc_dali_property_value_startup(void)
43 test_return_value = TET_UNDEF;
46 void utc_dali_property_value_cleanup(void)
48 test_return_value = TET_PASS;
52 int UtcDaliPropertyValueConstructorsNoneP(void)
54 Property::Value value;
56 DALI_TEST_CHECK( value.GetType() == Property::NONE );
61 int UtcDaliPropertyValueConstructorsNoneTypeP(void)
63 Property::Value value( Property::NONE );
65 DALI_TEST_CHECK( value.GetType() == Property::NONE );
70 int UtcDaliPropertyValueConstructorsBoolP(void)
72 Property::Value value(true);
74 DALI_TEST_CHECK( value.GetType() == Property::BOOLEAN );
75 DALI_TEST_CHECK( value.Get<bool>() == true );
80 int UtcDaliPropertyValueConstructorBoolTypeP(void)
82 Property::Value value(Property::BOOLEAN);
84 DALI_TEST_CHECK( value.GetType() == Property::BOOLEAN );
85 DALI_TEST_CHECK( value.Get<bool>() == false );
90 int UtcDaliPropertyValueConstructorsFloatP(void)
92 Property::Value value(2.f);
94 DALI_TEST_CHECK( value.GetType() == Property::FLOAT );
95 DALI_TEST_CHECK( value.Get<float>() == 2.f );
100 int UtcDaliPropertyValueConstructorsFloatTypeP(void)
102 Property::Value value(Property::FLOAT);
104 DALI_TEST_CHECK( value.GetType() == Property::FLOAT );
105 DALI_TEST_CHECK( value.Get<float>() == 0.f );
110 int UtcDaliPropertyValueConstructorsIntP(void)
112 Property::Value value(1);
114 DALI_TEST_CHECK( value.GetType() == Property::INTEGER );
115 DALI_TEST_CHECK( value.Get<int>() == 1 );
120 int UtcDaliPropertyValueConstructorsIntTypeP(void)
122 Property::Value value(Property::INTEGER);
124 DALI_TEST_CHECK( value.GetType() == Property::INTEGER );
125 DALI_TEST_CHECK( value.Get<int>() == 0 );
130 int UtcDaliPropertyValueConstructorsVector2P(void)
133 Property::Value value(v);
135 DALI_TEST_CHECK( value.GetType() == Property::VECTOR2 );
136 DALI_TEST_CHECK( value.Get<Vector2>() == v );
141 int UtcDaliPropertyValueConstructorsVector2TypeP(void)
143 Property::Value value( Property::VECTOR2 );
145 DALI_TEST_CHECK( value.GetType() == Property::VECTOR2 );
146 DALI_TEST_CHECK( value.Get<Vector2>() == Vector2::ZERO );
151 int UtcDaliPropertyValueConstructorsVector3P(void)
153 Vector3 v(1.f,2.f,3.f);
154 Property::Value value(v);
156 DALI_TEST_CHECK( value.GetType() == Property::VECTOR3 );
157 DALI_TEST_CHECK( value.Get<Vector3>() == v );
162 int UtcDaliPropertyValueConstructorsVector3TypeP(void)
164 Property::Value value( Property::VECTOR3 );
166 DALI_TEST_CHECK( value.GetType() == Property::VECTOR3 );
167 DALI_TEST_CHECK( value.Get<Vector3>() == Vector3() );
172 int UtcDaliPropertyValueConstructorsVector4P(void)
174 Vector4 v(1.f,1.f,1.f,0.9f);
175 Property::Value value(v);
177 DALI_TEST_CHECK( value.GetType() == Property::VECTOR4 );
178 DALI_TEST_CHECK( value.Get<Vector4>() == v );
183 int UtcDaliPropertyValueConstructorsVector4TypeP(void)
185 Property::Value value( Property::VECTOR4 );
187 DALI_TEST_CHECK( value.GetType() == Property::VECTOR4 );
188 DALI_TEST_CHECK( value.Get<Vector4>() == Vector4() );
193 int UtcDaliPropertyValueConstructorsMatrix3P(void)
195 Matrix3 v(1.0,1.0,1.0, 1.0,1.0,1.0, 1.0,1.0,1.0);
196 Property::Value value(v);
198 DALI_TEST_CHECK( value.GetType() == Property::MATRIX3 );
199 DALI_TEST_CHECK( value.Get<Matrix3>() == v );
204 int UtcDaliPropertyValueConstructorsMatrix3TypeP(void)
206 Property::Value value( Property::MATRIX3 );
208 DALI_TEST_CHECK( value.GetType() == Property::MATRIX3 );
209 DALI_TEST_CHECK( value.Get<Matrix3>() == Matrix3() );
214 int UtcDaliPropertyValueConstructorsMatrixP(void)
216 float a[] = {1.0,1.0,1.0,1.0, 1.0,1.0,1.0,1.0, 1.0,1.0,1.0,1.0, 1.0,1.0,1.0,1.0};
218 Property::Value value(v);
220 DALI_TEST_CHECK( value.GetType() == Property::MATRIX );
221 DALI_TEST_CHECK( value.Get<Matrix>() == v );
226 int UtcDaliPropertyValueConstructorsMatrixTypeP(void)
228 Property::Value value( Property::MATRIX );
230 DALI_TEST_CHECK( value.GetType() == Property::MATRIX );
231 DALI_TEST_CHECK( value.Get<Matrix>() == Matrix() );
236 int UtcDaliPropertyValueConstructorsRectP(void)
238 Rect<int> v(1.0,1.0,1.0,1.0);
239 Property::Value value(v);
241 DALI_TEST_EQUALS( value.GetType(), Property::RECTANGLE, TEST_LOCATION );
242 DALI_TEST_CHECK( value.Get<Rect<int> >() == v );
247 int UtcDaliPropertyValueConstructorsRectTypeP(void)
249 Property::Value value( Property::RECTANGLE );
251 DALI_TEST_CHECK( value.GetType() == Property::RECTANGLE );
252 DALI_TEST_CHECK( value.Get<Rect<int> >() == Rect<int>(0,0,0,0) );
257 int UtcDaliPropertyValueConstructorsAngleAxisP(void)
259 AngleAxis input( Dali::ANGLE_90, Vector3::XAXIS );
260 Property::Value value( input );
262 DALI_TEST_CHECK( value.GetType() == Property::ROTATION );
263 AngleAxis result = value.Get<AngleAxis>();
264 DALI_TEST_EQUALS( result.angle, input.angle, TEST_LOCATION );
265 DALI_TEST_EQUALS( result.axis, input.axis, TEST_LOCATION );
270 int UtcDaliPropertyValueConstructorsQuaternionP(void)
272 Quaternion v( Radian( Math::PI ), Vector3::ZAXIS );
273 Property::Value value(v);
275 DALI_TEST_CHECK( value.GetType() == Property::ROTATION );
276 DALI_TEST_EQUALS( v, value.Get<Quaternion>(), 0.001, TEST_LOCATION);
281 int UtcDaliPropertyValueConstructorsRotationTypeP(void)
283 Property::Value value( Property::ROTATION );
285 DALI_TEST_CHECK( value.GetType() == Property::ROTATION );
286 AngleAxis result = value.Get<AngleAxis>();
287 DALI_TEST_EQUALS( result.angle, Radian(0.f), TEST_LOCATION );
288 DALI_TEST_EQUALS( result.axis, Vector3::ZERO, TEST_LOCATION ); // identity quaternion returns a zero angle-axis
293 int UtcDaliPropertyValueConstructorsStringP(void)
296 Property::Value value(v);
298 DALI_TEST_CHECK( value.GetType() == Property::STRING );
299 DALI_TEST_CHECK( value.Get<std::string>() == v );
304 int UtcDaliPropertyValueConstructorsStringTypeP(void)
306 Property::Value value( Property::STRING );
308 DALI_TEST_CHECK( value.GetType() == Property::STRING );
309 DALI_TEST_CHECK( value.Get<std::string>() == std::string() );
314 int UtcDaliPropertyValueConstructorsArrayP(void)
317 Property::Value value( foo );
319 DALI_TEST_CHECK( value.GetType() == Property::ARRAY );
320 DALI_TEST_CHECK( value.Get<Property::Array>().Count() == 0 );
325 int UtcDaliPropertyValueConstructorsArray2P(void)
328 foo.PushBack( Property::Value() );
329 Property::Value value( foo );
331 DALI_TEST_CHECK( value.GetType() == Property::ARRAY );
332 DALI_TEST_CHECK( value.Get<Property::Array>().Count() == 1 );
337 int UtcDaliPropertyValueConstructorsArrayTypeP(void)
339 Property::Value value(Property::ARRAY);
341 DALI_TEST_CHECK( value.GetType() == Property::ARRAY );
342 DALI_TEST_CHECK( value.Get<Property::Array>().Count() == 0 );
347 int UtcDaliPropertyValueConstructorsMapP(void)
350 Property::Value value( map );
352 DALI_TEST_CHECK( value.GetType() == Property::MAP );
353 DALI_TEST_CHECK( value.Get<Property::Map>().Count() == 0 );
358 int UtcDaliPropertyValueConstructorsMap2P(void)
361 map.Insert( "", "" );
362 Property::Value value( map );
364 DALI_TEST_CHECK( value.GetType() == Property::MAP );
365 DALI_TEST_CHECK( value.Get<Property::Map>().Count() == 1 );
370 int UtcDaliPropertyValueConstructorsMapTypeP(void)
372 Property::Value value(Property::MAP);
374 DALI_TEST_CHECK( value.GetType() == Property::MAP );
375 DALI_TEST_CHECK( value.Get<Property::Map>().Count() == 0 );
380 int UtcDaliPropertyValueCopyConstructorP(void)
382 Property::Value value;
383 Property::Value value2( value );
384 DALI_TEST_EQUALS( value.GetType(), value2.GetType(), TEST_LOCATION );
385 DALI_TEST_EQUALS( value.GetMap(), value2.GetMap(), TEST_LOCATION );
386 DALI_TEST_EQUALS( value.GetArray(), value2.GetArray(), TEST_LOCATION );
390 int UtcDaliPropertyValueCopyConstructorBoolP(void)
392 CheckCopyCtorP<bool> check(true);
396 int UtcDaliPropertyValueCopyConstructorFloatP(void)
398 CheckCopyCtorP<float> check(1.f);
402 int UtcDaliPropertyValueCopyConstructorIntP(void)
404 CheckCopyCtorP<int> check(1);
408 int UtcDaliPropertyValueCopyConstructoVector2P(void)
410 CheckCopyCtorP<Vector2> check( Vector2(2,1) );
414 int UtcDaliPropertyValueCopyConstructorVector3P(void)
416 CheckCopyCtorP<Vector3> check( Vector3(3.f,2.f,1.f) );
420 int UtcDaliPropertyValueCopyConstructorVector4P(void)
422 CheckCopyCtorP<Vector3> check( Vector4(4.f,3.f,2.f,1.f) );
426 int UtcDaliPropertyValueCopyConstructorMatrix3P(void)
428 CheckCopyCtorP<Matrix3> check( Matrix3::IDENTITY );
432 int UtcDaliPropertyValueCopyConstructorMatrixP(void)
434 CheckCopyCtorP<Matrix> check(Matrix::IDENTITY);
438 int UtcDaliPropertyValueCopyConstructorRectP(void)
440 CheckCopyCtorP<Rect<int> > check( Rect<int>(1.0,1.0,1.0,1.0) );
444 int UtcDaliPropertyValueCopyConstructorAngleAxisP(void)
446 CheckCopyCtorP<AngleAxis> check( AngleAxis(Degree(1.0), Vector3(1.0,1.0,1.0)) );
450 int UtcDaliPropertyValueCopyConstructorQuaternionP(void)
452 CheckCopyCtorP<Quaternion> check( Quaternion( Vector4(1.0, 1.0, 1.0, 1.0) ) );
456 int UtcDaliPropertyValueCopyConstructorStringP(void)
458 CheckCopyCtorP<std::string> check( std::string("1") );
462 int UtcDaliPropertyValueCopyConstructorArrayP(void)
464 Property::Value value1(Property::ARRAY);
465 Property::Array* array= value1.GetArray();
466 array->PushBack(Property::Value(1));
468 Property::Value value2( value1 );
469 DALI_TEST_EQUALS( value1.GetType(), value2.GetType(), TEST_LOCATION );
470 DALI_TEST_EQUALS( value1.GetArray()->Count(), value2.GetArray()->Count(), TEST_LOCATION );
475 int UtcDaliPropertyValueCopyConstructorMapP(void)
477 Property::Value value1(Property::MAP);
478 Property::Map* map = value1.GetMap();
479 (*map)["1"] = Property::Value(1);
481 Property::Value value2( value1 );
482 DALI_TEST_EQUALS( value1.GetType(), value2.GetType(), TEST_LOCATION );
483 DALI_TEST_EQUALS( value1.GetMap()->Count(), value2.GetMap()->Count(), TEST_LOCATION );
484 DALI_TEST_EQUALS( value1.GetMap()->GetKey( 0 ), value2.GetMap()->GetKey( 0 ), TEST_LOCATION );
489 int UtcDaliPropertyValueAssignmentSelfP(void)
491 Property::Value value;
492 Property::Value* self = &value;
494 DALI_TEST_EQUALS( value.GetType(), Property::NONE, TEST_LOCATION );
495 DALI_TEST_CHECK( value.GetMap() == NULL );
496 DALI_TEST_CHECK( value.GetArray() == NULL );
500 int UtcDaliPropertyValueAssignmentOperatorNoneP(void)
502 Property::Value value;
503 value = Property::Value(); // type match
504 DALI_TEST_EQUALS( value.GetType(), Property::NONE, TEST_LOCATION );
505 Property::Value copy( false );
506 copy = value; // type mismatch
507 DALI_TEST_EQUALS( value.GetType(), Property::NONE, TEST_LOCATION );
511 int UtcDaliPropertyValueAssignmentOperatorBoolP(void)
513 Property::Value value;
514 value = Property::Value(true); // type mismatch
515 DALI_TEST_CHECK( true == value.Get<bool>() );
516 Property::Value copy( false );
517 copy = value; // type match
518 DALI_TEST_CHECK( true == copy.Get<bool>() );
522 int UtcDaliPropertyValueAssignmentOperatorIntP(void)
524 Property::Value value;
525 value = Property::Value(10); // type mismatch
526 DALI_TEST_CHECK( 10 == value.Get<int>() );
527 Property::Value copy( 99 );
528 copy = value; // type match
529 DALI_TEST_CHECK( 10 == copy.Get<int>() );
533 int UtcDaliPropertyValueAssignmentOperatorFloatP(void)
535 Property::Value value;
536 value = Property::Value(10.f); // mismatch
537 DALI_TEST_CHECK( Dali::Equals(10.f, value.Get<float>() ) );
538 Property::Value copy(321.f);
539 copy = value; // match
540 DALI_TEST_CHECK( Dali::Equals(10.f, copy.Get<float>() ) );
544 int UtcDaliPropertyValueAssignmentOperatorVector2P(void)
546 Property::Value value;
547 value = Property::Value( Vector2(1,2) ); // mismatch
548 DALI_TEST_CHECK( Vector2(1,2) == value.Get<Vector2>() );
549 Property::Value copy( Property::VECTOR2 );
550 copy = value; // match
551 DALI_TEST_CHECK( Vector2(1,2) == copy.Get<Vector2>() );
555 int UtcDaliPropertyValueAssignmentOperatorVector3P(void)
557 Property::Value value;
558 value = Property::Value( Vector3(1.f,2.f,3.f) ); // mismatch
559 DALI_TEST_CHECK( Vector3(1.f,2.f,3.f) == value.Get<Vector3>() );
560 Property::Value copy( Property::VECTOR3 );
561 copy = value; // match
562 DALI_TEST_CHECK( Vector3(1.f,2.f,3.f) == copy.Get<Vector3>() );
566 int UtcDaliPropertyValueAssignmentOperatorVector4P(void)
568 Property::Value value;
569 value = Property::Value( Vector4(1,2,3,4) ); // mismatch
570 DALI_TEST_CHECK( Vector4(1,2,3,4) == value.Get<Vector4>() );
571 Property::Value copy( Vector4(0,1,2,3) );
572 copy = value; // match
573 DALI_TEST_CHECK( Vector4(1,2,3,4) == copy.Get<Vector4>() );
577 int UtcDaliPropertyValueAssignmentOperatorMatrix3P(void)
579 Property::Value value;
580 value = Property::Value( Matrix3::IDENTITY ); // mismatch
581 DALI_TEST_CHECK( Matrix3::IDENTITY == value.Get<Matrix3>() );
582 Property::Value copy( Property::MATRIX3 );
583 copy = value; // match
584 DALI_TEST_CHECK( Matrix3::IDENTITY == copy.Get<Matrix3>() );
588 int UtcDaliPropertyValueAssignmentOperatorMatrixP(void)
590 Property::Value value;
591 value = Property::Value( Matrix::IDENTITY ); // mismatch
592 DALI_TEST_CHECK( Matrix::IDENTITY == value.Get<Matrix>() );
594 Property::Value copy( foo );
595 copy = value; // match
596 DALI_TEST_CHECK( Matrix::IDENTITY == copy.Get<Matrix>() );
600 int UtcDaliPropertyValueAssignmentOperatorRectP(void)
602 Property::Value value;
603 typedef Dali::Rect<int> Rectangle;
604 value = Property::Value( Rectangle(4,3,2,1) ); // mismatch
605 DALI_TEST_CHECK( Rectangle(4,3,2,1) == value.Get<Rectangle>() );
606 Property::Value copy( Property::RECTANGLE );
607 copy = value; // match
610 DALI_TEST_CHECK( Rectangle(4,3,2,1) == copyRect );
614 int UtcDaliPropertyValueAssignmentOperatorQuaternionP(void)
616 Property::Value value;
617 Quaternion result( Radian( Math::PI_2 ), Vector3::YAXIS );
618 value = Property::Value( result );
620 DALI_TEST_EQUALS( value.Get<Quaternion>(), result, 0.001, TEST_LOCATION );
622 Property::Value copy( Property::ROTATION );
623 copy = value; // match
624 DALI_TEST_EQUALS( copy.Get<Quaternion>(), result, 0.001, TEST_LOCATION );
629 int UtcDaliPropertyValueAssignmentOperatorAngleAxisP(void)
631 Property::Value value;
632 value = Property::Value( AngleAxis( Radian(Math::PI_2), Vector3::XAXIS ) ); // mismatch
633 DALI_TEST_EQUALS( value.Get<AngleAxis>().axis, Vector3::XAXIS, TEST_LOCATION );
634 DALI_TEST_EQUALS( value.Get<AngleAxis>().angle, Radian(Math::PI_2), TEST_LOCATION );
635 Property::Value copy( Property::ROTATION );
636 copy = value; // match
637 DALI_TEST_EQUALS( value.Get<AngleAxis>().axis, copy.Get<AngleAxis>().axis, TEST_LOCATION );
638 DALI_TEST_EQUALS( value.Get<AngleAxis>().angle, copy.Get<AngleAxis>().angle, TEST_LOCATION );
642 int UtcDaliPropertyValueAssignmentOperatorStringP(void)
644 Property::Value value;
645 value = Property::Value("yes"); // mismatch
646 DALI_TEST_CHECK( "yes" == value.Get<std::string>() );
647 Property::Value copy("no");
648 copy = value; // match
649 DALI_TEST_CHECK( "yes" == copy.Get<std::string>() );
653 int UtcDaliPropertyValueAssignmentOperatorArrayP(void)
655 Property::Value value;
656 value = Property::Value(Property::ARRAY); // mismatch
657 value.GetArray()->PushBack(10);
658 DALI_TEST_CHECK( value.GetArray() );
659 Property::Value copy(Property::ARRAY);
660 copy = value; // match
661 Property::Array array;
664 array[0].Get( getItem );
665 DALI_TEST_CHECK( getItem == 10 );
669 int UtcDaliPropertyValueAssignmentOperatorMapP(void)
671 Property::Value value;
672 value = Property::Value(Property::MAP); // mismatch
673 value.GetMap()->Insert("key", "value");
674 Property::Value copy( Property::MAP ); // match
678 DALI_TEST_CHECK( map.GetKey(0) == "key" );
682 int UtcDaliPropertyValueGetTypeP(void)
684 Property::Value value;
685 DALI_TEST_CHECK( value.GetType() == Property::NONE );
689 int UtcDaliPropertyValueGetBoolP(void)
691 Property::Value value(true);
692 bool boolean( false );
693 DALI_TEST_CHECK( value.Get( boolean ) == true );
694 DALI_TEST_CHECK( value.Get<bool>() == true );
696 DALI_TEST_CHECK( value.Get( string ) == false );
697 value = Property::Value(1.f);
698 DALI_TEST_CHECK( value.Get<float>() == 1.f );
702 int UtcDaliPropertyValueGetBoolN(void)
704 Property::Value value;
705 DALI_TEST_CHECK( value.Get<bool>() == false );
706 bool boolean( false );
707 DALI_TEST_CHECK( value.Get( boolean ) == false );
711 int UtcDaliPropertyValueGetFloatP(void)
713 Property::Value value(1.1f);
715 DALI_TEST_EQUALS( 1.1f, value.Get<float>(), TEST_LOCATION );
716 DALI_TEST_EQUALS( true, value.Get( flow ), TEST_LOCATION );
717 DALI_TEST_EQUALS( 1.1f, flow, TEST_LOCATION );
719 Property::Value intValue(100);
720 DALI_TEST_EQUALS( 100.f, intValue.Get<float>(), TEST_LOCATION );
721 DALI_TEST_EQUALS( true, intValue.Get( flow ), TEST_LOCATION );
722 DALI_TEST_EQUALS( 100.f, flow, TEST_LOCATION );
727 int UtcDaliPropertyValueGetFloatN(void)
729 Property::Value value;
730 float result( 1.0f );
731 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
732 DALI_TEST_EQUALS( 1.0f, result, TEST_LOCATION ); // result is not modified
733 Property::Value value2( "" );
734 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
735 DALI_TEST_EQUALS( 1.0f, result, TEST_LOCATION ); // result is not modified
739 int UtcDaliPropertyValueGetIntP(void)
741 Property::Value value(123);
743 DALI_TEST_EQUALS( 123, value.Get<int>(), TEST_LOCATION );
744 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
745 DALI_TEST_EQUALS( 123, result, TEST_LOCATION );
747 Property::Value floatValue(21.f);
748 DALI_TEST_EQUALS( 21, floatValue.Get<int>(), TEST_LOCATION );
749 DALI_TEST_EQUALS( true, floatValue.Get( result ), TEST_LOCATION );
750 DALI_TEST_EQUALS( 21, result, TEST_LOCATION );
755 int UtcDaliPropertyValueGetIntN(void)
757 Property::Value value;
759 DALI_TEST_EQUALS( 0, value.Get<int>(), TEST_LOCATION );
760 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
761 DALI_TEST_EQUALS( 10, result, TEST_LOCATION ); // result is not modified
762 Property::Value value2("");
763 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
764 DALI_TEST_EQUALS( 10, result, TEST_LOCATION ); // result is not modified
768 int UtcDaliPropertyValueGetRectP(void)
770 Property::Value value( Rect<int>(1,2,3,4) );
771 Rect<int> result(4,3,2,1);
772 DALI_TEST_EQUALS( Rect<int>(1,2,3,4), value.Get< Rect<int> >(), TEST_LOCATION );
773 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
774 DALI_TEST_EQUALS( Rect<int>(1,2,3,4), result, TEST_LOCATION );
778 int UtcDaliPropertyValueGetRectN(void)
780 Property::Value value;
781 Rect<int> result(4,3,2,1);
782 DALI_TEST_EQUALS( Rect<int>(0,0,0,0), value.Get< Rect<int> >(), TEST_LOCATION );
783 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
784 DALI_TEST_EQUALS( Rect<int>(4,3,2,1), result, TEST_LOCATION );
785 Property::Value value2("");
786 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
787 DALI_TEST_EQUALS( Rect<int>(4,3,2,1), result, TEST_LOCATION );
791 int UtcDaliPropertyValueGetVector2P(void)
793 Property::Value value( Vector2(1.0f,2.0f) );
795 DALI_TEST_EQUALS( Vector2(1.0f,2.0f), value.Get< Vector2 >(), TEST_LOCATION );
796 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
797 DALI_TEST_EQUALS( Vector2(1.0f,2.0f), result, TEST_LOCATION );
801 int UtcDaliPropertyValueGetVector2fromVector3P(void)
803 Property::Value value( Vector3(1.f,2.f,3.f) );
805 DALI_TEST_EQUALS( Vector2(1.0f,2.0f), value.Get< Vector2 >(), TEST_LOCATION );
806 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
807 DALI_TEST_EQUALS( Vector2(1.0f,2.0f), result, TEST_LOCATION );
811 int UtcDaliPropertyValueGetVector2fromVector4P(void)
813 Property::Value value( Vector4(1.f,2.f,3.f,4.f) );
815 DALI_TEST_EQUALS( Vector2(1.0f,2.0f), value.Get< Vector2 >(), TEST_LOCATION );
816 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
817 DALI_TEST_EQUALS( Vector2(1.0f,2.0f), result, TEST_LOCATION );
821 int UtcDaliPropertyValueGetVector2N(void)
823 Property::Value value;
825 DALI_TEST_EQUALS( Vector2(0.f,0.f), value.Get< Vector2 >(), TEST_LOCATION );
826 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
827 DALI_TEST_EQUALS( Vector2(), result, TEST_LOCATION );
828 Property::Value value2("");
829 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
830 DALI_TEST_EQUALS( Vector2(), result, TEST_LOCATION );
834 int UtcDaliPropertyValueGetVector3P(void)
836 Property::Value value( Vector3(1.0f,2.0f,-1.f) );
838 DALI_TEST_EQUALS( Vector3(1.0f,2.0f,-1.f), value.Get< Vector3 >(), TEST_LOCATION );
839 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
840 DALI_TEST_EQUALS( Vector3(1.0f,2.0f,-1.f), result, TEST_LOCATION );
844 int UtcDaliPropertyValueGetVector3FromVector2P(void)
846 Property::Value value( Vector2(1.0f,2.0f) );
847 Vector3 result(99.f,88.f,77.f);
848 DALI_TEST_EQUALS( Vector3(1.0f,2.0f,0.f), value.Get< Vector3 >(), TEST_LOCATION );
849 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
850 DALI_TEST_EQUALS( Vector3(1.0f,2.0f,0.f), result, TEST_LOCATION );
854 int UtcDaliPropertyValueGetVector3FromVector4P(void)
856 Property::Value value( Vector4(4.f,3.f,2.f,1.f) );
858 DALI_TEST_EQUALS( Vector3(4.f,3.f,2.f), value.Get< Vector3 >(), TEST_LOCATION );
859 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
860 DALI_TEST_EQUALS( Vector3(4.f,3.f,2.f), result, TEST_LOCATION );
864 int UtcDaliPropertyValueGetVector3N(void)
866 Property::Value value;
868 DALI_TEST_EQUALS( Vector3(0.f,0.f,0.f), value.Get< Vector3 >(), TEST_LOCATION );
869 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
870 DALI_TEST_EQUALS( Vector3(), result, TEST_LOCATION );
871 Property::Value value2("");
872 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
873 DALI_TEST_EQUALS( Vector3(), result, TEST_LOCATION );
877 int UtcDaliPropertyValueGetVector4P(void)
879 Property::Value value( Vector4(1.f,2.f,-1.f,-3.f) );
881 DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,-3.f), value.Get< Vector4 >(), TEST_LOCATION );
882 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
883 DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,-3.f), result, TEST_LOCATION );
887 int UtcDaliPropertyValueGetVector4FromVector2P(void)
889 Property::Value value( Vector2(-1.f,-3.f) );
890 Vector4 result(99.f,88.f,77.f,66.f);
891 DALI_TEST_EQUALS( Vector4(-1.f,-3.f,0.f,0.f), value.Get< Vector4 >(), TEST_LOCATION );
892 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
893 DALI_TEST_EQUALS( Vector4(-1.f,-3.f,0.f,0.f), result, TEST_LOCATION );
897 int UtcDaliPropertyValueGetVector4FromVector3P(void)
899 Property::Value value( Vector3(1.f,2.f,-1.f) );
900 Vector4 result(99.f,88.f,77.f,66.f);
901 DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,0.f), value.Get< Vector4 >(), TEST_LOCATION );
902 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
903 DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,0.f), result, TEST_LOCATION );
907 int UtcDaliPropertyValueGetVector4N(void)
909 Property::Value value;
911 DALI_TEST_EQUALS( Vector4(0.f,0.f,0.f,0.f), value.Get< Vector4 >(), TEST_LOCATION );
912 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
913 DALI_TEST_EQUALS( Vector4(), result, TEST_LOCATION );
914 Property::Value value2("");
915 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
916 DALI_TEST_EQUALS( Vector4(), result, TEST_LOCATION );
920 int UtcDaliPropertyValueGetMatrix3P(void)
922 Property::Value value( Matrix3(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f) );
924 DALI_TEST_EQUALS( Matrix3(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f), value.Get< Matrix3 >(), TEST_LOCATION );
925 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
926 DALI_TEST_EQUALS( Matrix3(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f), result, TEST_LOCATION );
930 int UtcDaliPropertyValueGetMatrix3N(void)
932 Property::Value value;
933 Matrix3 result(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f);
934 DALI_TEST_EQUALS( Matrix3(), value.Get< Matrix3 >(), TEST_LOCATION );
935 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
936 DALI_TEST_EQUALS( Matrix3(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f), result, TEST_LOCATION );
937 Property::Value value2("");
938 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
939 DALI_TEST_EQUALS( Matrix3(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f), result, TEST_LOCATION );
943 int UtcDaliPropertyValueGetMatrixP(void)
945 float matrixValues[16] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };
946 Matrix input( matrixValues );
947 Property::Value value( input );
949 DALI_TEST_EQUALS( input, value.Get< Matrix >(), TEST_LOCATION );
950 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
951 DALI_TEST_EQUALS( input, result, TEST_LOCATION );
955 int UtcDaliPropertyValueGetMatrixN(void)
957 Property::Value value;
958 Matrix result( Matrix::IDENTITY );
959 DALI_TEST_EQUALS( Matrix(), value.Get< Matrix >(), TEST_LOCATION );
960 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
961 DALI_TEST_EQUALS( Matrix::IDENTITY, result, TEST_LOCATION );
963 Property::Value value2("");
964 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
965 DALI_TEST_EQUALS( Matrix::IDENTITY, result, TEST_LOCATION );
969 int UtcDaliPropertyValueGetAngleAxisP(void)
971 AngleAxis input( Dali::ANGLE_90, Vector3::XAXIS );
972 Property::Value value( input );
973 AngleAxis result = value.Get<AngleAxis>();
974 DALI_TEST_EQUALS( input.angle, result.angle, TEST_LOCATION );
975 DALI_TEST_EQUALS( input.axis, result.axis, TEST_LOCATION );
977 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
978 DALI_TEST_EQUALS( input, result, TEST_LOCATION );
982 int UtcDaliPropertyValueGetAngleAxisN(void)
984 Property::Value value;
985 AngleAxis b = value.Get<AngleAxis>();
987 DALI_TEST_EQUALS( (Radian)0.f, b.angle, TEST_LOCATION );
988 DALI_TEST_EQUALS( Vector3::ZERO, b.axis, TEST_LOCATION );
989 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
990 DALI_TEST_EQUALS( AngleAxis(), result, TEST_LOCATION );
992 Property::Value value2("");
993 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
994 DALI_TEST_EQUALS( AngleAxis(), result, TEST_LOCATION );
998 int UtcDaliPropertyValueGetQuaternionP(void)
1000 Vector3 axis(1, 1, 0);
1003 Quaternion result( Radian( 1.f ), axis );
1004 Property::Value value( result );
1006 DALI_TEST_EQUALS( result, value.Get< Quaternion >(), TEST_LOCATION );
1008 DALI_TEST_EQUALS( true, value.Get( test2 ), TEST_LOCATION );
1012 int UtcDaliPropertyValueGetQuaternionN(void)
1014 Property::Value value;
1015 Vector3 axis(1, 1, 0);
1017 Quaternion result( Radian( 1.f ), axis );
1018 Quaternion test(result);
1020 DALI_TEST_EQUALS( Quaternion(), value.Get< Quaternion >(), TEST_LOCATION );
1021 DALI_TEST_EQUALS( false, value.Get( test ), TEST_LOCATION );
1022 DALI_TEST_EQUALS( test, result, TEST_LOCATION );
1024 Property::Value value2("");
1025 DALI_TEST_EQUALS( false, value2.Get( test ), TEST_LOCATION );
1026 DALI_TEST_EQUALS( test, result, TEST_LOCATION );
1030 int UtcDaliPropertyValueGetStringP(void)
1032 Property::Value value( std::string("hello") );
1034 DALI_TEST_EQUALS( std::string("hello"), value.Get< std::string >(), TEST_LOCATION );
1035 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1036 DALI_TEST_EQUALS( std::string("hello"), result, TEST_LOCATION );
1038 Property::Value value2( "C hi!" );
1039 DALI_TEST_EQUALS( "C hi!", value2.Get< std::string >(), TEST_LOCATION );
1040 DALI_TEST_EQUALS( true, value2.Get( result ), TEST_LOCATION );
1041 DALI_TEST_EQUALS( "C hi!", result, TEST_LOCATION );
1045 int UtcDaliPropertyValueGetStringN(void)
1047 Property::Value value;
1048 std::string result("doesn't change");
1049 DALI_TEST_EQUALS( std::string(), value.Get< std::string >(), TEST_LOCATION );
1050 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1051 DALI_TEST_EQUALS( "doesn't change", result, TEST_LOCATION );
1053 Property::Value value2(10);
1054 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1055 DALI_TEST_EQUALS( "doesn't change", result, TEST_LOCATION );
1057 Property::Value value3((char*)NULL);
1058 DALI_TEST_EQUALS( true, value3.Get( result ), TEST_LOCATION );
1059 DALI_TEST_EQUALS( std::string(), result, TEST_LOCATION );
1063 int UtcDaliPropertyValueGetArrayP(void)
1065 Property::Value value( Property::ARRAY );
1066 DALI_TEST_CHECK( NULL != value.GetArray() );
1067 value.GetArray()->PushBack( Property::Value(1) );
1068 Property::Array got = value.Get<Property::Array>();
1069 DALI_TEST_CHECK( got[0].Get<int>() == 1);
1070 Property::Array result;
1071 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1072 DALI_TEST_CHECK( result[0].Get<int>() == 1);
1076 int UtcDaliPropertyValueGetArrayN(void)
1078 Property::Value value;
1079 DALI_TEST_CHECK( NULL == value.GetArray() );
1080 Property::Array result;
1081 result.PushBack( Property::Value( 10 ) );
1082 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1083 DALI_TEST_EQUALS( 1u, result.Count(), TEST_LOCATION ); // array is not modified
1085 Property::Value value2("");
1086 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1087 DALI_TEST_EQUALS( 1u, result.Count(), TEST_LOCATION ); // array is not modified
1091 int UtcDaliPropertyValueGetMapP(void)
1093 Property::Value value(Property::MAP);
1094 DALI_TEST_CHECK( NULL == value.GetArray() );
1095 DALI_TEST_CHECK( NULL != value.GetMap() );
1096 value.GetMap()->Insert("key", Property::Value(1));
1097 Property::Map result = value.Get<Property::Map>();
1098 DALI_TEST_CHECK(result.Find("key")->Get<int>() == 1);
1099 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1100 DALI_TEST_CHECK(result.Find("key")->Get<int>() == 1);
1104 int UtcDaliPropertyValueGetMapN(void)
1106 Property::Value value;
1107 DALI_TEST_CHECK( NULL == value.GetMap() );
1108 DALI_TEST_EQUALS( 0u, value.Get<Property::Map>().Count(), TEST_LOCATION );
1109 Property::Map result;
1110 result.Insert("key", "value" );
1111 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1112 DALI_TEST_EQUALS( 1u, result.Count(), TEST_LOCATION );
1114 Property::Value value2("");
1115 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1116 DALI_TEST_EQUALS( 1u, result.Count(), TEST_LOCATION ); // array is not modified
1120 int UtcDaliPropertyValueOutputStream(void)
1122 TestApplication application;
1123 tet_infoline("Testing Property::Value output stream");
1124 typedef Dali::Rect<int> Rectangle;
1126 Property::Value value(true);
1128 std::ostringstream stream;
1130 DALI_TEST_CHECK( stream.str() == "1" )
1134 Property::Value empty;
1135 std::ostringstream stream;
1137 DALI_TEST_EQUALS( stream.str(), "empty type", TEST_LOCATION );
1141 Property::Value empty( Property::NONE );
1142 std::ostringstream stream;
1144 DALI_TEST_CHECK( stream.str() == "undefined type" )
1148 value = Property::Value(20.2f);
1149 std::ostringstream stream;
1151 DALI_TEST_CHECK( stream.str() == "20.2" )
1155 value = Property::Value(-25);
1156 std::ostringstream stream;
1158 DALI_TEST_CHECK( stream.str() == "-25" )
1162 value = Property::Value( Vector2(1.f,1.f) );
1163 std::ostringstream stream;
1165 DALI_TEST_CHECK( stream.str() == "[1, 1]" );
1169 value = Property::Value( Vector3(1.f,1.f,1.f) );
1170 std::ostringstream stream;
1172 DALI_TEST_CHECK( stream.str() == "[1, 1, 1]" );
1176 value = Property::Value( Vector4(-4.f,-3.f,-2.f,-1.f) );
1177 std::ostringstream stream;
1179 DALI_TEST_EQUALS( stream.str(), "[-4, -3, -2, -1]", TEST_LOCATION );
1183 value = Property::Value( Matrix3::IDENTITY );
1184 std::ostringstream stream;
1186 DALI_TEST_CHECK( stream.str() == "[ [1, 0, 0], [0, 1, 0], [0, 0, 1] ]" );
1190 value = Property::Value( Matrix::IDENTITY );
1191 std::ostringstream stream;
1193 DALI_TEST_CHECK( stream.str() == "[ [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1] ]" );
1197 value = Property::Value( Rectangle(1,2,3,4) );
1198 std::ostringstream stream;
1200 DALI_TEST_CHECK( stream.str() == "[1, 2, 3, 4]" );
1204 value = Property::Value( AngleAxis( Dali::ANGLE_120, Vector3::XAXIS ) );
1205 std::ostringstream stream;
1207 tet_printf("angle axis = %s \n", stream.str().c_str() );
1208 DALI_TEST_EQUALS( stream.str(), "[ Axis: [1, 0, 0], Angle: 120 degrees ]", TEST_LOCATION );
1212 value = Property::Value( std::string( "Foo" ) );
1213 std::ostringstream stream;
1215 DALI_TEST_CHECK( stream.str() == "Foo" );
1220 map.Insert("key", "value");
1221 map.Insert("duration", 10);
1222 map.Insert("color", Vector4(1.0, 0.5, 1.0, 1.0));
1224 value = Property::Value( map );
1225 std::ostringstream stream;
1227 tet_printf("Checking Property::Value is %s", stream.str().c_str());
1228 DALI_TEST_CHECK( !stream.str().compare("Map(3) = {key:value, duration:10, color:[1, 0.5, 1, 1]}"));
1231 Property::Array array;
1235 value = Property::Value( array );
1236 std::ostringstream stream;
1238 tet_printf("Checking Property::Value is %s", stream.str().c_str());
1239 DALI_TEST_CHECK( !stream.str().compare("Array(3) = [0, 2, 3]") );
1245 Property::Array array;
1247 map2.Insert("key", "value");
1248 map2.Insert("duration", 10);
1249 map.Insert("color", Vector4(1.0, 0.5, 1.0, 1.0));
1250 map.Insert("timePeriod", map2);
1251 array.PushBack(Vector2(1, 0));
1252 array.PushBack(Vector2(0, 1));
1253 array.PushBack(Vector2(1, 0));
1254 array.PushBack(Vector2(0, 0.5));
1255 map.Insert("texCoords", array);
1256 value = Property::Value( map );
1258 std::ostringstream stream;
1261 tet_printf("Checking Property::Value is %s", stream.str().c_str());
1263 DALI_TEST_CHECK( !stream.str().compare("Map(3) = {color:[1, 0.5, 1, 1], timePeriod:Map(2) = {key:value, duration:10}, texCoords:Array(4) = [[1, 0], [0, 1], [1, 0], [0, 0.5]]}"));