2 * Copyright (c) 2015 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::UNSIGNED_INTEGER:
55 DALI_TEST_CHECK( "UNSIGNED_INTEGER" == std::string(PropertyTypes::GetName( type ) ) );
58 case Property::VECTOR2:
60 DALI_TEST_CHECK( "VECTOR2" == std::string(PropertyTypes::GetName( type ) ) );
63 case Property::VECTOR3:
65 DALI_TEST_CHECK( "VECTOR3" == std::string(PropertyTypes::GetName( type ) ) );
68 case Property::VECTOR4:
70 DALI_TEST_CHECK( "VECTOR4" == std::string(PropertyTypes::GetName( type ) ) );
73 case Property::MATRIX3:
75 DALI_TEST_CHECK( "MATRIX3" == std::string(PropertyTypes::GetName( type ) ) );
78 case Property::MATRIX:
80 DALI_TEST_CHECK( "MATRIX" == std::string(PropertyTypes::GetName( type ) ) );
83 case Property::RECTANGLE:
85 DALI_TEST_CHECK( "RECTANGLE" == std::string(PropertyTypes::GetName( type ) ) );
88 case Property::ROTATION:
90 DALI_TEST_CHECK( "ROTATION" == std::string(PropertyTypes::GetName( type ) ) );
93 case Property::STRING:
95 DALI_TEST_CHECK( "STRING" == std::string(PropertyTypes::GetName( type ) ) );
100 DALI_TEST_CHECK( "ARRAY" == std::string(PropertyTypes::GetName( type ) ) );
105 DALI_TEST_CHECK( "MAP" == std::string(PropertyTypes::GetName( type ) ) );
112 template <typename T>
113 struct CheckCopyCtorP
115 CheckCopyCtorP(Property::Value value)
117 Property::Value copy( value );
118 DALI_TEST_CHECK( value.Get<T>() == copy.Get<T>() );
122 } // unnamed namespace
124 void utc_dali_property_value_startup(void)
126 test_return_value = TET_UNDEF;
129 void utc_dali_property_value_cleanup(void)
131 test_return_value = TET_PASS;
135 int UtcDaliPropertyValueConstructorsNoneP(void)
137 Property::Value value;
139 DALI_TEST_CHECK( value.GetType() == Property::NONE );
144 int UtcDaliPropertyValueConstructorsNoneTypeP(void)
146 Property::Value value( Property::NONE );
148 DALI_TEST_CHECK( value.GetType() == Property::NONE );
153 int UtcDaliPropertyValueConstructorsBoolP(void)
155 Property::Value value(true);
157 DALI_TEST_CHECK( value.GetType() == Property::BOOLEAN );
158 DALI_TEST_CHECK( value.Get<bool>() == true );
163 int UtcDaliPropertyValueConstructorBoolTypeP(void)
165 Property::Value value(Property::BOOLEAN);
167 DALI_TEST_CHECK( value.GetType() == Property::BOOLEAN );
168 DALI_TEST_CHECK( value.Get<bool>() == false );
173 int UtcDaliPropertyValueConstructorsFloatP(void)
175 Property::Value value(2.f);
177 DALI_TEST_CHECK( value.GetType() == Property::FLOAT );
178 DALI_TEST_CHECK( value.Get<float>() == 2.f );
183 int UtcDaliPropertyValueConstructorsFloatTypeP(void)
185 Property::Value value(Property::FLOAT);
187 DALI_TEST_CHECK( value.GetType() == Property::FLOAT );
188 DALI_TEST_CHECK( value.Get<float>() == 0.f );
193 int UtcDaliPropertyValueConstructorsIntP(void)
195 Property::Value value(1);
197 DALI_TEST_CHECK( value.GetType() == Property::INTEGER );
198 DALI_TEST_CHECK( value.Get<int>() == 1 );
203 int UtcDaliPropertyValueConstructorsIntTypeP(void)
205 Property::Value value(Property::INTEGER);
207 DALI_TEST_CHECK( value.GetType() == Property::INTEGER );
208 DALI_TEST_CHECK( value.Get<int>() == 0 );
213 int UtcDaliPropertyValueConstructorsUnsignedIntP(void)
215 Property::Value value(1u);
217 DALI_TEST_CHECK( value.GetType() == Property::UNSIGNED_INTEGER );
218 DALI_TEST_CHECK( value.Get<unsigned int>() == 1u );
223 int UtcDaliPropertyValueConstructorsUnsignedIntTypeP(void)
225 Property::Value value( Property::UNSIGNED_INTEGER );
227 DALI_TEST_CHECK( value.GetType() == Property::UNSIGNED_INTEGER );
228 DALI_TEST_CHECK( value.Get<unsigned int>() == 0u );
233 int UtcDaliPropertyValueConstructorsVector2P(void)
236 Property::Value value(v);
238 DALI_TEST_CHECK( value.GetType() == Property::VECTOR2 );
239 DALI_TEST_CHECK( value.Get<Vector2>() == v );
244 int UtcDaliPropertyValueConstructorsVector2TypeP(void)
246 Property::Value value( Property::VECTOR2 );
248 DALI_TEST_CHECK( value.GetType() == Property::VECTOR2 );
249 DALI_TEST_CHECK( value.Get<Vector2>() == Vector2::ZERO );
254 int UtcDaliPropertyValueConstructorsVector3P(void)
256 Vector3 v(1.f,2.f,3.f);
257 Property::Value value(v);
259 DALI_TEST_CHECK( value.GetType() == Property::VECTOR3 );
260 DALI_TEST_CHECK( value.Get<Vector3>() == v );
265 int UtcDaliPropertyValueConstructorsVector3TypeP(void)
267 Property::Value value( Property::VECTOR3 );
269 DALI_TEST_CHECK( value.GetType() == Property::VECTOR3 );
270 DALI_TEST_CHECK( value.Get<Vector3>() == Vector3() );
275 int UtcDaliPropertyValueConstructorsVector4P(void)
277 Vector4 v(1.f,1.f,1.f,0.9f);
278 Property::Value value(v);
280 DALI_TEST_CHECK( value.GetType() == Property::VECTOR4 );
281 DALI_TEST_CHECK( value.Get<Vector4>() == v );
286 int UtcDaliPropertyValueConstructorsVector4TypeP(void)
288 Property::Value value( Property::VECTOR4 );
290 DALI_TEST_CHECK( value.GetType() == Property::VECTOR4 );
291 DALI_TEST_CHECK( value.Get<Vector4>() == Vector4() );
296 int UtcDaliPropertyValueConstructorsMatrix3P(void)
298 Matrix3 v(1.0,1.0,1.0, 1.0,1.0,1.0, 1.0,1.0,1.0);
299 Property::Value value(v);
301 DALI_TEST_CHECK( value.GetType() == Property::MATRIX3 );
302 DALI_TEST_CHECK( value.Get<Matrix3>() == v );
307 int UtcDaliPropertyValueConstructorsMatrix3TypeP(void)
309 Property::Value value( Property::MATRIX3 );
311 DALI_TEST_CHECK( value.GetType() == Property::MATRIX3 );
312 DALI_TEST_CHECK( value.Get<Matrix3>() == Matrix3() );
317 int UtcDaliPropertyValueConstructorsMatrixP(void)
319 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};
321 Property::Value value(v);
323 DALI_TEST_CHECK( value.GetType() == Property::MATRIX );
324 DALI_TEST_CHECK( value.Get<Matrix>() == v );
329 int UtcDaliPropertyValueConstructorsMatrixTypeP(void)
331 Property::Value value( Property::MATRIX );
333 DALI_TEST_CHECK( value.GetType() == Property::MATRIX );
334 DALI_TEST_CHECK( value.Get<Matrix>() == Matrix() );
339 int UtcDaliPropertyValueConstructorsRectP(void)
341 Rect<int> v(1.0,1.0,1.0,1.0);
342 Property::Value value(v);
344 DALI_TEST_EQUALS( value.GetType(), Property::RECTANGLE, TEST_LOCATION );
345 DALI_TEST_CHECK( value.Get<Rect<int> >() == v );
350 int UtcDaliPropertyValueConstructorsRectTypeP(void)
352 Property::Value value( Property::RECTANGLE );
354 DALI_TEST_CHECK( value.GetType() == Property::RECTANGLE );
355 DALI_TEST_CHECK( value.Get<Rect<int> >() == Rect<int>(0,0,0,0) );
360 int UtcDaliPropertyValueConstructorsAngleAxisP(void)
362 AngleAxis input( Dali::ANGLE_90, Vector3::XAXIS );
363 Property::Value value( input );
365 DALI_TEST_CHECK( value.GetType() == Property::ROTATION );
366 AngleAxis result = value.Get<AngleAxis>();
367 DALI_TEST_EQUALS( result.angle, input.angle, TEST_LOCATION );
368 DALI_TEST_EQUALS( result.axis, input.axis, TEST_LOCATION );
373 int UtcDaliPropertyValueConstructorsQuaternionP(void)
375 Quaternion v( Vector4(1.0,1.0,1.0,1.0) );
376 Property::Value value(v);
378 DALI_TEST_CHECK( value.GetType() == Property::ROTATION );
379 DALI_TEST_CHECK( value.Get<Quaternion>() == v );
384 int UtcDaliPropertyValueConstructorsRotationTypeP(void)
386 Property::Value value( Property::ROTATION );
388 DALI_TEST_CHECK( value.GetType() == Property::ROTATION );
389 AngleAxis result = value.Get<AngleAxis>();
390 DALI_TEST_EQUALS( result.angle, Radian(0.f), TEST_LOCATION );
391 DALI_TEST_EQUALS( result.axis, Vector3::ZERO, TEST_LOCATION ); // identity quaternion returns a zero angle-axis
396 int UtcDaliPropertyValueConstructorsStringP(void)
399 Property::Value value(v);
401 DALI_TEST_CHECK( value.GetType() == Property::STRING );
402 DALI_TEST_CHECK( value.Get<std::string>() == v );
407 int UtcDaliPropertyValueConstructorsStringTypeP(void)
409 Property::Value value( Property::STRING );
411 DALI_TEST_CHECK( value.GetType() == Property::STRING );
412 DALI_TEST_CHECK( value.Get<std::string>() == std::string() );
417 int UtcDaliPropertyValueConstructorsArrayP(void)
420 Property::Value value( foo );
422 DALI_TEST_CHECK( value.GetType() == Property::ARRAY );
423 DALI_TEST_CHECK( value.Get<Property::Array>().Count() == 0 );
428 int UtcDaliPropertyValueConstructorsArray2P(void)
431 foo.PushBack( Property::Value() );
432 Property::Value value( foo );
434 DALI_TEST_CHECK( value.GetType() == Property::ARRAY );
435 DALI_TEST_CHECK( value.Get<Property::Array>().Count() == 1 );
440 int UtcDaliPropertyValueConstructorsArrayTypeP(void)
442 Property::Value value(Property::ARRAY);
444 DALI_TEST_CHECK( value.GetType() == Property::ARRAY );
445 DALI_TEST_CHECK( value.Get<Property::Array>().Count() == 0 );
450 int UtcDaliPropertyValueConstructorsMapP(void)
453 Property::Value value( map );
455 DALI_TEST_CHECK( value.GetType() == Property::MAP );
456 DALI_TEST_CHECK( value.Get<Property::Map>().Count() == 0 );
461 int UtcDaliPropertyValueConstructorsMap2P(void)
464 map.Insert( "", "" );
465 Property::Value value( map );
467 DALI_TEST_CHECK( value.GetType() == Property::MAP );
468 DALI_TEST_CHECK( value.Get<Property::Map>().Count() == 1 );
473 int UtcDaliPropertyValueConstructorsMapTypeP(void)
475 Property::Value value(Property::MAP);
477 DALI_TEST_CHECK( value.GetType() == Property::MAP );
478 DALI_TEST_CHECK( value.Get<Property::Map>().Count() == 0 );
483 int UtcDaliPropertyValueCopyConstructorP(void)
485 Property::Value value;
486 Property::Value value2( value );
487 DALI_TEST_EQUALS( value.GetType(), value2.GetType(), TEST_LOCATION );
488 DALI_TEST_EQUALS( value.GetMap(), value2.GetMap(), TEST_LOCATION );
489 DALI_TEST_EQUALS( value.GetArray(), value2.GetArray(), TEST_LOCATION );
493 int UtcDaliPropertyValueCopyConstructorBoolP(void)
495 CheckCopyCtorP<bool> check(true);
499 int UtcDaliPropertyValueCopyConstructorFloatP(void)
501 CheckCopyCtorP<float> check(1.f);
505 int UtcDaliPropertyValueCopyConstructorIntP(void)
507 CheckCopyCtorP<int> check(1);
511 int UtcDaliPropertyValueCopyConstructorUnsignedIntP(void)
513 CheckCopyCtorP<unsigned int> check(1u);
517 int UtcDaliPropertyValueCopyConstructoVector2P(void)
519 CheckCopyCtorP<Vector2> check( Vector2(2,1) );
523 int UtcDaliPropertyValueCopyConstructorVector3P(void)
525 CheckCopyCtorP<Vector3> check( Vector3(3.f,2.f,1.f) );
529 int UtcDaliPropertyValueCopyConstructorVector4P(void)
531 CheckCopyCtorP<Vector3> check( Vector4(4.f,3.f,2.f,1.f) );
535 int UtcDaliPropertyValueCopyConstructorMatrix3P(void)
537 CheckCopyCtorP<Matrix3> check( Matrix3::IDENTITY );
541 int UtcDaliPropertyValueCopyConstructorMatrixP(void)
543 CheckCopyCtorP<Matrix> check(Matrix::IDENTITY);
547 int UtcDaliPropertyValueCopyConstructorRectP(void)
549 CheckCopyCtorP<Rect<int> > check( Rect<int>(1.0,1.0,1.0,1.0) );
553 int UtcDaliPropertyValueCopyConstructorAngleAxisP(void)
555 CheckCopyCtorP<AngleAxis> check( AngleAxis(Degree(1.0), Vector3(1.0,1.0,1.0)) );
559 int UtcDaliPropertyValueCopyConstructorQuaternionP(void)
561 CheckCopyCtorP<Quaternion> check( Quaternion( Vector4(1.0, 1.0, 1.0, 1.0) ) );
565 int UtcDaliPropertyValueCopyConstructorStringP(void)
567 CheckCopyCtorP<std::string> check( std::string("1") );
571 int UtcDaliPropertyValueCopyConstructorArrayP(void)
573 Property::Value value1(Property::ARRAY);
574 Property::Array* array= value1.GetArray();
575 array->PushBack(Property::Value(1));
577 Property::Value value2( value1 );
578 DALI_TEST_EQUALS( value1.GetType(), value2.GetType(), TEST_LOCATION );
579 DALI_TEST_EQUALS( value1.GetArray()->Count(), value2.GetArray()->Count(), TEST_LOCATION );
584 int UtcDaliPropertyValueCopyConstructorMapP(void)
586 Property::Value value1(Property::MAP);
587 Property::Map* map = value1.GetMap();
588 (*map)["1"] = Property::Value(1);
590 Property::Value value2( value1 );
591 DALI_TEST_EQUALS( value1.GetType(), value2.GetType(), TEST_LOCATION );
592 DALI_TEST_EQUALS( value1.GetMap()->Count(), value2.GetMap()->Count(), TEST_LOCATION );
593 DALI_TEST_EQUALS( value1.GetMap()->GetKey( 0 ), value2.GetMap()->GetKey( 0 ), TEST_LOCATION );
598 int UtcDaliPropertyValueAssignmentSelfP(void)
600 Property::Value value;
601 Property::Value* self = &value;
603 DALI_TEST_EQUALS( value.GetType(), Property::NONE, TEST_LOCATION );
604 DALI_TEST_CHECK( value.GetMap() == NULL );
605 DALI_TEST_CHECK( value.GetArray() == NULL );
609 int UtcDaliPropertyValueAssignmentOperatorNoneP(void)
611 Property::Value value;
612 value = Property::Value(); // type match
613 DALI_TEST_EQUALS( value.GetType(), Property::NONE, TEST_LOCATION );
614 Property::Value copy( false );
615 copy = value; // type mismatch
616 DALI_TEST_EQUALS( value.GetType(), Property::NONE, TEST_LOCATION );
620 int UtcDaliPropertyValueAssignmentOperatorBoolP(void)
622 Property::Value value;
623 value = Property::Value(true); // type mismatch
624 DALI_TEST_CHECK( true == value.Get<bool>() );
625 Property::Value copy( false );
626 copy = value; // type match
627 DALI_TEST_CHECK( true == copy.Get<bool>() );
631 int UtcDaliPropertyValueAssignmentOperatorIntP(void)
633 Property::Value value;
634 value = Property::Value(10); // type mismatch
635 DALI_TEST_CHECK( 10 == value.Get<int>() );
636 Property::Value copy( 99 );
637 copy = value; // type match
638 DALI_TEST_CHECK( 10 == copy.Get<int>() );
642 int UtcDaliPropertyValueAssignmentOperatorUnsignedIntP(void)
644 Property::Value value;
645 value = Property::Value(10U); // type mismatch
646 DALI_TEST_CHECK( 10U == value.Get<unsigned int>() );
647 Property::Value copy( 123U);
648 copy = value; // type match
649 DALI_TEST_CHECK( 10U == copy.Get<unsigned int>() );
653 int UtcDaliPropertyValueAssignmentOperatorFloatP(void)
655 Property::Value value;
656 value = Property::Value(10.f); // mismatch
657 DALI_TEST_CHECK( Dali::Equals(10.f, value.Get<float>() ) );
658 Property::Value copy(321.f);
659 copy = value; // match
660 DALI_TEST_CHECK( Dali::Equals(10.f, copy.Get<float>() ) );
664 int UtcDaliPropertyValueAssignmentOperatorVector2P(void)
666 Property::Value value;
667 value = Property::Value( Vector2(1,2) ); // mismatch
668 DALI_TEST_CHECK( Vector2(1,2) == value.Get<Vector2>() );
669 Property::Value copy( Property::VECTOR2 );
670 copy = value; // match
671 DALI_TEST_CHECK( Vector2(1,2) == copy.Get<Vector2>() );
675 int UtcDaliPropertyValueAssignmentOperatorVector3P(void)
677 Property::Value value;
678 value = Property::Value( Vector3(1.f,2.f,3.f) ); // mismatch
679 DALI_TEST_CHECK( Vector3(1.f,2.f,3.f) == value.Get<Vector3>() );
680 Property::Value copy( Property::VECTOR3 );
681 copy = value; // match
682 DALI_TEST_CHECK( Vector3(1.f,2.f,3.f) == copy.Get<Vector3>() );
686 int UtcDaliPropertyValueAssignmentOperatorVector4P(void)
688 Property::Value value;
689 value = Property::Value( Vector4(1,2,3,4) ); // mismatch
690 DALI_TEST_CHECK( Vector4(1,2,3,4) == value.Get<Vector4>() );
691 Property::Value copy( Vector4(0,1,2,3) );
692 copy = value; // match
693 DALI_TEST_CHECK( Vector4(1,2,3,4) == copy.Get<Vector4>() );
697 int UtcDaliPropertyValueAssignmentOperatorMatrix3P(void)
699 Property::Value value;
700 value = Property::Value( Matrix3::IDENTITY ); // mismatch
701 DALI_TEST_CHECK( Matrix3::IDENTITY == value.Get<Matrix3>() );
702 Property::Value copy( Property::MATRIX3 );
703 copy = value; // match
704 DALI_TEST_CHECK( Matrix3::IDENTITY == copy.Get<Matrix3>() );
708 int UtcDaliPropertyValueAssignmentOperatorMatrixP(void)
710 Property::Value value;
711 value = Property::Value( Matrix::IDENTITY ); // mismatch
712 DALI_TEST_CHECK( Matrix::IDENTITY == value.Get<Matrix>() );
714 Property::Value copy( foo );
715 copy = value; // match
716 DALI_TEST_CHECK( Matrix::IDENTITY == copy.Get<Matrix>() );
720 int UtcDaliPropertyValueAssignmentOperatorRectP(void)
722 Property::Value value;
723 typedef Dali::Rect<int> Rectangle;
724 value = Property::Value( Rectangle(4,3,2,1) ); // mismatch
725 DALI_TEST_CHECK( Rectangle(4,3,2,1) == value.Get<Rectangle>() );
726 Property::Value copy( Property::RECTANGLE );
727 copy = value; // match
730 DALI_TEST_CHECK( Rectangle(4,3,2,1) == copyRect );
734 int UtcDaliPropertyValueAssignmentOperatorQuaternionP(void)
736 Property::Value value;
737 value = Property::Value( Quaternion(1,1,1,1) ); // mismatch
738 DALI_TEST_CHECK( Quaternion(1,1,1,1) == value.Get<Quaternion>() );
739 Property::Value copy( Property::ROTATION );
740 copy = value; // match
741 DALI_TEST_CHECK( Quaternion(1,1,1,1) == copy.Get<Quaternion>() );
746 int UtcDaliPropertyValueAssignmentOperatorAngleAxisP(void)
748 Property::Value value;
749 value = Property::Value( AngleAxis( Radian(Math::PI_2), Vector3::XAXIS ) ); // mismatch
750 DALI_TEST_EQUALS( value.Get<AngleAxis>().axis, Vector3::XAXIS, TEST_LOCATION );
751 DALI_TEST_EQUALS( value.Get<AngleAxis>().angle, Radian(Math::PI_2), TEST_LOCATION );
752 Property::Value copy( Property::ROTATION );
753 copy = value; // match
754 DALI_TEST_EQUALS( value.Get<AngleAxis>().axis, copy.Get<AngleAxis>().axis, TEST_LOCATION );
755 DALI_TEST_EQUALS( value.Get<AngleAxis>().angle, copy.Get<AngleAxis>().angle, TEST_LOCATION );
759 int UtcDaliPropertyValueAssignmentOperatorStringP(void)
761 Property::Value value;
762 value = Property::Value("yes"); // mismatch
763 DALI_TEST_CHECK( "yes" == value.Get<std::string>() );
764 Property::Value copy("no");
765 copy = value; // match
766 DALI_TEST_CHECK( "yes" == copy.Get<std::string>() );
770 int UtcDaliPropertyValueAssignmentOperatorArrayP(void)
772 Property::Value value;
773 value = Property::Value(Property::ARRAY); // mismatch
774 value.GetArray()->PushBack(10);
775 DALI_TEST_CHECK( value.GetArray() );
776 Property::Value copy(Property::ARRAY);
777 copy = value; // match
778 Property::Array array;
781 array[0].Get( getItem );
782 DALI_TEST_CHECK( getItem == 10 );
786 int UtcDaliPropertyValueAssignmentOperatorMapP(void)
788 Property::Value value;
789 value = Property::Value(Property::MAP); // mismatch
790 value.GetMap()->Insert("key", "value");
791 Property::Value copy( Property::MAP ); // match
795 DALI_TEST_CHECK( map.GetKey(0) == "key" );
799 int UtcDaliPropertyValueGetTypeP(void)
801 Property::Value value;
802 DALI_TEST_CHECK( value.GetType() == Property::NONE );
806 int UtcDaliPropertyValueGetBoolP(void)
808 Property::Value value(true);
809 bool boolean( false );
810 DALI_TEST_CHECK( value.Get( boolean ) == true );
811 DALI_TEST_CHECK( value.Get<bool>() == true );
813 DALI_TEST_CHECK( value.Get( string ) == false );
814 value = Property::Value(1.f);
815 DALI_TEST_CHECK( value.Get<float>() == 1.f );
819 int UtcDaliPropertyValueGetBoolN(void)
821 Property::Value value;
822 DALI_TEST_CHECK( value.Get<bool>() == false );
823 bool boolean( false );
824 DALI_TEST_CHECK( value.Get( boolean ) == false );
828 int UtcDaliPropertyValueGetFloatP(void)
830 Property::Value value(1.1f);
832 DALI_TEST_EQUALS( 1.1f, value.Get<float>(), TEST_LOCATION );
833 DALI_TEST_EQUALS( true, value.Get( flow ), TEST_LOCATION );
834 DALI_TEST_EQUALS( 1.1f, flow, TEST_LOCATION );
836 Property::Value intValue(100);
837 DALI_TEST_EQUALS( 100.f, intValue.Get<float>(), TEST_LOCATION );
838 DALI_TEST_EQUALS( true, intValue.Get( flow ), TEST_LOCATION );
839 DALI_TEST_EQUALS( 100.f, flow, TEST_LOCATION );
844 int UtcDaliPropertyValueGetFloatN(void)
846 Property::Value value;
847 float result( 1.0f );
848 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
849 DALI_TEST_EQUALS( 1.0f, result, TEST_LOCATION ); // result is not modified
850 Property::Value value2( "" );
851 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
852 DALI_TEST_EQUALS( 1.0f, result, TEST_LOCATION ); // result is not modified
856 int UtcDaliPropertyValueGetIntP(void)
858 Property::Value value(123);
860 DALI_TEST_EQUALS( 123, value.Get<int>(), TEST_LOCATION );
861 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
862 DALI_TEST_EQUALS( 123, result, TEST_LOCATION );
864 Property::Value floatValue(21.f);
865 DALI_TEST_EQUALS( 21, floatValue.Get<int>(), TEST_LOCATION );
866 DALI_TEST_EQUALS( true, floatValue.Get( result ), TEST_LOCATION );
867 DALI_TEST_EQUALS( 21, result, TEST_LOCATION );
872 int UtcDaliPropertyValueGetIntN(void)
874 Property::Value value;
876 DALI_TEST_EQUALS( 0, value.Get<int>(), TEST_LOCATION );
877 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
878 DALI_TEST_EQUALS( 10, result, TEST_LOCATION ); // result is not modified
879 Property::Value value2("");
880 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
881 DALI_TEST_EQUALS( 10, result, TEST_LOCATION ); // result is not modified
885 int UtcDaliPropertyValueGetUnsignedIntP(void)
887 Property::Value value(123u);
888 unsigned int result( 10u );
889 DALI_TEST_EQUALS( 123u, value.Get<unsigned int>(), TEST_LOCATION );
890 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
891 DALI_TEST_EQUALS( 123u, result, TEST_LOCATION );
895 int UtcDaliPropertyValueGetUnsignedIntN(void)
897 Property::Value value;
898 unsigned int result( 10u );
899 DALI_TEST_EQUALS( 0u, value.Get<unsigned int>(), TEST_LOCATION );
900 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
901 DALI_TEST_EQUALS( 10u, result, TEST_LOCATION );
902 Property::Value value2("");
903 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
904 DALI_TEST_EQUALS( 10u, result, TEST_LOCATION ); // result is not modified
908 int UtcDaliPropertyValueGetRectP(void)
910 Property::Value value( Rect<int>(1,2,3,4) );
911 Rect<int> result(4,3,2,1);
912 DALI_TEST_EQUALS( Rect<int>(1,2,3,4), value.Get< Rect<int> >(), TEST_LOCATION );
913 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
914 DALI_TEST_EQUALS( Rect<int>(1,2,3,4), result, TEST_LOCATION );
918 int UtcDaliPropertyValueGetRectN(void)
920 Property::Value value;
921 Rect<int> result(4,3,2,1);
922 DALI_TEST_EQUALS( Rect<int>(0,0,0,0), value.Get< Rect<int> >(), TEST_LOCATION );
923 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
924 DALI_TEST_EQUALS( Rect<int>(4,3,2,1), result, TEST_LOCATION );
925 Property::Value value2("");
926 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
927 DALI_TEST_EQUALS( Rect<int>(4,3,2,1), result, TEST_LOCATION );
931 int UtcDaliPropertyValueGetVector2P(void)
933 Property::Value value( Vector2(1.0f,2.0f) );
935 DALI_TEST_EQUALS( Vector2(1.0f,2.0f), value.Get< Vector2 >(), TEST_LOCATION );
936 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
937 DALI_TEST_EQUALS( Vector2(1.0f,2.0f), result, TEST_LOCATION );
941 int UtcDaliPropertyValueGetVector2N(void)
943 Property::Value value;
945 DALI_TEST_EQUALS( Vector2(0.f,0.f), value.Get< Vector2 >(), TEST_LOCATION );
946 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
947 DALI_TEST_EQUALS( Vector2(), result, TEST_LOCATION );
948 Property::Value value2("");
949 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
950 DALI_TEST_EQUALS( Vector2(), result, TEST_LOCATION );
954 int UtcDaliPropertyValueGetVector3P(void)
956 Property::Value value( Vector3(1.0f,2.0f,-1.f) );
958 DALI_TEST_EQUALS( Vector3(1.0f,2.0f,-1.f), value.Get< Vector3 >(), TEST_LOCATION );
959 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
960 DALI_TEST_EQUALS( Vector3(1.0f,2.0f,-1.f), result, TEST_LOCATION );
964 int UtcDaliPropertyValueGetVector3N(void)
966 Property::Value value;
968 DALI_TEST_EQUALS( Vector3(0.f,0.f,0.f), value.Get< Vector3 >(), TEST_LOCATION );
969 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
970 DALI_TEST_EQUALS( Vector3(), result, TEST_LOCATION );
971 Property::Value value2("");
972 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
973 DALI_TEST_EQUALS( Vector3(), result, TEST_LOCATION );
977 int UtcDaliPropertyValueGetVector4P(void)
979 Property::Value value( Vector4(1.f,2.f,-1.f,-3.f) );
981 DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,-3.f), value.Get< Vector4 >(), TEST_LOCATION );
982 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
983 DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,-3.f), result, TEST_LOCATION );
987 int UtcDaliPropertyValueGetVector4N(void)
989 Property::Value value;
991 DALI_TEST_EQUALS( Vector4(0.f,0.f,0.f,0.f), value.Get< Vector4 >(), TEST_LOCATION );
992 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
993 DALI_TEST_EQUALS( Vector4(), result, TEST_LOCATION );
994 Property::Value value2("");
995 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
996 DALI_TEST_EQUALS( Vector4(), result, TEST_LOCATION );
1000 int UtcDaliPropertyValueGetMatrix3P(void)
1002 Property::Value value( Matrix3(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f) );
1004 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 );
1005 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1006 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 );
1010 int UtcDaliPropertyValueGetMatrix3N(void)
1012 Property::Value value;
1013 Matrix3 result(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f);
1014 DALI_TEST_EQUALS( Matrix3(), value.Get< Matrix3 >(), TEST_LOCATION );
1015 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1016 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 );
1017 Property::Value value2("");
1018 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1019 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 );
1023 int UtcDaliPropertyValueGetMatrixP(void)
1025 float matrixValues[16] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };
1026 Matrix input( matrixValues );
1027 Property::Value value( input );
1029 DALI_TEST_EQUALS( input, value.Get< Matrix >(), TEST_LOCATION );
1030 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1031 DALI_TEST_EQUALS( input, result, TEST_LOCATION );
1035 int UtcDaliPropertyValueGetMatrixN(void)
1037 Property::Value value;
1038 Matrix result( Matrix::IDENTITY );
1039 DALI_TEST_EQUALS( Matrix(), value.Get< Matrix >(), TEST_LOCATION );
1040 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1041 DALI_TEST_EQUALS( Matrix::IDENTITY, result, TEST_LOCATION );
1043 Property::Value value2("");
1044 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1045 DALI_TEST_EQUALS( Matrix::IDENTITY, result, TEST_LOCATION );
1049 int UtcDaliPropertyValueGetAngleAxisP(void)
1051 AngleAxis input( Dali::ANGLE_90, Vector3::XAXIS );
1052 Property::Value value( input );
1053 AngleAxis result = value.Get<AngleAxis>();
1054 DALI_TEST_EQUALS( input.angle, result.angle, TEST_LOCATION );
1055 DALI_TEST_EQUALS( input.axis, result.axis, TEST_LOCATION );
1057 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1058 DALI_TEST_EQUALS( input, result, TEST_LOCATION );
1062 int UtcDaliPropertyValueGetAngleAxisN(void)
1064 Property::Value value;
1065 AngleAxis b = value.Get<AngleAxis>();
1067 DALI_TEST_EQUALS( 0.f, b.angle, TEST_LOCATION );
1068 DALI_TEST_EQUALS( Vector3::ZERO, b.axis, TEST_LOCATION );
1069 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1070 DALI_TEST_EQUALS( AngleAxis(), result, TEST_LOCATION );
1072 Property::Value value2("");
1073 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1074 DALI_TEST_EQUALS( AngleAxis(), result, TEST_LOCATION );
1078 int UtcDaliPropertyValueGetQuaternionP(void)
1080 Property::Value value( Quaternion(1.f,2.f,3.f,4.f) );
1082 DALI_TEST_EQUALS( Quaternion(1.f,2.f,3.f,4.f), value.Get< Quaternion >(), TEST_LOCATION );
1083 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1084 DALI_TEST_EQUALS( Quaternion(1.f,2.f,3.f,4.f), result, TEST_LOCATION );
1088 int UtcDaliPropertyValueGetQuaternionN(void)
1090 Property::Value value;
1091 Quaternion result(1.f,2.f,3.f,4.f);
1092 DALI_TEST_EQUALS( Quaternion(), value.Get< Quaternion >(), TEST_LOCATION );
1093 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1094 DALI_TEST_EQUALS( Quaternion(1.f,2.f,3.f,4.f), result, TEST_LOCATION );
1096 Property::Value value2("");
1097 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1098 DALI_TEST_EQUALS( Quaternion(1.f,2.f,3.f,4.f), result, TEST_LOCATION );
1102 int UtcDaliPropertyValueGetStringP(void)
1104 Property::Value value( std::string("hello") );
1106 DALI_TEST_EQUALS( std::string("hello"), value.Get< std::string >(), TEST_LOCATION );
1107 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1108 DALI_TEST_EQUALS( std::string("hello"), result, TEST_LOCATION );
1110 Property::Value value2( "C hi!" );
1111 DALI_TEST_EQUALS( "C hi!", value2.Get< std::string >(), TEST_LOCATION );
1112 DALI_TEST_EQUALS( true, value2.Get( result ), TEST_LOCATION );
1113 DALI_TEST_EQUALS( "C hi!", result, TEST_LOCATION );
1117 int UtcDaliPropertyValueGetStringN(void)
1119 Property::Value value;
1120 std::string result("doesn't change");
1121 DALI_TEST_EQUALS( std::string(), value.Get< std::string >(), TEST_LOCATION );
1122 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1123 DALI_TEST_EQUALS( "doesn't change", result, TEST_LOCATION );
1125 Property::Value value2(10);
1126 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1127 DALI_TEST_EQUALS( "doesn't change", result, TEST_LOCATION );
1129 Property::Value value3((char*)NULL);
1130 DALI_TEST_EQUALS( true, value3.Get( result ), TEST_LOCATION );
1131 DALI_TEST_EQUALS( std::string(), result, TEST_LOCATION );
1135 int UtcDaliPropertyValueGetArrayP(void)
1137 Property::Value value( Property::ARRAY );
1138 DALI_TEST_CHECK( NULL != value.GetArray() );
1139 value.GetArray()->PushBack( Property::Value(1) );
1140 Property::Array got = value.Get<Property::Array>();
1141 DALI_TEST_CHECK( got[0].Get<int>() == 1);
1142 Property::Array result;
1143 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1144 DALI_TEST_CHECK( result[0].Get<int>() == 1);
1148 int UtcDaliPropertyValueGetArrayN(void)
1150 Property::Value value;
1151 DALI_TEST_CHECK( NULL == value.GetArray() );
1152 Property::Array result;
1153 result.PushBack( Property::Value( 10 ) );
1154 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1155 DALI_TEST_EQUALS( 1, result.Count(), TEST_LOCATION ); // array is not modified
1157 Property::Value value2("");
1158 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1159 DALI_TEST_EQUALS( 1, result.Count(), TEST_LOCATION ); // array is not modified
1163 int UtcDaliPropertyValueGetMapP(void)
1165 Property::Value value(Property::MAP);
1166 DALI_TEST_CHECK( NULL == value.GetArray() );
1167 DALI_TEST_CHECK( NULL != value.GetMap() );
1168 value.GetMap()->Insert("key", Property::Value(1));
1169 Property::Map result = value.Get<Property::Map>();
1170 DALI_TEST_CHECK(result.Find("key")->Get<int>() == 1);
1171 DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1172 DALI_TEST_CHECK(result.Find("key")->Get<int>() == 1);
1176 int UtcDaliPropertyValueGetMapN(void)
1178 Property::Value value;
1179 DALI_TEST_CHECK( NULL == value.GetMap() );
1180 DALI_TEST_EQUALS( 0, value.Get<Property::Map>().Count(), TEST_LOCATION );
1181 Property::Map result;
1182 result.Insert("key", "value" );
1183 DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1184 DALI_TEST_EQUALS( 1, result.Count(), TEST_LOCATION );
1186 Property::Value value2("");
1187 DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1188 DALI_TEST_EQUALS( 1, result.Count(), TEST_LOCATION ); // array is not modified
1192 int UtcDaliPropertyValueOutputStream(void)
1194 TestApplication application;
1195 tet_infoline("Testing Property::Value output stream");
1196 typedef Dali::Rect<int> Rectangle;
1198 Property::Value value(true);
1200 std::ostringstream stream;
1202 DALI_TEST_CHECK( stream.str() == "1" )
1206 Property::Value empty;
1207 std::ostringstream stream;
1209 DALI_TEST_EQUALS( stream.str(), "empty type", TEST_LOCATION );
1213 Property::Value empty( Property::NONE );
1214 std::ostringstream stream;
1216 DALI_TEST_CHECK( stream.str() == "undefined type" )
1220 value = Property::Value(20.2f);
1221 std::ostringstream stream;
1223 DALI_TEST_CHECK( stream.str() == "20.2" )
1227 value = Property::Value(-25);
1228 std::ostringstream stream;
1230 DALI_TEST_CHECK( stream.str() == "-25" )
1234 value = Property::Value(25U);
1235 std::ostringstream stream;
1237 DALI_TEST_CHECK( stream.str() == "25" )
1241 value = Property::Value( Vector2(1.f,1.f) );
1242 std::ostringstream stream;
1244 DALI_TEST_CHECK( stream.str() == "[1, 1]" );
1248 value = Property::Value( Vector3(1.f,1.f,1.f) );
1249 std::ostringstream stream;
1251 DALI_TEST_CHECK( stream.str() == "[1, 1, 1]" );
1255 value = Property::Value( Vector4(-4.f,-3.f,-2.f,-1.f) );
1256 std::ostringstream stream;
1258 DALI_TEST_EQUALS( stream.str(), "[-4, -3, -2, -1]", TEST_LOCATION );
1262 value = Property::Value( Matrix3::IDENTITY );
1263 std::ostringstream stream;
1265 DALI_TEST_CHECK( stream.str() == "[ [1, 0, 0], [0, 1, 0], [0, 0, 1] ]" );
1269 value = Property::Value( Matrix::IDENTITY );
1270 std::ostringstream stream;
1272 DALI_TEST_CHECK( stream.str() == "[ [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1] ]" );
1276 value = Property::Value( Rectangle(1,2,3,4) );
1277 std::ostringstream stream;
1279 DALI_TEST_CHECK( stream.str() == "[1, 2, 3, 4]" );
1283 value = Property::Value( AngleAxis( Dali::ANGLE_120, Vector3::XAXIS ) );
1284 std::ostringstream stream;
1286 tet_printf("angle axis = %s \n", stream.str().c_str() );
1287 DALI_TEST_EQUALS( stream.str(), "[ Axis: [1, 0, 0], Angle: 120 degrees ]", TEST_LOCATION );
1291 value = Property::Value( std::string( "Foo" ) );
1292 std::ostringstream stream;
1294 DALI_TEST_CHECK( stream.str() == "Foo" );
1297 // Maps and arrays currently not supported, we just check a message is output
1300 value = Property::Value( map );
1301 std::ostringstream stream;
1303 DALI_TEST_CHECK( !stream.str().empty() );
1306 Property::Array array;
1307 value = Property::Value( array );
1308 std::ostringstream stream;
1310 DALI_TEST_CHECK( !stream.str().empty() );