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>
29 void CheckTypeName(const Property::Type& type)
35 DALI_TEST_CHECK( "NONE" == std::string(PropertyTypes::GetName( type ) ) );
38 case Property::BOOLEAN:
40 DALI_TEST_CHECK( "BOOLEAN" == std::string(PropertyTypes::GetName( type ) ) );
45 DALI_TEST_CHECK( "FLOAT" == std::string(PropertyTypes::GetName( type ) ) );
48 case Property::INTEGER:
50 DALI_TEST_CHECK( "INTEGER" == std::string(PropertyTypes::GetName( type ) ) );
53 case Property::VECTOR2:
55 DALI_TEST_CHECK( "VECTOR2" == std::string(PropertyTypes::GetName( type ) ) );
58 case Property::VECTOR3:
60 DALI_TEST_CHECK( "VECTOR3" == std::string(PropertyTypes::GetName( type ) ) );
63 case Property::VECTOR4:
65 DALI_TEST_CHECK( "VECTOR4" == std::string(PropertyTypes::GetName( type ) ) );
68 case Property::MATRIX3:
70 DALI_TEST_CHECK( "MATRIX3" == std::string(PropertyTypes::GetName( type ) ) );
73 case Property::MATRIX:
75 DALI_TEST_CHECK( "MATRIX" == std::string(PropertyTypes::GetName( type ) ) );
78 case Property::RECTANGLE:
80 DALI_TEST_CHECK( "RECTANGLE" == std::string(PropertyTypes::GetName( type ) ) );
83 case Property::ROTATION:
85 DALI_TEST_CHECK( "ROTATION" == std::string(PropertyTypes::GetName( type ) ) );
88 case Property::STRING:
90 DALI_TEST_CHECK( "STRING" == std::string(PropertyTypes::GetName( type ) ) );
95 DALI_TEST_CHECK( "ARRAY" == std::string(PropertyTypes::GetName( type ) ) );
100 DALI_TEST_CHECK( "MAP" == std::string(PropertyTypes::GetName( type ) ) );
107 template <typename T>
108 struct CheckCopyCtorP
110 CheckCopyCtorP(Property::Value value)
112 Property::Value copy( value );
113 DALI_TEST_CHECK( value.Get<T>() == copy.Get<T>() );
117 } // unnamed namespace
119 void utc_dali_property_value_startup(void)
121 test_return_value = TET_UNDEF;
124 void utc_dali_property_value_cleanup(void)
126 test_return_value = TET_PASS;
130 int UtcDaliPropertyValueConstructorsNoneP(void)
132 Property::Value value;
134 DALI_TEST_CHECK( value.GetType() == Property::NONE );
139 int UtcDaliPropertyValueConstructorsNoneTypeP(void)
141 Property::Value value( Property::NONE );
143 DALI_TEST_CHECK( value.GetType() == Property::NONE );
148 int UtcDaliPropertyValueConstructorsBoolP(void)
150 Property::Value value(true);
152 DALI_TEST_CHECK( value.GetType() == Property::BOOLEAN );
153 DALI_TEST_CHECK( value.Get<bool>() == true );
158 int UtcDaliPropertyValueConstructorBoolTypeP(void)
160 Property::Value value(Property::BOOLEAN);
162 DALI_TEST_CHECK( value.GetType() == Property::BOOLEAN );
163 DALI_TEST_CHECK( value.Get<bool>() == false );
168 int UtcDaliPropertyValueConstructorsFloatP(void)
170 Property::Value value(2.f);
172 DALI_TEST_CHECK( value.GetType() == Property::FLOAT );
173 DALI_TEST_CHECK( value.Get<float>() == 2.f );
178 int UtcDaliPropertyValueConstructorsFloatTypeP(void)
180 Property::Value value(Property::FLOAT);
182 DALI_TEST_CHECK( value.GetType() == Property::FLOAT );
183 DALI_TEST_CHECK( value.Get<float>() == 0.f );
188 int UtcDaliPropertyValueConstructorsIntP(void)
190 Property::Value value(1);
192 DALI_TEST_CHECK( value.GetType() == Property::INTEGER );
193 DALI_TEST_CHECK( value.Get<int>() == 1 );
198 int UtcDaliPropertyValueConstructorsIntTypeP(void)
200 Property::Value value(Property::INTEGER);
202 DALI_TEST_CHECK( value.GetType() == Property::INTEGER );
203 DALI_TEST_CHECK( value.Get<int>() == 0 );
208 int UtcDaliPropertyValueConstructorsVector2P(void)
211 Property::Value value(v);
213 DALI_TEST_CHECK( value.GetType() == Property::VECTOR2 );
214 DALI_TEST_CHECK( value.Get<Vector2>() == v );
219 int UtcDaliPropertyValueConstructorsVector2TypeP(void)
221 Property::Value value( Property::VECTOR2 );
223 DALI_TEST_CHECK( value.GetType() == Property::VECTOR2 );
224 DALI_TEST_CHECK( value.Get<Vector2>() == Vector2::ZERO );
229 int UtcDaliPropertyValueConstructorsVector3P(void)
231 Vector3 v(1.f,2.f,3.f);
232 Property::Value value(v);
234 DALI_TEST_CHECK( value.GetType() == Property::VECTOR3 );
235 DALI_TEST_CHECK( value.Get<Vector3>() == v );
240 int UtcDaliPropertyValueConstructorsVector3TypeP(void)
242 Property::Value value( Property::VECTOR3 );
244 DALI_TEST_CHECK( value.GetType() == Property::VECTOR3 );
245 DALI_TEST_CHECK( value.Get<Vector3>() == Vector3() );
250 int UtcDaliPropertyValueConstructorsVector4P(void)
252 Vector4 v(1.f,1.f,1.f,0.9f);
253 Property::Value value(v);
255 DALI_TEST_CHECK( value.GetType() == Property::VECTOR4 );
256 DALI_TEST_CHECK( value.Get<Vector4>() == v );
261 int UtcDaliPropertyValueConstructorsVector4TypeP(void)
263 Property::Value value( Property::VECTOR4 );
265 DALI_TEST_CHECK( value.GetType() == Property::VECTOR4 );
266 DALI_TEST_CHECK( value.Get<Vector4>() == Vector4() );
271 int UtcDaliPropertyValueConstructorsMatrix3P(void)
273 Matrix3 v(1.0,1.0,1.0, 1.0,1.0,1.0, 1.0,1.0,1.0);
274 Property::Value value(v);
276 DALI_TEST_CHECK( value.GetType() == Property::MATRIX3 );
277 DALI_TEST_CHECK( value.Get<Matrix3>() == v );
282 int UtcDaliPropertyValueConstructorsMatrix3TypeP(void)
284 Property::Value value( Property::MATRIX3 );
286 DALI_TEST_CHECK( value.GetType() == Property::MATRIX3 );
287 DALI_TEST_CHECK( value.Get<Matrix3>() == Matrix3() );
292 int UtcDaliPropertyValueConstructorsMatrixP(void)
294 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};
296 Property::Value value(v);
298 DALI_TEST_CHECK( value.GetType() == Property::MATRIX );
299 DALI_TEST_CHECK( value.Get<Matrix>() == v );
304 int UtcDaliPropertyValueConstructorsMatrixTypeP(void)
306 Property::Value value( Property::MATRIX );
308 DALI_TEST_CHECK( value.GetType() == Property::MATRIX );
309 DALI_TEST_CHECK( value.Get<Matrix>() == Matrix() );
314 int UtcDaliPropertyValueConstructorsRectP(void)
316 Rect<int> v(1.0,1.0,1.0,1.0);
317 Property::Value value(v);
319 DALI_TEST_EQUALS( value.GetType(), Property::RECTANGLE, TEST_LOCATION );
320 DALI_TEST_CHECK( value.Get<Rect<int> >() == v );
325 int UtcDaliPropertyValueConstructorsRectTypeP(void)
327 Property::Value value( Property::RECTANGLE );
329 DALI_TEST_CHECK( value.GetType() == Property::RECTANGLE );
330 DALI_TEST_CHECK( value.Get<Rect<int> >() == Rect<int>(0,0,0,0) );
335 int UtcDaliPropertyValueConstructorsAngleAxisP(void)
337 AngleAxis input( Dali::ANGLE_90, Vector3::XAXIS );
338 Property::Value value( input );
340 DALI_TEST_CHECK( value.GetType() == Property::ROTATION );
341 AngleAxis result = value.Get<AngleAxis>();
342 DALI_TEST_EQUALS( result.angle, input.angle, TEST_LOCATION );
343 DALI_TEST_EQUALS( result.axis, input.axis, TEST_LOCATION );
348 int UtcDaliPropertyValueConstructorsQuaternionP(void)
350 Quaternion v( Radian( Math::PI ), Vector3::ZAXIS );
351 Property::Value value(v);
353 DALI_TEST_CHECK( value.GetType() == Property::ROTATION );
354 DALI_TEST_EQUALS( v, value.Get<Quaternion>(), 0.001, TEST_LOCATION);
359 int UtcDaliPropertyValueConstructorsRotationTypeP(void)
361 Property::Value value( Property::ROTATION );
363 DALI_TEST_CHECK( value.GetType() == Property::ROTATION );
364 AngleAxis result = value.Get<AngleAxis>();
365 DALI_TEST_EQUALS( result.angle, Radian(0.f), TEST_LOCATION );
366 DALI_TEST_EQUALS( result.axis, Vector3::ZERO, TEST_LOCATION ); // identity quaternion returns a zero angle-axis
371 int UtcDaliPropertyValueConstructorsStringP(void)
374 Property::Value value(v);
376 DALI_TEST_CHECK( value.GetType() == Property::STRING );
377 DALI_TEST_CHECK( value.Get<std::string>() == v );
382 int UtcDaliPropertyValueConstructorsStringTypeP(void)
384 Property::Value value( Property::STRING );
386 DALI_TEST_CHECK( value.GetType() == Property::STRING );
387 DALI_TEST_CHECK( value.Get<std::string>() == std::string() );
392 int UtcDaliPropertyValueConstructorsArrayP(void)
395 Property::Value value( foo );
397 DALI_TEST_CHECK( value.GetType() == Property::ARRAY );
398 DALI_TEST_CHECK( value.Get<Property::Array>().Count() == 0 );
403 int UtcDaliPropertyValueConstructorsArray2P(void)
406 foo.PushBack( Property::Value() );
407 Property::Value value( foo );
409 DALI_TEST_CHECK( value.GetType() == Property::ARRAY );
410 DALI_TEST_CHECK( value.Get<Property::Array>().Count() == 1 );
415 int UtcDaliPropertyValueConstructorsArrayTypeP(void)
417 Property::Value value(Property::ARRAY);
419 DALI_TEST_CHECK( value.GetType() == Property::ARRAY );
420 DALI_TEST_CHECK( value.Get<Property::Array>().Count() == 0 );
425 int UtcDaliPropertyValueConstructorsMapP(void)
428 Property::Value value( map );
430 DALI_TEST_CHECK( value.GetType() == Property::MAP );
431 DALI_TEST_CHECK( value.Get<Property::Map>().Count() == 0 );
436 int UtcDaliPropertyValueConstructorsMap2P(void)
439 map.Insert( "", "" );
440 Property::Value value( map );
442 DALI_TEST_CHECK( value.GetType() == Property::MAP );
443 DALI_TEST_CHECK( value.Get<Property::Map>().Count() == 1 );
448 int UtcDaliPropertyValueConstructorsMapTypeP(void)
450 Property::Value value(Property::MAP);
452 DALI_TEST_CHECK( value.GetType() == Property::MAP );
453 DALI_TEST_CHECK( value.Get<Property::Map>().Count() == 0 );
458 int UtcDaliPropertyValueCopyConstructorP(void)
460 Property::Value value;
461 Property::Value value2( value );
462 DALI_TEST_EQUALS( value.GetType(), value2.GetType(), TEST_LOCATION );
463 DALI_TEST_EQUALS( value.GetMap(), value2.GetMap(), TEST_LOCATION );
464 DALI_TEST_EQUALS( value.GetArray(), value2.GetArray(), TEST_LOCATION );
468 int UtcDaliPropertyValueCopyConstructorBoolP(void)
470 CheckCopyCtorP<bool> check(true);
474 int UtcDaliPropertyValueCopyConstructorFloatP(void)
476 CheckCopyCtorP<float> check(1.f);
480 int UtcDaliPropertyValueCopyConstructorIntP(void)
482 CheckCopyCtorP<int> check(1);
486 int UtcDaliPropertyValueCopyConstructoVector2P(void)
488 CheckCopyCtorP<Vector2> check( Vector2(2,1) );
492 int UtcDaliPropertyValueCopyConstructorVector3P(void)
494 CheckCopyCtorP<Vector3> check( Vector3(3.f,2.f,1.f) );
498 int UtcDaliPropertyValueCopyConstructorVector4P(void)
500 CheckCopyCtorP<Vector3> check( Vector4(4.f,3.f,2.f,1.f) );
504 int UtcDaliPropertyValueCopyConstructorMatrix3P(void)
506 CheckCopyCtorP<Matrix3> check( Matrix3::IDENTITY );
510 int UtcDaliPropertyValueCopyConstructorMatrixP(void)
512 CheckCopyCtorP<Matrix> check(Matrix::IDENTITY);
516 int UtcDaliPropertyValueCopyConstructorRectP(void)
518 CheckCopyCtorP<Rect<int> > check( Rect<int>(1.0,1.0,1.0,1.0) );
522 int UtcDaliPropertyValueCopyConstructorAngleAxisP(void)
524 CheckCopyCtorP<AngleAxis> check( AngleAxis(Degree(1.0), Vector3(1.0,1.0,1.0)) );
528 int UtcDaliPropertyValueCopyConstructorQuaternionP(void)
530 CheckCopyCtorP<Quaternion> check( Quaternion( Vector4(1.0, 1.0, 1.0, 1.0) ) );
534 int UtcDaliPropertyValueCopyConstructorStringP(void)
536 CheckCopyCtorP<std::string> check( std::string("1") );
540 int UtcDaliPropertyValueCopyConstructorArrayP(void)
542 Property::Value value1(Property::ARRAY);
543 Property::Array* array= value1.GetArray();
544 array->PushBack(Property::Value(1));
546 Property::Value value2( value1 );
547 DALI_TEST_EQUALS( value1.GetType(), value2.GetType(), TEST_LOCATION );
548 DALI_TEST_EQUALS( value1.GetArray()->Count(), value2.GetArray()->Count(), TEST_LOCATION );
553 int UtcDaliPropertyValueCopyConstructorMapP(void)
555 Property::Value value1(Property::MAP);
556 Property::Map* map = value1.GetMap();
557 (*map)["1"] = Property::Value(1);
559 Property::Value value2( value1 );
560 DALI_TEST_EQUALS( value1.GetType(), value2.GetType(), TEST_LOCATION );
561 DALI_TEST_EQUALS( value1.GetMap()->Count(), value2.GetMap()->Count(), TEST_LOCATION );
562 DALI_TEST_EQUALS( value1.GetMap()->GetKey( 0 ), value2.GetMap()->GetKey( 0 ), TEST_LOCATION );
567 int UtcDaliPropertyValueAssignmentSelfP(void)
569 Property::Value value;
570 Property::Value* self = &value;
572 DALI_TEST_EQUALS( value.GetType(), Property::NONE, TEST_LOCATION );
573 DALI_TEST_CHECK( value.GetMap() == NULL );
574 DALI_TEST_CHECK( value.GetArray() == NULL );
578 int UtcDaliPropertyValueAssignmentOperatorNoneP(void)
580 Property::Value value;
581 value = Property::Value(); // type match
582 DALI_TEST_EQUALS( value.GetType(), Property::NONE, TEST_LOCATION );
583 Property::Value copy( false );
584 copy = value; // type mismatch
585 DALI_TEST_EQUALS( value.GetType(), Property::NONE, TEST_LOCATION );
589 int UtcDaliPropertyValueAssignmentOperatorBoolP(void)
591 Property::Value value;
592 value = Property::Value(true); // type mismatch
593 DALI_TEST_CHECK( true == value.Get<bool>() );
594 Property::Value copy( false );
595 copy = value; // type match
596 DALI_TEST_CHECK( true == copy.Get<bool>() );
600 int UtcDaliPropertyValueAssignmentOperatorIntP(void)
602 Property::Value value;
603 value = Property::Value(10); // type mismatch
604 DALI_TEST_CHECK( 10 == value.Get<int>() );
605 Property::Value copy( 99 );
606 copy = value; // type match
607 DALI_TEST_CHECK( 10 == copy.Get<int>() );
611 int UtcDaliPropertyValueAssignmentOperatorFloatP(void)
613 Property::Value value;
614 value = Property::Value(10.f); // mismatch
615 DALI_TEST_CHECK( Dali::Equals(10.f, value.Get<float>() ) );
616 Property::Value copy(321.f);
617 copy = value; // match
618 DALI_TEST_CHECK( Dali::Equals(10.f, copy.Get<float>() ) );
622 int UtcDaliPropertyValueAssignmentOperatorVector2P(void)
624 Property::Value value;
625 value = Property::Value( Vector2(1,2) ); // mismatch
626 DALI_TEST_CHECK( Vector2(1,2) == value.Get<Vector2>() );
627 Property::Value copy( Property::VECTOR2 );
628 copy = value; // match
629 DALI_TEST_CHECK( Vector2(1,2) == copy.Get<Vector2>() );
633 int UtcDaliPropertyValueAssignmentOperatorVector3P(void)
635 Property::Value value;
636 value = Property::Value( Vector3(1.f,2.f,3.f) ); // mismatch
637 DALI_TEST_CHECK( Vector3(1.f,2.f,3.f) == value.Get<Vector3>() );
638 Property::Value copy( Property::VECTOR3 );
639 copy = value; // match
640 DALI_TEST_CHECK( Vector3(1.f,2.f,3.f) == copy.Get<Vector3>() );
644 int UtcDaliPropertyValueAssignmentOperatorVector4P(void)
646 Property::Value value;
647 value = Property::Value( Vector4(1,2,3,4) ); // mismatch
648 DALI_TEST_CHECK( Vector4(1,2,3,4) == value.Get<Vector4>() );
649 Property::Value copy( Vector4(0,1,2,3) );
650 copy = value; // match
651 DALI_TEST_CHECK( Vector4(1,2,3,4) == copy.Get<Vector4>() );
655 int UtcDaliPropertyValueAssignmentOperatorMatrix3P(void)
657 Property::Value value;
658 value = Property::Value( Matrix3::IDENTITY ); // mismatch
659 DALI_TEST_CHECK( Matrix3::IDENTITY == value.Get<Matrix3>() );
660 Property::Value copy( Property::MATRIX3 );
661 copy = value; // match
662 DALI_TEST_CHECK( Matrix3::IDENTITY == copy.Get<Matrix3>() );
666 int UtcDaliPropertyValueAssignmentOperatorMatrixP(void)
668 Property::Value value;
669 value = Property::Value( Matrix::IDENTITY ); // mismatch
670 DALI_TEST_CHECK( Matrix::IDENTITY == value.Get<Matrix>() );
672 Property::Value copy( foo );
673 copy = value; // match
674 DALI_TEST_CHECK( Matrix::IDENTITY == copy.Get<Matrix>() );
678 int UtcDaliPropertyValueAssignmentOperatorRectP(void)
680 Property::Value value;
681 typedef Dali::Rect<int> Rectangle;
682 value = Property::Value( Rectangle(4,3,2,1) ); // mismatch
683 DALI_TEST_CHECK( Rectangle(4,3,2,1) == value.Get<Rectangle>() );
684 Property::Value copy( Property::RECTANGLE );
685 copy = value; // match
688 DALI_TEST_CHECK( Rectangle(4,3,2,1) == copyRect );
692 int UtcDaliPropertyValueAssignmentOperatorQuaternionP(void)
694 Property::Value value;
695 Quaternion result( Radian( Math::PI_2 ), Vector3::YAXIS );
696 value = Property::Value( result );
698 DALI_TEST_EQUALS( value.Get<Quaternion>(), result, 0.001, TEST_LOCATION );
700 Property::Value copy( Property::ROTATION );
701 copy = value; // match
702 DALI_TEST_EQUALS( copy.Get<Quaternion>(), result, 0.001, TEST_LOCATION );
707 int UtcDaliPropertyValueAssignmentOperatorAngleAxisP(void)
709 Property::Value value;
710 value = Property::Value( AngleAxis( Radian(Math::PI_2), Vector3::XAXIS ) ); // mismatch
711 DALI_TEST_EQUALS( value.Get<AngleAxis>().axis, Vector3::XAXIS, TEST_LOCATION );
712 DALI_TEST_EQUALS( value.Get<AngleAxis>().angle, Radian(Math::PI_2), TEST_LOCATION );
713 Property::Value copy( Property::ROTATION );
714 copy = value; // match
715 DALI_TEST_EQUALS( value.Get<AngleAxis>().axis, copy.Get<AngleAxis>().axis, TEST_LOCATION );
716 DALI_TEST_EQUALS( value.Get<AngleAxis>().angle, copy.Get<AngleAxis>().angle, TEST_LOCATION );
720 int UtcDaliPropertyValueAssignmentOperatorStringP(void)
722 Property::Value value;
723 value = Property::Value("yes"); // mismatch
724 DALI_TEST_CHECK( "yes" == value.Get<std::string>() );
725 Property::Value copy("no");
726 copy = value; // match
727 DALI_TEST_CHECK( "yes" == copy.Get<std::string>() );
731 int UtcDaliPropertyValueAssignmentOperatorArrayP(void)
733 Property::Value value;
734 value = Property::Value(Property::ARRAY); // mismatch
735 value.GetArray()->PushBack(10);
736 DALI_TEST_CHECK( value.GetArray() );
737 Property::Value copy(Property::ARRAY);
738 copy = value; // match
739 Property::Array array;
742 array[0].Get( getItem );
743 DALI_TEST_CHECK( getItem == 10 );
747 int UtcDaliPropertyValueAssignmentOperatorMapP(void)
749 Property::Value value;
750 value = Property::Value(Property::MAP); // mismatch
751 value.GetMap()->Insert("key", "value");
752 Property::Value copy( Property::MAP ); // match
756 DALI_TEST_CHECK( map.GetKey(0) == "key" );
760 int UtcDaliPropertyValueGetTypeP(void)
762 Property::Value value;
763 DALI_TEST_CHECK( value.GetType() == Property::NONE );
767 int UtcDaliPropertyValueGetBoolP(void)
769 Property::Value value(true);
770 bool boolean( false );
771 DALI_TEST_CHECK( value.Get( boolean ) == true );
772 DALI_TEST_CHECK( value.Get<bool>() == true );
774 DALI_TEST_CHECK( value.Get( string ) == false );
775 value = Property::Value(1.f);
776 DALI_TEST_CHECK( value.Get<float>() == 1.f );
780 int UtcDaliPropertyValueGetBoolN(void)
782 Property::Value value;
783 DALI_TEST_CHECK( value.Get<bool>() == false );
784 bool boolean( false );
785 DALI_TEST_CHECK( value.Get( boolean ) == false );
789 int UtcDaliPropertyValueGetFloatP(void)
791 Property::Value value(1.1f);
793 DALI_TEST_EQUALS( 1.1f, value.Get<float>(), TEST_LOCATION );
794 DALI_TEST_EQUALS( true, value.Get( flow ), TEST_LOCATION );
795 DALI_TEST_EQUALS( 1.1f, flow, TEST_LOCATION );
797 Property::Value intValue(100);
798 DALI_TEST_EQUALS( 100.f, intValue.Get<float>(), TEST_LOCATION );
799 DALI_TEST_EQUALS( true, intValue.Get( flow ), TEST_LOCATION );
800 DALI_TEST_EQUALS( 100.f, flow, TEST_LOCATION );
805 int UtcDaliPropertyValueGetFloatN(void)
807 Property::Value value;
808 float result( 1.0f );
809 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
810 DALI_TEST_EQUALS( 1.0f, result, TEST_LOCATION ); // result is not modified
811 Property::Value value2( "" );
812 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
813 DALI_TEST_EQUALS( 1.0f, result, TEST_LOCATION ); // result is not modified
817 int UtcDaliPropertyValueGetIntP(void)
819 Property::Value value(123);
821 DALI_TEST_EQUALS( 123, value.Get<int>(), TEST_LOCATION );
822 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
823 DALI_TEST_EQUALS( 123, result, TEST_LOCATION );
825 Property::Value floatValue(21.f);
826 DALI_TEST_EQUALS( 21, floatValue.Get<int>(), TEST_LOCATION );
827 DALI_TEST_EQUALS( true, floatValue.Get( result ), TEST_LOCATION );
828 DALI_TEST_EQUALS( 21, result, TEST_LOCATION );
833 int UtcDaliPropertyValueGetIntN(void)
835 Property::Value value;
837 DALI_TEST_EQUALS( 0, value.Get<int>(), TEST_LOCATION );
838 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
839 DALI_TEST_EQUALS( 10, result, TEST_LOCATION ); // result is not modified
840 Property::Value value2("");
841 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
842 DALI_TEST_EQUALS( 10, result, TEST_LOCATION ); // result is not modified
846 int UtcDaliPropertyValueGetRectP(void)
848 Property::Value value( Rect<int>(1,2,3,4) );
849 Rect<int> result(4,3,2,1);
850 DALI_TEST_EQUALS( Rect<int>(1,2,3,4), value.Get< Rect<int> >(), TEST_LOCATION );
851 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
852 DALI_TEST_EQUALS( Rect<int>(1,2,3,4), result, TEST_LOCATION );
856 int UtcDaliPropertyValueGetRectN(void)
858 Property::Value value;
859 Rect<int> result(4,3,2,1);
860 DALI_TEST_EQUALS( Rect<int>(0,0,0,0), value.Get< Rect<int> >(), TEST_LOCATION );
861 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
862 DALI_TEST_EQUALS( Rect<int>(4,3,2,1), result, TEST_LOCATION );
863 Property::Value value2("");
864 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
865 DALI_TEST_EQUALS( Rect<int>(4,3,2,1), result, TEST_LOCATION );
869 int UtcDaliPropertyValueGetVector2P(void)
871 Property::Value value( Vector2(1.0f,2.0f) );
873 DALI_TEST_EQUALS( Vector2(1.0f,2.0f), value.Get< Vector2 >(), TEST_LOCATION );
874 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
875 DALI_TEST_EQUALS( Vector2(1.0f,2.0f), result, TEST_LOCATION );
879 int UtcDaliPropertyValueGetVector2fromVector3P(void)
881 Property::Value value( Vector3(1.f,2.f,3.f) );
883 DALI_TEST_EQUALS( Vector2(1.0f,2.0f), value.Get< Vector2 >(), TEST_LOCATION );
884 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
885 DALI_TEST_EQUALS( Vector2(1.0f,2.0f), result, TEST_LOCATION );
889 int UtcDaliPropertyValueGetVector2fromVector4P(void)
891 Property::Value value( Vector4(1.f,2.f,3.f,4.f) );
893 DALI_TEST_EQUALS( Vector2(1.0f,2.0f), value.Get< Vector2 >(), TEST_LOCATION );
894 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
895 DALI_TEST_EQUALS( Vector2(1.0f,2.0f), result, TEST_LOCATION );
899 int UtcDaliPropertyValueGetVector2N(void)
901 Property::Value value;
903 DALI_TEST_EQUALS( Vector2(0.f,0.f), value.Get< Vector2 >(), TEST_LOCATION );
904 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
905 DALI_TEST_EQUALS( Vector2(), result, TEST_LOCATION );
906 Property::Value value2("");
907 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
908 DALI_TEST_EQUALS( Vector2(), result, TEST_LOCATION );
912 int UtcDaliPropertyValueGetVector3P(void)
914 Property::Value value( Vector3(1.0f,2.0f,-1.f) );
916 DALI_TEST_EQUALS( Vector3(1.0f,2.0f,-1.f), value.Get< Vector3 >(), TEST_LOCATION );
917 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
918 DALI_TEST_EQUALS( Vector3(1.0f,2.0f,-1.f), result, TEST_LOCATION );
922 int UtcDaliPropertyValueGetVector3FromVector2P(void)
924 Property::Value value( Vector2(1.0f,2.0f) );
925 Vector3 result(99.f,88.f,77.f);
926 DALI_TEST_EQUALS( Vector3(1.0f,2.0f,0.f), value.Get< Vector3 >(), TEST_LOCATION );
927 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
928 DALI_TEST_EQUALS( Vector3(1.0f,2.0f,0.f), result, TEST_LOCATION );
932 int UtcDaliPropertyValueGetVector3FromVector4P(void)
934 Property::Value value( Vector4(4.f,3.f,2.f,1.f) );
936 DALI_TEST_EQUALS( Vector3(4.f,3.f,2.f), value.Get< Vector3 >(), TEST_LOCATION );
937 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
938 DALI_TEST_EQUALS( Vector3(4.f,3.f,2.f), result, TEST_LOCATION );
942 int UtcDaliPropertyValueGetVector3N(void)
944 Property::Value value;
946 DALI_TEST_EQUALS( Vector3(0.f,0.f,0.f), value.Get< Vector3 >(), TEST_LOCATION );
947 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
948 DALI_TEST_EQUALS( Vector3(), result, TEST_LOCATION );
949 Property::Value value2("");
950 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
951 DALI_TEST_EQUALS( Vector3(), result, TEST_LOCATION );
955 int UtcDaliPropertyValueGetVector4P(void)
957 Property::Value value( Vector4(1.f,2.f,-1.f,-3.f) );
959 DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,-3.f), value.Get< Vector4 >(), TEST_LOCATION );
960 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
961 DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,-3.f), result, TEST_LOCATION );
965 int UtcDaliPropertyValueGetVector4FromVector2P(void)
967 Property::Value value( Vector2(-1.f,-3.f) );
968 Vector4 result(99.f,88.f,77.f,66.f);
969 DALI_TEST_EQUALS( Vector4(-1.f,-3.f,0.f,0.f), value.Get< Vector4 >(), TEST_LOCATION );
970 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
971 DALI_TEST_EQUALS( Vector4(-1.f,-3.f,0.f,0.f), result, TEST_LOCATION );
975 int UtcDaliPropertyValueGetVector4FromVector3P(void)
977 Property::Value value( Vector3(1.f,2.f,-1.f) );
978 Vector4 result(99.f,88.f,77.f,66.f);
979 DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,0.f), value.Get< Vector4 >(), TEST_LOCATION );
980 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
981 DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,0.f), result, TEST_LOCATION );
985 int UtcDaliPropertyValueGetVector4N(void)
987 Property::Value value;
989 DALI_TEST_EQUALS( Vector4(0.f,0.f,0.f,0.f), value.Get< Vector4 >(), TEST_LOCATION );
990 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
991 DALI_TEST_EQUALS( Vector4(), result, TEST_LOCATION );
992 Property::Value value2("");
993 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
994 DALI_TEST_EQUALS( Vector4(), result, TEST_LOCATION );
998 int UtcDaliPropertyValueGetMatrix3P(void)
1000 Property::Value value( Matrix3(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f) );
1002 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 );
1003 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1004 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 );
1008 int UtcDaliPropertyValueGetMatrix3N(void)
1010 Property::Value value;
1011 Matrix3 result(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f);
1012 DALI_TEST_EQUALS( Matrix3(), value.Get< Matrix3 >(), TEST_LOCATION );
1013 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1014 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 );
1015 Property::Value value2("");
1016 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1017 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 );
1021 int UtcDaliPropertyValueGetMatrixP(void)
1023 float matrixValues[16] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };
1024 Matrix input( matrixValues );
1025 Property::Value value( input );
1027 DALI_TEST_EQUALS( input, value.Get< Matrix >(), TEST_LOCATION );
1028 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1029 DALI_TEST_EQUALS( input, result, TEST_LOCATION );
1033 int UtcDaliPropertyValueGetMatrixN(void)
1035 Property::Value value;
1036 Matrix result( Matrix::IDENTITY );
1037 DALI_TEST_EQUALS( Matrix(), value.Get< Matrix >(), TEST_LOCATION );
1038 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1039 DALI_TEST_EQUALS( Matrix::IDENTITY, result, TEST_LOCATION );
1041 Property::Value value2("");
1042 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1043 DALI_TEST_EQUALS( Matrix::IDENTITY, result, TEST_LOCATION );
1047 int UtcDaliPropertyValueGetAngleAxisP(void)
1049 AngleAxis input( Dali::ANGLE_90, Vector3::XAXIS );
1050 Property::Value value( input );
1051 AngleAxis result = value.Get<AngleAxis>();
1052 DALI_TEST_EQUALS( input.angle, result.angle, TEST_LOCATION );
1053 DALI_TEST_EQUALS( input.axis, result.axis, TEST_LOCATION );
1055 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1056 DALI_TEST_EQUALS( input, result, TEST_LOCATION );
1060 int UtcDaliPropertyValueGetAngleAxisN(void)
1062 Property::Value value;
1063 AngleAxis b = value.Get<AngleAxis>();
1065 DALI_TEST_EQUALS( (Radian)0.f, b.angle, TEST_LOCATION );
1066 DALI_TEST_EQUALS( Vector3::ZERO, b.axis, TEST_LOCATION );
1067 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1068 DALI_TEST_EQUALS( AngleAxis(), result, TEST_LOCATION );
1070 Property::Value value2("");
1071 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1072 DALI_TEST_EQUALS( AngleAxis(), result, TEST_LOCATION );
1076 int UtcDaliPropertyValueGetQuaternionP(void)
1078 Vector3 axis(1, 1, 0);
1081 Quaternion result( Radian( 1.f ), axis );
1082 Property::Value value( result );
1084 DALI_TEST_EQUALS( result, value.Get< Quaternion >(), TEST_LOCATION );
1086 DALI_TEST_EQUALS( true, value.Get( test2 ), TEST_LOCATION );
1090 int UtcDaliPropertyValueGetQuaternionN(void)
1092 Property::Value value;
1093 Vector3 axis(1, 1, 0);
1095 Quaternion result( Radian( 1.f ), axis );
1096 Quaternion test(result);
1098 DALI_TEST_EQUALS( Quaternion(), value.Get< Quaternion >(), TEST_LOCATION );
1099 DALI_TEST_EQUALS( false, value.Get( test ), TEST_LOCATION );
1100 DALI_TEST_EQUALS( test, result, TEST_LOCATION );
1102 Property::Value value2("");
1103 DALI_TEST_EQUALS( false, value2.Get( test ), TEST_LOCATION );
1104 DALI_TEST_EQUALS( test, result, TEST_LOCATION );
1108 int UtcDaliPropertyValueGetStringP(void)
1110 Property::Value value( std::string("hello") );
1112 DALI_TEST_EQUALS( std::string("hello"), value.Get< std::string >(), TEST_LOCATION );
1113 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1114 DALI_TEST_EQUALS( std::string("hello"), result, TEST_LOCATION );
1116 Property::Value value2( "C hi!" );
1117 DALI_TEST_EQUALS( "C hi!", value2.Get< std::string >(), TEST_LOCATION );
1118 DALI_TEST_EQUALS( true, value2.Get( result ), TEST_LOCATION );
1119 DALI_TEST_EQUALS( "C hi!", result, TEST_LOCATION );
1123 int UtcDaliPropertyValueGetStringN(void)
1125 Property::Value value;
1126 std::string result("doesn't change");
1127 DALI_TEST_EQUALS( std::string(), value.Get< std::string >(), TEST_LOCATION );
1128 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1129 DALI_TEST_EQUALS( "doesn't change", result, TEST_LOCATION );
1131 Property::Value value2(10);
1132 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1133 DALI_TEST_EQUALS( "doesn't change", result, TEST_LOCATION );
1135 Property::Value value3((char*)NULL);
1136 DALI_TEST_EQUALS( true, value3.Get( result ), TEST_LOCATION );
1137 DALI_TEST_EQUALS( std::string(), result, TEST_LOCATION );
1141 int UtcDaliPropertyValueGetArrayP(void)
1143 Property::Value value( Property::ARRAY );
1144 DALI_TEST_CHECK( NULL != value.GetArray() );
1145 value.GetArray()->PushBack( Property::Value(1) );
1146 Property::Array got = value.Get<Property::Array>();
1147 DALI_TEST_CHECK( got[0].Get<int>() == 1);
1148 Property::Array result;
1149 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1150 DALI_TEST_CHECK( result[0].Get<int>() == 1);
1154 int UtcDaliPropertyValueGetArrayN(void)
1156 Property::Value value;
1157 DALI_TEST_CHECK( NULL == value.GetArray() );
1158 Property::Array result;
1159 result.PushBack( Property::Value( 10 ) );
1160 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1161 DALI_TEST_EQUALS( 1u, result.Count(), TEST_LOCATION ); // array is not modified
1163 Property::Value value2("");
1164 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1165 DALI_TEST_EQUALS( 1u, result.Count(), TEST_LOCATION ); // array is not modified
1169 int UtcDaliPropertyValueGetMapP(void)
1171 Property::Value value(Property::MAP);
1172 DALI_TEST_CHECK( NULL == value.GetArray() );
1173 DALI_TEST_CHECK( NULL != value.GetMap() );
1174 value.GetMap()->Insert("key", Property::Value(1));
1175 Property::Map result = value.Get<Property::Map>();
1176 DALI_TEST_CHECK(result.Find("key")->Get<int>() == 1);
1177 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1178 DALI_TEST_CHECK(result.Find("key")->Get<int>() == 1);
1182 int UtcDaliPropertyValueGetMapN(void)
1184 Property::Value value;
1185 DALI_TEST_CHECK( NULL == value.GetMap() );
1186 DALI_TEST_EQUALS( 0u, value.Get<Property::Map>().Count(), TEST_LOCATION );
1187 Property::Map result;
1188 result.Insert("key", "value" );
1189 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1190 DALI_TEST_EQUALS( 1u, result.Count(), TEST_LOCATION );
1192 Property::Value value2("");
1193 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1194 DALI_TEST_EQUALS( 1u, result.Count(), TEST_LOCATION ); // array is not modified
1198 int UtcDaliPropertyValueOutputStream(void)
1200 TestApplication application;
1201 tet_infoline("Testing Property::Value output stream");
1202 typedef Dali::Rect<int> Rectangle;
1204 Property::Value value(true);
1206 std::ostringstream stream;
1208 DALI_TEST_CHECK( stream.str() == "1" )
1212 Property::Value empty;
1213 std::ostringstream stream;
1215 DALI_TEST_EQUALS( stream.str(), "empty type", TEST_LOCATION );
1219 Property::Value empty( Property::NONE );
1220 std::ostringstream stream;
1222 DALI_TEST_CHECK( stream.str() == "undefined type" )
1226 value = Property::Value(20.2f);
1227 std::ostringstream stream;
1229 DALI_TEST_CHECK( stream.str() == "20.2" )
1233 value = Property::Value(-25);
1234 std::ostringstream stream;
1236 DALI_TEST_CHECK( stream.str() == "-25" )
1240 value = Property::Value( Vector2(1.f,1.f) );
1241 std::ostringstream stream;
1243 DALI_TEST_CHECK( stream.str() == "[1, 1]" );
1247 value = Property::Value( Vector3(1.f,1.f,1.f) );
1248 std::ostringstream stream;
1250 DALI_TEST_CHECK( stream.str() == "[1, 1, 1]" );
1254 value = Property::Value( Vector4(-4.f,-3.f,-2.f,-1.f) );
1255 std::ostringstream stream;
1257 DALI_TEST_EQUALS( stream.str(), "[-4, -3, -2, -1]", TEST_LOCATION );
1261 value = Property::Value( Matrix3::IDENTITY );
1262 std::ostringstream stream;
1264 DALI_TEST_CHECK( stream.str() == "[ [1, 0, 0], [0, 1, 0], [0, 0, 1] ]" );
1268 value = Property::Value( Matrix::IDENTITY );
1269 std::ostringstream stream;
1271 DALI_TEST_CHECK( stream.str() == "[ [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1] ]" );
1275 value = Property::Value( Rectangle(1,2,3,4) );
1276 std::ostringstream stream;
1278 DALI_TEST_CHECK( stream.str() == "[1, 2, 3, 4]" );
1282 value = Property::Value( AngleAxis( Dali::ANGLE_120, Vector3::XAXIS ) );
1283 std::ostringstream stream;
1285 tet_printf("angle axis = %s \n", stream.str().c_str() );
1286 DALI_TEST_EQUALS( stream.str(), "[ Axis: [1, 0, 0], Angle: 120 degrees ]", TEST_LOCATION );
1290 value = Property::Value( std::string( "Foo" ) );
1291 std::ostringstream stream;
1293 DALI_TEST_CHECK( stream.str() == "Foo" );
1298 map.Insert("key", "value");
1299 map.Insert("duration", 10);
1300 map.Insert("color", Vector4(1.0, 0.5, 1.0, 1.0));
1302 value = Property::Value( map );
1303 std::ostringstream stream;
1305 tet_printf("Checking Property::Value is %s", stream.str().c_str());
1306 DALI_TEST_CHECK( !stream.str().compare("Map(3) = {key:value, duration:10, color:[1, 0.5, 1, 1]}"));
1309 Property::Array array;
1313 value = Property::Value( array );
1314 std::ostringstream stream;
1316 tet_printf("Checking Property::Value is %s", stream.str().c_str());
1317 DALI_TEST_CHECK( !stream.str().compare("Array(3) = [0, 2, 3]") );
1323 Property::Array array;
1325 map2.Insert("key", "value");
1326 map2.Insert("duration", 10);
1327 map.Insert("color", Vector4(1.0, 0.5, 1.0, 1.0));
1328 map.Insert("timePeriod", map2);
1329 array.PushBack(Vector2(1, 0));
1330 array.PushBack(Vector2(0, 1));
1331 array.PushBack(Vector2(1, 0));
1332 array.PushBack(Vector2(0, 0.5));
1333 map.Insert("texCoords", array);
1334 value = Property::Value( map );
1336 std::ostringstream stream;
1339 tet_printf("Checking Property::Value is %s", stream.str().c_str());
1341 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]]}"));