X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-PropertyValue.cpp;h=712f60fa9a6e5bac6693faba93cd4dfd0c1ec8d3;hb=17f28cc04cbb2708a29a6ef7a353ce15fc434b2d;hp=6b2ebe3f9f07f7e17485c46c6acee136878a13ac;hpb=14103962b908d6ee43c065a0e9234747a615fe83;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-PropertyValue.cpp b/automated-tests/src/dali/utc-Dali-PropertyValue.cpp index 6b2ebe3..712f60f 100644 --- a/automated-tests/src/dali/utc-Dali-PropertyValue.cpp +++ b/automated-tests/src/dali/utc-Dali-PropertyValue.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,93 +26,15 @@ using namespace Dali; namespace { -void CheckTypeName(const Property::Type& type) +template +struct CheckCopyCtorP { - switch(type) + CheckCopyCtorP(Property::Value value) { - case Property::NONE: - { - DALI_TEST_CHECK( "NONE" == std::string(PropertyTypes::GetName( type ) ) ); - break; - } - case Property::BOOLEAN: - { - DALI_TEST_CHECK( "BOOLEAN" == std::string(PropertyTypes::GetName( type ) ) ); - break; - } - case Property::FLOAT: - { - DALI_TEST_CHECK( "FLOAT" == std::string(PropertyTypes::GetName( type ) ) ); - break; - } - case Property::INTEGER: - { - DALI_TEST_CHECK( "INTEGER" == std::string(PropertyTypes::GetName( type ) ) ); - break; - } - case Property::UNSIGNED_INTEGER: - { - DALI_TEST_CHECK( "UNSIGNED_INTEGER" == std::string(PropertyTypes::GetName( type ) ) ); - break; - } - case Property::VECTOR2: - { - DALI_TEST_CHECK( "VECTOR2" == std::string(PropertyTypes::GetName( type ) ) ); - break; - } - case Property::VECTOR3: - { - DALI_TEST_CHECK( "VECTOR3" == std::string(PropertyTypes::GetName( type ) ) ); - break; - } - case Property::VECTOR4: - { - DALI_TEST_CHECK( "VECTOR4" == std::string(PropertyTypes::GetName( type ) ) ); - break; - } - case Property::MATRIX3: - { - DALI_TEST_CHECK( "MATRIX3" == std::string(PropertyTypes::GetName( type ) ) ); - break; - } - case Property::MATRIX: - { - DALI_TEST_CHECK( "MATRIX" == std::string(PropertyTypes::GetName( type ) ) ); - break; - } - case Property::RECTANGLE: - { - DALI_TEST_CHECK( "RECTANGLE" == std::string(PropertyTypes::GetName( type ) ) ); - break; - } - case Property::ROTATION: - { - DALI_TEST_CHECK( "ROTATION" == std::string(PropertyTypes::GetName( type ) ) ); - break; - } - case Property::STRING: - { - DALI_TEST_CHECK( "STRING" == std::string(PropertyTypes::GetName( type ) ) ); - break; - } - case Property::ARRAY: - { - DALI_TEST_CHECK( "ARRAY" == std::string(PropertyTypes::GetName( type ) ) ); - break; - } - case Property::MAP: - { - DALI_TEST_CHECK( "MAP" == std::string(PropertyTypes::GetName( type ) ) ); - break; - } - case Property::TYPE_COUNT: - { - DALI_TEST_CHECK( "NONE" == std::string(PropertyTypes::GetName( type ) ) ); - break; - } - } // switch(type) - -} // CheckTypeName + Property::Value copy( value ); + DALI_TEST_CHECK( value.Get() == copy.Get() ); + } +}; } // unnamed namespace @@ -126,440 +48,1219 @@ void utc_dali_property_value_cleanup(void) test_return_value = TET_PASS; } -int UtcDaliPropertyValueConstructors01(void) + +int UtcDaliPropertyValueConstructorsNoneP(void) { - // Testing PropertyValue construction using Property::Type - // also testing the PropertyTypes::GetName is correct for each type + Property::Value value; - TestApplication application; - tet_infoline("Testing Property::Value construction using Property::Type"); + DALI_TEST_CHECK( value.GetType() == Property::NONE ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsNoneTypeP(void) +{ + Property::Value value( Property::NONE ); - Property::Value value; DALI_TEST_CHECK( value.GetType() == Property::NONE ); - Property::Type type = Property::NONE; - CheckTypeName(type); - // Value(Value&) ctor and Value(Type&) ctor - DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type ); - DALI_TEST_CHECK( Property::NONE == type ); - - // PropertyTypes - type = Property::BOOLEAN; - CheckTypeName(type); - DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type ); - DALI_TEST_CHECK( PropertyTypes::Get() == type ); - - type = Property::FLOAT; - CheckTypeName(type); - DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type ); - DALI_TEST_CHECK( PropertyTypes::Get() == type ); - - type = Property::INTEGER; - CheckTypeName(type); - DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type ); - DALI_TEST_CHECK( PropertyTypes::Get() == type ); - - type = Property::UNSIGNED_INTEGER; - CheckTypeName(type); - DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type ); - DALI_TEST_CHECK( PropertyTypes::Get() == type ); - - type = Property::VECTOR2; - CheckTypeName(type); - DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type ); - DALI_TEST_CHECK( PropertyTypes::Get() == type ); - - type = Property::VECTOR3; - CheckTypeName(type); - DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type ); - DALI_TEST_CHECK( PropertyTypes::Get() == type ); - - type = Property::VECTOR4; - CheckTypeName(type); - DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type ); - DALI_TEST_CHECK( PropertyTypes::Get() == type ); - - type = Property::MATRIX3; - CheckTypeName(type); - DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type ); - DALI_TEST_CHECK( PropertyTypes::Get() == type ); - - type = Property::MATRIX; - CheckTypeName(type); - DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type ); - DALI_TEST_CHECK( PropertyTypes::Get() == type ); + END_TEST; +} - typedef Dali::Rect Rectangle; - type = Property::RECTANGLE; - CheckTypeName(type); - DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type ); - DALI_TEST_CHECK( PropertyTypes::Get() == type ); +int UtcDaliPropertyValueConstructorsBoolP(void) +{ + Property::Value value(true); - type = Property::ROTATION; - CheckTypeName(type); - DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type ); - DALI_TEST_CHECK( PropertyTypes::Get() == type ); + DALI_TEST_CHECK( value.GetType() == Property::BOOLEAN ); + DALI_TEST_CHECK( value.Get() == true ); - type = Property::ROTATION; - CheckTypeName(type); - DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type ); - DALI_TEST_CHECK( PropertyTypes::Get() == type ); + END_TEST; +} - type = Property::STRING; - CheckTypeName(type); - DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type ); - DALI_TEST_CHECK( PropertyTypes::Get() == type ); +int UtcDaliPropertyValueConstructorBoolTypeP(void) +{ + Property::Value value(Property::BOOLEAN); - type = Property::ARRAY; - CheckTypeName(type); - DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type ); - DALI_TEST_CHECK( PropertyTypes::Get() == type ); + DALI_TEST_CHECK( value.GetType() == Property::BOOLEAN ); + DALI_TEST_CHECK( value.Get() == false ); - type = Property::MAP; - CheckTypeName(type); - DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type ); - DALI_TEST_CHECK( PropertyTypes::Get() == type ); END_TEST; +} +int UtcDaliPropertyValueConstructorsFloatP(void) +{ + Property::Value value(2.f); + + DALI_TEST_CHECK( value.GetType() == Property::FLOAT ); + DALI_TEST_CHECK( value.Get() == 2.f ); + + END_TEST; } -int UtcDaliPropertyValueConstructors02(void) +int UtcDaliPropertyValueConstructorsFloatTypeP(void) { - // Testing PropertyValue construction using value / reference types - // also testing the PropertyTypes::Get return same value as constructed + Property::Value value(Property::FLOAT); - TestApplication application; - tet_infoline("Testing Property::Value construction using values / references"); + DALI_TEST_CHECK( value.GetType() == Property::FLOAT ); + DALI_TEST_CHECK( value.Get() == 0.f ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsIntP(void) +{ + Property::Value value(1); + + DALI_TEST_CHECK( value.GetType() == Property::INTEGER ); + DALI_TEST_CHECK( value.Get() == 1 ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsIntTypeP(void) +{ + Property::Value value(Property::INTEGER); + + DALI_TEST_CHECK( value.GetType() == Property::INTEGER ); + DALI_TEST_CHECK( value.Get() == 0 ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsVector2P(void) +{ + Vector2 v(1,1); + Property::Value value(v); + + DALI_TEST_CHECK( value.GetType() == Property::VECTOR2 ); + DALI_TEST_CHECK( value.Get() == v ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsVector2TypeP(void) +{ + Property::Value value( Property::VECTOR2 ); + + DALI_TEST_CHECK( value.GetType() == Property::VECTOR2 ); + DALI_TEST_CHECK( value.Get() == Vector2::ZERO ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsVector3P(void) +{ + Vector3 v(1.f,2.f,3.f); + Property::Value value(v); + + DALI_TEST_CHECK( value.GetType() == Property::VECTOR3 ); + DALI_TEST_CHECK( value.Get() == v ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsVector3TypeP(void) +{ + Property::Value value( Property::VECTOR3 ); + + DALI_TEST_CHECK( value.GetType() == Property::VECTOR3 ); + DALI_TEST_CHECK( value.Get() == Vector3() ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsVector4P(void) +{ + Vector4 v(1.f,1.f,1.f,0.9f); + Property::Value value(v); + + DALI_TEST_CHECK( value.GetType() == Property::VECTOR4 ); + DALI_TEST_CHECK( value.Get() == v ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsVector4TypeP(void) +{ + Property::Value value( Property::VECTOR4 ); + + DALI_TEST_CHECK( value.GetType() == Property::VECTOR4 ); + DALI_TEST_CHECK( value.Get() == Vector4() ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsMatrix3P(void) +{ + Matrix3 v(1.0,1.0,1.0, 1.0,1.0,1.0, 1.0,1.0,1.0); + Property::Value value(v); + + DALI_TEST_CHECK( value.GetType() == Property::MATRIX3 ); + DALI_TEST_CHECK( value.Get() == v ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsMatrix3TypeP(void) +{ + Property::Value value( Property::MATRIX3 ); + + DALI_TEST_CHECK( value.GetType() == Property::MATRIX3 ); + DALI_TEST_CHECK( value.Get() == Matrix3() ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsMatrixP(void) +{ + 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}; + Matrix v(a); + Property::Value value(v); + + DALI_TEST_CHECK( value.GetType() == Property::MATRIX ); + DALI_TEST_CHECK( value.Get() == v ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsMatrixTypeP(void) +{ + Property::Value value( Property::MATRIX ); + + DALI_TEST_CHECK( value.GetType() == Property::MATRIX ); + DALI_TEST_CHECK( value.Get() == Matrix() ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsRectP(void) +{ + Rect v(1.0,1.0,1.0,1.0); + Property::Value value(v); + + DALI_TEST_EQUALS( value.GetType(), Property::RECTANGLE, TEST_LOCATION ); + DALI_TEST_CHECK( value.Get >() == v ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsRectTypeP(void) +{ + Property::Value value( Property::RECTANGLE ); + + DALI_TEST_CHECK( value.GetType() == Property::RECTANGLE ); + DALI_TEST_CHECK( value.Get >() == Rect(0,0,0,0) ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsAngleAxisP(void) +{ + AngleAxis input( Dali::ANGLE_90, Vector3::XAXIS ); + Property::Value value( input ); + + DALI_TEST_CHECK( value.GetType() == Property::ROTATION ); + AngleAxis result = value.Get(); + DALI_TEST_EQUALS( result.angle, input.angle, TEST_LOCATION ); + DALI_TEST_EQUALS( result.axis, input.axis, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsQuaternionP(void) +{ + Quaternion v( Radian( Math::PI ), Vector3::ZAXIS ); + Property::Value value(v); + + DALI_TEST_CHECK( value.GetType() == Property::ROTATION ); + DALI_TEST_EQUALS( v, value.Get(), 0.001, TEST_LOCATION); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsRotationTypeP(void) +{ + Property::Value value( Property::ROTATION ); + + DALI_TEST_CHECK( value.GetType() == Property::ROTATION ); + AngleAxis result = value.Get(); + DALI_TEST_EQUALS( result.angle, Radian(0.f), TEST_LOCATION ); + DALI_TEST_EQUALS( result.axis, Vector3::ZERO, TEST_LOCATION ); // identity quaternion returns a zero angle-axis + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsStringP(void) +{ + std::string v("1"); + Property::Value value(v); + + DALI_TEST_CHECK( value.GetType() == Property::STRING ); + DALI_TEST_CHECK( value.Get() == v ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsStringTypeP(void) +{ + Property::Value value( Property::STRING ); + + DALI_TEST_CHECK( value.GetType() == Property::STRING ); + DALI_TEST_CHECK( value.Get() == std::string() ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsArrayP(void) +{ + Property::Array foo; + Property::Value value( foo ); + + DALI_TEST_CHECK( value.GetType() == Property::ARRAY ); + DALI_TEST_CHECK( value.Get().Count() == 0 ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsArray2P(void) +{ + Property::Array foo; + foo.PushBack( Property::Value() ); + Property::Value value( foo ); + + DALI_TEST_CHECK( value.GetType() == Property::ARRAY ); + DALI_TEST_CHECK( value.Get().Count() == 1 ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsArrayTypeP(void) +{ + Property::Value value(Property::ARRAY); + + DALI_TEST_CHECK( value.GetType() == Property::ARRAY ); + DALI_TEST_CHECK( value.Get().Count() == 0 ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsMapP(void) +{ + Property::Map map; + Property::Value value( map ); + + DALI_TEST_CHECK( value.GetType() == Property::MAP ); + DALI_TEST_CHECK( value.Get().Count() == 0 ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsMap2P(void) +{ + Property::Map map; + map.Insert( "", "" ); + Property::Value value( map ); + + DALI_TEST_CHECK( value.GetType() == Property::MAP ); + DALI_TEST_CHECK( value.Get().Count() == 1 ); + END_TEST; +} + +int UtcDaliPropertyValueConstructorsMapTypeP(void) +{ + Property::Value value(Property::MAP); + + DALI_TEST_CHECK( value.GetType() == Property::MAP ); + DALI_TEST_CHECK( value.Get().Count() == 0 ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsExtentsTypeP(void) +{ + Property::Value value( Property::EXTENTS ); + + DALI_TEST_CHECK( value.GetType() == Property::EXTENTS ); + DALI_TEST_CHECK( value.Get() == Extents( 0u, 0u, 0u, 0u ) ); + + END_TEST; +} + +int UtcDaliPropertyValueConstructorsExtentsType2P(void) +{ + Property::Value value( Property::VECTOR4 ); + + DALI_TEST_CHECK( value.GetType() == Property::VECTOR4 ); + DALI_TEST_CHECK( value.Get() == Extents( 0u, 0u, 0u, 0u ) ); + + END_TEST; +} + +int UtcDaliPropertyValueCopyConstructorP(void) +{ + Property::Value value; + Property::Value value2( value ); + DALI_TEST_EQUALS( value.GetType(), value2.GetType(), TEST_LOCATION ); + DALI_TEST_EQUALS( value.GetMap(), value2.GetMap(), TEST_LOCATION ); + DALI_TEST_EQUALS( value.GetArray(), value2.GetArray(), TEST_LOCATION ); + END_TEST; +} + +int UtcDaliPropertyValueCopyConstructorBoolP(void) +{ + CheckCopyCtorP check(true); + END_TEST; +} + +int UtcDaliPropertyValueCopyConstructorFloatP(void) +{ + CheckCopyCtorP check(1.f); + END_TEST; +} + +int UtcDaliPropertyValueCopyConstructorIntP(void) +{ + CheckCopyCtorP check(1); + END_TEST; +} + +int UtcDaliPropertyValueCopyConstructoVector2P(void) +{ + CheckCopyCtorP check( Vector2(2,1) ); + END_TEST; +} + +int UtcDaliPropertyValueCopyConstructorVector3P(void) +{ + CheckCopyCtorP check( Vector3(3.f,2.f,1.f) ); + END_TEST; +} + +int UtcDaliPropertyValueCopyConstructorVector4P(void) +{ + CheckCopyCtorP check( Vector4(4.f,3.f,2.f,1.f) ); + END_TEST; +} + +int UtcDaliPropertyValueCopyConstructorMatrix3P(void) +{ + CheckCopyCtorP check( Matrix3::IDENTITY ); + END_TEST; +} + +int UtcDaliPropertyValueCopyConstructorMatrixP(void) +{ + CheckCopyCtorP check(Matrix::IDENTITY); + END_TEST; +} + +int UtcDaliPropertyValueCopyConstructorRectP(void) +{ + CheckCopyCtorP > check( Rect(1.0,1.0,1.0,1.0) ); + END_TEST; +} + +int UtcDaliPropertyValueCopyConstructorAngleAxisP(void) +{ + CheckCopyCtorP check( AngleAxis(Degree(1.0), Vector3(1.0,1.0,1.0)) ); + END_TEST; +} + +int UtcDaliPropertyValueCopyConstructorQuaternionP(void) +{ + CheckCopyCtorP check( Quaternion( Vector4(1.0, 1.0, 1.0, 1.0) ) ); + END_TEST; +} + +int UtcDaliPropertyValueCopyConstructorStringP(void) +{ + CheckCopyCtorP check( std::string("1") ); + END_TEST; +} + +int UtcDaliPropertyValueCopyConstructorArrayP(void) +{ + Property::Value value1(Property::ARRAY); + Property::Array* array= value1.GetArray(); + array->PushBack(Property::Value(1)); + + Property::Value value2( value1 ); + DALI_TEST_EQUALS( value1.GetType(), value2.GetType(), TEST_LOCATION ); + DALI_TEST_EQUALS( value1.GetArray()->Count(), value2.GetArray()->Count(), TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliPropertyValueCopyConstructorMapP(void) +{ + Property::Value value1(Property::MAP); + Property::Map* map = value1.GetMap(); + (*map)["1"] = Property::Value(1); + + Property::Value value2( value1 ); + DALI_TEST_EQUALS( value1.GetType(), value2.GetType(), TEST_LOCATION ); + DALI_TEST_EQUALS( value1.GetMap()->Count(), value2.GetMap()->Count(), TEST_LOCATION ); + DALI_TEST_EQUALS( value1.GetMap()->GetKey( 0 ), value2.GetMap()->GetKey( 0 ), TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliPropertyValueMoveConstructor(void) +{ + Property::Value value1( Vector4::ONE ); + DALI_TEST_EQUALS( Property::VECTOR4, value1.GetType(), TEST_LOCATION ); + + Vector4 valueVector; + DALI_TEST_EQUALS( true, value1.Get( valueVector ), TEST_LOCATION ); // Able to convert + DALI_TEST_EQUALS( valueVector, Vector4::ONE, TEST_LOCATION ); + + Property::Value value2( std::move( value1 ) ); + DALI_TEST_EQUALS( Property::NONE, value1.GetType(), TEST_LOCATION ); + DALI_TEST_EQUALS( false, value1.Get( valueVector ), TEST_LOCATION ); // Unable to convert, but no crash either + DALI_TEST_EQUALS( Property::VECTOR4, value2.GetType(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value2.Get( valueVector ), TEST_LOCATION ); // Able to convert + DALI_TEST_EQUALS( valueVector, Vector4::ONE, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliPropertyValueMoveConstructorArray(void) +{ + Property::Array array; + array.PushBack( 1 ); + array.PushBack( 2 ); + array.PushBack( 3 ); + DALI_TEST_EQUALS( 3u, array.Size(), TEST_LOCATION ); + + Property::Value value( std::move( array ) ); + DALI_TEST_ASSERTION( array.Size(), "Cannot use an object previously used as an r-value" ); // Our local variable should become invalid + + Property::Array* arrayPtr = value.GetArray(); + DALI_TEST_CHECK( arrayPtr ); + DALI_TEST_EQUALS( 3u, arrayPtr->Size(), TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliPropertyValueMoveConstructorMap(void) +{ + Property::Map map; + map[ 1 ] = 1; + map[ 2 ] = 2; + map[ 3 ] = 3; + DALI_TEST_EQUALS( 3u, map.Count(), TEST_LOCATION ); + + Property::Value value( std::move( map ) ); + DALI_TEST_ASSERTION( map.Count(), "Cannot use an object previously used as an r-value" ); // Our local variable should become invalid + + Property::Map* mapPtr = value.GetMap(); + DALI_TEST_CHECK( mapPtr ); + DALI_TEST_EQUALS( 3u, mapPtr->Count(), TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliPropertyValueAssignmentSelfP(void) +{ Property::Value value; + Property::Value* self = &value; + value = *self; + DALI_TEST_EQUALS( value.GetType(), Property::NONE, TEST_LOCATION ); + DALI_TEST_CHECK( value.GetMap() == NULL ); + DALI_TEST_CHECK( value.GetArray() == NULL ); + END_TEST; +} - bool b = false; - value = Property::Value(true); - value.Get(b); - DALI_TEST_CHECK( true == b ); +int UtcDaliPropertyValueAssignmentOperatorNoneP(void) +{ + Property::Value value; + value = Property::Value(); // type match + DALI_TEST_EQUALS( value.GetType(), Property::NONE, TEST_LOCATION ); + Property::Value copy( false ); + copy = value; // type mismatch + DALI_TEST_EQUALS( value.GetType(), Property::NONE, TEST_LOCATION ); + END_TEST; +} - float f = 5.f; - value = Property::Value(10.f); - value.Get(f); - DALI_TEST_CHECK( Dali::Equals(10.f, f) ); +int UtcDaliPropertyValueAssignmentOperatorBoolP(void) +{ + Property::Value value; + value = Property::Value(true); // type mismatch + DALI_TEST_CHECK( true == value.Get() ); + Property::Value copy( false ); + copy = value; // type match + DALI_TEST_CHECK( true == copy.Get() ); + END_TEST; +} - int i = 5; - value = Property::Value(10); - value.Get(i); - DALI_TEST_CHECK( 10 == i ); +int UtcDaliPropertyValueAssignmentOperatorIntP(void) +{ + Property::Value value; + value = Property::Value(10); // type mismatch + DALI_TEST_CHECK( 10 == value.Get() ); + Property::Value copy( 99 ); + copy = value; // type match + DALI_TEST_CHECK( 10 == copy.Get() ); + END_TEST; +} - unsigned int ui = 5; - value = Property::Value(10U); - value.Get(ui); - DALI_TEST_CHECK( 10 == ui ); +int UtcDaliPropertyValueAssignmentOperatorFloatP(void) +{ + Property::Value value; + value = Property::Value(10.f); // mismatch + DALI_TEST_CHECK( Dali::Equals(10.f, value.Get() ) ); + Property::Value copy(321.f); + copy = value; // match + DALI_TEST_CHECK( Dali::Equals(10.f, copy.Get() ) ); + END_TEST; +} - Vector2 v2 = Vector2(0,0); - value = Property::Value( Vector2(1,1) ); - value.Get(v2); - DALI_TEST_CHECK( Vector2(1,1) == v2 ); +int UtcDaliPropertyValueAssignmentOperatorVector2P(void) +{ + Property::Value value; + value = Property::Value( Vector2(1,2) ); // mismatch + DALI_TEST_CHECK( Vector2(1,2) == value.Get() ); + Property::Value copy( Property::VECTOR2 ); + copy = value; // match + DALI_TEST_CHECK( Vector2(1,2) == copy.Get() ); + END_TEST; +} - Vector3 v3 = Vector3(0.f,0.f,0.f); - value = Property::Value( Vector3(1.f,1.f,1.f) ); - value.Get(v3); - DALI_TEST_CHECK( Vector3(1.f,1.f,1.f) == v3 ); +int UtcDaliPropertyValueAssignmentOperatorVector3P(void) +{ + Property::Value value; + value = Property::Value( Vector3(1.f,2.f,3.f) ); // mismatch + DALI_TEST_CHECK( Vector3(1.f,2.f,3.f) == value.Get() ); + Property::Value copy( Property::VECTOR3 ); + copy = value; // match + DALI_TEST_CHECK( Vector3(1.f,2.f,3.f) == copy.Get() ); + END_TEST; +} - Vector4 v4 = Vector4(0,0,0,0); - value = Property::Value( Vector4(1,1,1,1) ); - value.Get(v4); - DALI_TEST_CHECK( Vector4(1,1,1,1) == v4 ); +int UtcDaliPropertyValueAssignmentOperatorVector4P(void) +{ + Property::Value value; + value = Property::Value( Vector4(1,2,3,4) ); // mismatch + DALI_TEST_CHECK( Vector4(1,2,3,4) == value.Get() ); + Property::Value copy( Vector4(0,1,2,3) ); + copy = value; // match + DALI_TEST_CHECK( Vector4(1,2,3,4) == copy.Get() ); + END_TEST; +} - Matrix3 m3 = Matrix3(0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f); - value = Property::Value( Matrix3::IDENTITY ); - value.Get(m3); - DALI_TEST_CHECK( Matrix3::IDENTITY == m3 ); +int UtcDaliPropertyValueAssignmentOperatorMatrix3P(void) +{ + Property::Value value; + value = Property::Value( Matrix3::IDENTITY ); // mismatch + DALI_TEST_CHECK( Matrix3::IDENTITY == value.Get() ); + Property::Value copy( Property::MATRIX3 ); + copy = value; // match + DALI_TEST_CHECK( Matrix3::IDENTITY == copy.Get() ); + END_TEST; +} - Matrix m = Matrix(true); - value = Property::Value( Matrix::IDENTITY ); - value.Get(m); - DALI_TEST_CHECK( Matrix::IDENTITY == m ); +int UtcDaliPropertyValueAssignmentOperatorMatrixP(void) +{ + Property::Value value; + value = Property::Value( Matrix::IDENTITY ); // mismatch + DALI_TEST_CHECK( Matrix::IDENTITY == value.Get() ); + Matrix foo; + Property::Value copy( foo ); + copy = value; // match + DALI_TEST_CHECK( Matrix::IDENTITY == copy.Get() ); + END_TEST; +} +int UtcDaliPropertyValueAssignmentOperatorRectP(void) +{ + Property::Value value; typedef Dali::Rect Rectangle; - Rectangle r = Rectangle(0,0,0,0); - value = Property::Value( Rectangle(1,1,1,1) ); - value.Get(r); - DALI_TEST_CHECK( Rectangle(1,1,1,1) == r ); - - Quaternion q = Quaternion(0,0,0,0); - value = Property::Value( Quaternion(1,1,1,1) ); - value.Get(q); - DALI_TEST_CHECK( Quaternion(1,1,1,1) == q ); - - AngleAxis aa = AngleAxis( Degree(0), Vector3(0.f,0.f,0.f) ); - value = Property::Value( AngleAxis( Radian(Math::PI_2), Vector3::XAXIS )); - value.Get(aa); - Quaternion r8(Radian(Degree(aa.angle)), aa.axis); - DALI_TEST_EQUALS(r8, Quaternion(Radian(Math::PI_2), Vector3::XAXIS), 0.001, TEST_LOCATION); - - std::string s = "no"; - value = Property::Value("yes"); - value.Get(s); - DALI_TEST_CHECK( "yes" == s ); + value = Property::Value( Rectangle(4,3,2,1) ); // mismatch + DALI_TEST_CHECK( Rectangle(4,3,2,1) == value.Get() ); + Property::Value copy( Property::RECTANGLE ); + copy = value; // match + Rectangle copyRect; + copy.Get(copyRect); + DALI_TEST_CHECK( Rectangle(4,3,2,1) == copyRect ); + END_TEST; +} + +int UtcDaliPropertyValueAssignmentOperatorQuaternionP(void) +{ + Property::Value value; + Quaternion result( Radian( Math::PI_2 ), Vector3::YAXIS ); + value = Property::Value( result ); + + DALI_TEST_EQUALS( value.Get(), result, 0.001, TEST_LOCATION ); + Property::Value copy( Property::ROTATION ); + copy = value; // match + DALI_TEST_EQUALS( copy.Get(), result, 0.001, TEST_LOCATION ); + END_TEST; +} + + +int UtcDaliPropertyValueAssignmentOperatorAngleAxisP(void) +{ + Property::Value value; + value = Property::Value( AngleAxis( Radian(Math::PI_2), Vector3::XAXIS ) ); // mismatch + DALI_TEST_EQUALS( value.Get().axis, Vector3::XAXIS, TEST_LOCATION ); + DALI_TEST_EQUALS( value.Get().angle, Radian(Math::PI_2), TEST_LOCATION ); + Property::Value copy( Property::ROTATION ); + copy = value; // match + DALI_TEST_EQUALS( value.Get().axis, copy.Get().axis, TEST_LOCATION ); + DALI_TEST_EQUALS( value.Get().angle, copy.Get().angle, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliPropertyValueAssignmentOperatorStringP(void) +{ + Property::Value value; + value = Property::Value("yes"); // mismatch + DALI_TEST_CHECK( "yes" == value.Get() ); + Property::Value copy("no"); + copy = value; // match + DALI_TEST_CHECK( "yes" == copy.Get() ); + END_TEST; +} + +int UtcDaliPropertyValueAssignmentOperatorArrayP(void) +{ + Property::Value value; + value = Property::Value(Property::ARRAY); // mismatch + value.GetArray()->PushBack(10); + DALI_TEST_CHECK( value.GetArray() ); + Property::Value copy(Property::ARRAY); + copy = value; // match Property::Array array; - value = Property::Value(Property::ARRAY); - value.AppendItem(10); - value.Get(array); + copy.Get( array ); int getItem = 0; - array[0].Get(getItem); + array[0].Get( getItem ); DALI_TEST_CHECK( getItem == 10 ); + END_TEST; +} +int UtcDaliPropertyValueAssignmentOperatorMapP(void) +{ + Property::Value value; + value = Property::Value(Property::MAP); // mismatch + value.GetMap()->Insert("key", "value"); + Property::Value copy( Property::MAP ); // match + copy = value; Property::Map map; - value = Property::Value(Property::MAP); - value.SetValue("key", "value"); - value.Get(map); + copy.Get( map ); DALI_TEST_CHECK( map.GetKey(0) == "key" ); + END_TEST; +} +int UtcDaliPropertyValueAssignmentOperatorExtentsP(void) +{ + Property::Value value; + value = Property::Value( Extents( 4, 3, 2, 1 ) ); // mismatch + DALI_TEST_CHECK( Extents( 4, 3, 2, 1 ) == value.Get() ); + Property::Value copy( Property::EXTENTS ); + copy = value; // match + Extents copyExtents; + copy.Get(copyExtents); + DALI_TEST_CHECK( Extents( 4, 3, 2, 1 ) == copyExtents ); END_TEST; } +int UtcDaliPropertyValueMoveAssignmentOperator(void) +{ + Property::Value value1( Vector4::ONE ); + DALI_TEST_EQUALS( Property::VECTOR4, value1.GetType(), TEST_LOCATION ); + + Vector4 valueVector; + DALI_TEST_EQUALS( true, value1.Get( valueVector ), TEST_LOCATION ); // Able to convert + DALI_TEST_EQUALS( valueVector, Vector4::ONE, TEST_LOCATION ); + + Property::Value value2; + value2 = std::move( value1 ); + DALI_TEST_EQUALS( Property::NONE, value1.GetType(), TEST_LOCATION ); + DALI_TEST_EQUALS( false, value1.Get( valueVector ), TEST_LOCATION ); // Unable to convert, but no crash either + DALI_TEST_EQUALS( Property::VECTOR4, value2.GetType(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value2.Get( valueVector ), TEST_LOCATION ); // Able to convert + DALI_TEST_EQUALS( valueVector, Vector4::ONE, TEST_LOCATION ); + + // Change to another value type + value2 = std::move( Property::Value( 1.0f ) ); + DALI_TEST_EQUALS( false, value2.Get( valueVector ), TEST_LOCATION ); // Should not be able to convert to a Vector4 now + float valueFloat; + DALI_TEST_EQUALS( true, value2.Get( valueFloat ), TEST_LOCATION ); // Should be able to convert to a float now + DALI_TEST_EQUALS( valueFloat, 1.0f, TEST_LOCATION ); + + // Ensure self assignment doesn't do anything silly + value2 = std::move( value2 ); + DALI_TEST_EQUALS( true, value2.Get( valueFloat ), TEST_LOCATION ); + DALI_TEST_EQUALS( valueFloat, 1.0f, TEST_LOCATION ); + + END_TEST; +} -int UtcDaliPropertyValueCopyConstructors01(void) +int UtcDaliPropertyValueGetTypeP(void) { - TestApplication application; - tet_infoline("Testing Property::Value copy construction using values / references"); + Property::Value value; + DALI_TEST_CHECK( value.GetType() == Property::NONE ); + END_TEST; +} + +int UtcDaliPropertyValueGetBoolP(void) +{ + Property::Value value(true); + bool boolean( false ); + DALI_TEST_CHECK( value.Get( boolean ) == true ); + DALI_TEST_CHECK( value.Get() == true ); + std::string string; + DALI_TEST_CHECK( value.Get( string ) == false ); + value = Property::Value(1.f); + DALI_TEST_CHECK( value.Get() == 1.f ); + END_TEST; +} +int UtcDaliPropertyValueGetBoolN(void) +{ Property::Value value; + DALI_TEST_CHECK( value.Get() == false ); + bool boolean( false ); + DALI_TEST_CHECK( value.Get( boolean ) == false ); + END_TEST; +} - value = Property::Value(true); - { - Property::Value copy( value ); - DALI_TEST_CHECK( true == copy.Get() ); - } +int UtcDaliPropertyValueGetFloatP(void) +{ + Property::Value value(1.1f); + float flow( 0.0f ); + DALI_TEST_EQUALS( 1.1f, value.Get(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value.Get( flow ), TEST_LOCATION ); + DALI_TEST_EQUALS( 1.1f, flow, TEST_LOCATION ); - value = Property::Value(10.f); - { - Property::Value copy( value ); - DALI_TEST_CHECK( Dali::Equals(10.f, copy.Get() ) ); - } + Property::Value intValue(100); + DALI_TEST_EQUALS( 100.f, intValue.Get(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, intValue.Get( flow ), TEST_LOCATION ); + DALI_TEST_EQUALS( 100.f, flow, TEST_LOCATION ); - value = Property::Value(10); - { - Property::Value copy( value ); - DALI_TEST_CHECK( 10 == copy.Get() ); - } + END_TEST; +} - value = Property::Value(10U); - { - Property::Value copy( value ); - DALI_TEST_CHECK( 10 == copy.Get< unsigned int>() ); - } +int UtcDaliPropertyValueGetFloatN(void) +{ + Property::Value value; + float result( 1.0f ); + DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( 1.0f, result, TEST_LOCATION ); // result is not modified + Property::Value value2( "" ); + DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( 1.0f, result, TEST_LOCATION ); // result is not modified + END_TEST; +} - value = Property::Value( Vector2(1,1) ); - { - Property::Value copy( value ); - DALI_TEST_CHECK( Vector2(1,1) == copy.Get() ); - } +int UtcDaliPropertyValueGetIntP(void) +{ + Property::Value value(123); + int result( 10 ); + DALI_TEST_EQUALS( 123, value.Get(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( 123, result, TEST_LOCATION ); - value = Property::Value( Vector3(1.f,1.f,1.f) ); - { - Property::Value copy( value ); - DALI_TEST_CHECK( Vector3(1.f,1.f,1.f) == copy.Get() ); - } + Property::Value floatValue(21.f); + DALI_TEST_EQUALS( 21, floatValue.Get(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, floatValue.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( 21, result, TEST_LOCATION ); - value = Property::Value( Vector4(1,1,1,1) ); - { - Property::Value copy( value ); - DALI_TEST_CHECK( Vector4(1,1,1,1) == copy.Get() ); - } + END_TEST; +} - value = Property::Value( Matrix3::IDENTITY ); - { - Property::Value copy( value ); - DALI_TEST_CHECK( Matrix3::IDENTITY == copy.Get() ); - } +int UtcDaliPropertyValueGetIntN(void) +{ + Property::Value value; + int result( 10 ); + DALI_TEST_EQUALS( 0, value.Get(), TEST_LOCATION ); + DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( 10, result, TEST_LOCATION ); // result is not modified + Property::Value value2(""); + DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( 10, result, TEST_LOCATION ); // result is not modified + END_TEST; +} - value = Property::Value( Matrix::IDENTITY ); - { - Property::Value copy( value ); - DALI_TEST_CHECK( Matrix::IDENTITY == copy.Get() ); - } +int UtcDaliPropertyValueGetRectP(void) +{ + Property::Value value( Rect(1,2,3,4) ); + Rect result(4,3,2,1); + DALI_TEST_EQUALS( Rect(1,2,3,4), value.Get< Rect >(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Rect(1,2,3,4), result, TEST_LOCATION ); + END_TEST; +} - typedef Dali::Rect Rectangle; +int UtcDaliPropertyValueGetRectN(void) +{ + Property::Value value; + Rect result(4,3,2,1); + DALI_TEST_EQUALS( Rect(0,0,0,0), value.Get< Rect >(), TEST_LOCATION ); + DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Rect(4,3,2,1), result, TEST_LOCATION ); + Property::Value value2(""); + DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Rect(4,3,2,1), result, TEST_LOCATION ); + END_TEST; +} - value = Property::Value( Rectangle(1,1,1,1) ); - { - Property::Value copy( value ); - Rectangle copyRect; - copy.Get(copyRect); - DALI_TEST_CHECK( Rectangle(1,1,1,1) == copyRect); - } +int UtcDaliPropertyValueGetVector2P(void) +{ + Property::Value value( Vector2(1.0f,2.0f) ); + Vector2 result; + DALI_TEST_EQUALS( Vector2(1.0f,2.0f), value.Get< Vector2 >(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Vector2(1.0f,2.0f), result, TEST_LOCATION ); + END_TEST; +} - value = Property::Value( Quaternion(1,1,1,1) ); - { - Property::Value copy( value ); - DALI_TEST_CHECK( Quaternion(1,1,1,1) == copy.Get() ); - } +int UtcDaliPropertyValueGetVector2fromVector3P(void) +{ + Property::Value value( Vector3(1.f,2.f,3.f) ); + Vector2 result; + DALI_TEST_EQUALS( Vector2(1.0f,2.0f), value.Get< Vector2 >(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Vector2(1.0f,2.0f), result, TEST_LOCATION ); + END_TEST; +} - value = Property::Value( AngleAxis( Radian(Math::PI_2), Vector3::XAXIS )); - { - Property::Value copy( value ); - DALI_TEST_CHECK( value.Get().axis == copy.Get().axis ); - DALI_TEST_CHECK( value.Get().angle == copy.Get().angle ); - } +int UtcDaliPropertyValueGetVector2fromVector4P(void) +{ + Property::Value value( Vector4(1.f,2.f,3.f,4.f) ); + Vector2 result; + DALI_TEST_EQUALS( Vector2(1.0f,2.0f), value.Get< Vector2 >(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Vector2(1.0f,2.0f), result, TEST_LOCATION ); + END_TEST; +} - value = Property::Value("yes"); - { - Property::Value copy( value ); - DALI_TEST_CHECK( "yes" == copy.Get() ); - } +int UtcDaliPropertyValueGetVector2N(void) +{ + Property::Value value; + Vector2 result; + DALI_TEST_EQUALS( Vector2(0.f,0.f), value.Get< Vector2 >(), TEST_LOCATION ); + DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Vector2(), result, TEST_LOCATION ); + Property::Value value2(""); + DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Vector2(), result, TEST_LOCATION ); + END_TEST; +} - Property::Array array; - value = Property::Value(Property::ARRAY); - value.AppendItem(10); - { - Property::Value copy( value ); - copy.Get( array ); - int getItem = 0; - array[0].Get( getItem ); - DALI_TEST_CHECK( getItem == 10 ); - } - Property::Map map; - value = Property::Value(Property::MAP); - value.SetValue("key", "value"); - { - Property::Value copy( value ); - copy.Get( map ); - DALI_TEST_CHECK( map.GetKey(0) == "key" ); - } +int UtcDaliPropertyValueGetVector3P(void) +{ + Property::Value value( Vector3(1.0f,2.0f,-1.f) ); + Vector3 result; + DALI_TEST_EQUALS( Vector3(1.0f,2.0f,-1.f), value.Get< Vector3 >(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Vector3(1.0f,2.0f,-1.f), result, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliPropertyValueGetVector3FromVector2P(void) +{ + Property::Value value( Vector2(1.0f,2.0f) ); + Vector3 result(99.f,88.f,77.f); + DALI_TEST_EQUALS( Vector3(1.0f,2.0f,0.f), value.Get< Vector3 >(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Vector3(1.0f,2.0f,0.f), result, TEST_LOCATION ); + END_TEST; +} +int UtcDaliPropertyValueGetVector3FromVector4P(void) +{ + Property::Value value( Vector4(4.f,3.f,2.f,1.f) ); + Vector3 result; + DALI_TEST_EQUALS( Vector3(4.f,3.f,2.f), value.Get< Vector3 >(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Vector3(4.f,3.f,2.f), result, TEST_LOCATION ); END_TEST; } +int UtcDaliPropertyValueGetVector3N(void) +{ + Property::Value value; + Vector3 result; + DALI_TEST_EQUALS( Vector3(0.f,0.f,0.f), value.Get< Vector3 >(), TEST_LOCATION ); + DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Vector3(), result, TEST_LOCATION ); + Property::Value value2(""); + DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Vector3(), result, TEST_LOCATION ); + END_TEST; +} -int UtcDaliPropertyValueAssignmentOperator01(void) +int UtcDaliPropertyValueGetVector4P(void) { - // Testing Property Value assignment - TestApplication application; - tet_infoline("Testing Property::Value assignment operator"); + Property::Value value( Vector4(1.f,2.f,-1.f,-3.f) ); + Vector4 result; + DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,-3.f), value.Get< Vector4 >(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,-3.f), result, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliPropertyValueGetVector4FromVector2P(void) +{ + Property::Value value( Vector2(-1.f,-3.f) ); + Vector4 result(99.f,88.f,77.f,66.f); + DALI_TEST_EQUALS( Vector4(-1.f,-3.f,0.f,0.f), value.Get< Vector4 >(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Vector4(-1.f,-3.f,0.f,0.f), result, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliPropertyValueGetVector4FromVector3P(void) +{ + Property::Value value( Vector3(1.f,2.f,-1.f) ); + Vector4 result(99.f,88.f,77.f,66.f); + DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,0.f), value.Get< Vector4 >(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,0.f), result, TEST_LOCATION ); + END_TEST; +} +int UtcDaliPropertyValueGetVector4N(void) +{ Property::Value value; + Vector4 result; + DALI_TEST_EQUALS( Vector4(0.f,0.f,0.f,0.f), value.Get< Vector4 >(), TEST_LOCATION ); + DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Vector4(), result, TEST_LOCATION ); + Property::Value value2(""); + DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Vector4(), result, TEST_LOCATION ); + END_TEST; +} +int UtcDaliPropertyValueGetMatrix3P(void) +{ + Property::Value value( Matrix3(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f) ); + Matrix3 result; + 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 ); + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + 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 ); + END_TEST; +} - value = Property::Value(true); - { - Property::Value copy( false ); - copy = value; - DALI_TEST_CHECK( true == copy.Get() ); - } +int UtcDaliPropertyValueGetMatrix3N(void) +{ + Property::Value value; + Matrix3 result(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f); + DALI_TEST_EQUALS( Matrix3(), value.Get< Matrix3 >(), TEST_LOCATION ); + DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION ); + 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 ); + Property::Value value2(""); + DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION ); + 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 ); + END_TEST; +} - value = Property::Value(10.f); - { - Property::Value copy(false); - copy = value; - DALI_TEST_CHECK( Dali::Equals(10.f, copy.Get() ) ); - } +int UtcDaliPropertyValueGetMatrixP(void) +{ + float matrixValues[16] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 }; + Matrix input( matrixValues ); + Property::Value value( input ); + Matrix result; + DALI_TEST_EQUALS( input, value.Get< Matrix >(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( input, result, TEST_LOCATION ); + END_TEST; +} - value = Property::Value(10); - { - Property::Value copy(false); - copy = value; - DALI_TEST_CHECK( 10 == copy.Get() ); - } +int UtcDaliPropertyValueGetMatrixN(void) +{ + Property::Value value; + Matrix result( Matrix::IDENTITY ); + DALI_TEST_EQUALS( Matrix(), value.Get< Matrix >(), TEST_LOCATION ); + DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Matrix::IDENTITY, result, TEST_LOCATION ); + + Property::Value value2(""); + DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Matrix::IDENTITY, result, TEST_LOCATION ); + END_TEST; +} - value = Property::Value(10U); - { - Property::Value copy(false); - copy = value; - DALI_TEST_CHECK( 10 == copy.Get< unsigned int>() ); - } +int UtcDaliPropertyValueGetAngleAxisP(void) +{ + AngleAxis input( Dali::ANGLE_90, Vector3::XAXIS ); + Property::Value value( input ); + AngleAxis result = value.Get(); + DALI_TEST_EQUALS( input.angle, result.angle, TEST_LOCATION ); + DALI_TEST_EQUALS( input.axis, result.axis, TEST_LOCATION ); + + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( input, result, TEST_LOCATION ); + END_TEST; +} - value = Property::Value( Vector2(1,1) ); - { - Property::Value copy(false); - copy = value; - DALI_TEST_CHECK( Vector2(1,1) == copy.Get() ); - } +int UtcDaliPropertyValueGetAngleAxisN(void) +{ + Property::Value value; + AngleAxis b = value.Get(); + AngleAxis result; + DALI_TEST_EQUALS( (Radian)0.f, b.angle, TEST_LOCATION ); + DALI_TEST_EQUALS( Vector3::ZERO, b.axis, TEST_LOCATION ); + DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( AngleAxis(), result, TEST_LOCATION ); + + Property::Value value2(""); + DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( AngleAxis(), result, TEST_LOCATION ); + END_TEST; +} - value = Property::Value( Vector3(1.f,1.f,1.f) ); - { - Property::Value copy(false); - copy = value; - DALI_TEST_CHECK( Vector3(1.f,1.f,1.f) == copy.Get() ); - } +int UtcDaliPropertyValueGetQuaternionP(void) +{ + Vector3 axis(1, 1, 0); + axis.Normalize(); - value = Property::Value( Vector4(1,1,1,1) ); - { - Property::Value copy(false); - copy = value; - DALI_TEST_CHECK( Vector4(1,1,1,1) == copy.Get() ); - } + Quaternion result( Radian( 1.f ), axis ); + Property::Value value( result ); - value = Property::Value( Matrix3::IDENTITY ); - { - Property::Value copy(false); - copy = value; - DALI_TEST_CHECK( Matrix3::IDENTITY == copy.Get() ); - } + DALI_TEST_EQUALS( result, value.Get< Quaternion >(), TEST_LOCATION ); + Quaternion test2; + DALI_TEST_EQUALS( true, value.Get( test2 ), TEST_LOCATION ); + END_TEST; +} - value = Property::Value( Matrix::IDENTITY ); - { - Property::Value copy(false); - copy = value; - DALI_TEST_CHECK( Matrix::IDENTITY == copy.Get() ); - } +int UtcDaliPropertyValueGetQuaternionN(void) +{ + Property::Value value; + Vector3 axis(1, 1, 0); + axis.Normalize(); + Quaternion result( Radian( 1.f ), axis ); + Quaternion test(result); + + DALI_TEST_EQUALS( Quaternion(), value.Get< Quaternion >(), TEST_LOCATION ); + DALI_TEST_EQUALS( false, value.Get( test ), TEST_LOCATION ); + DALI_TEST_EQUALS( test, result, TEST_LOCATION ); + + Property::Value value2(""); + DALI_TEST_EQUALS( false, value2.Get( test ), TEST_LOCATION ); + DALI_TEST_EQUALS( test, result, TEST_LOCATION ); + END_TEST; +} - typedef Dali::Rect Rectangle; +int UtcDaliPropertyValueGetStringP(void) +{ + Property::Value value( std::string("hello") ); + std::string result; + DALI_TEST_EQUALS( std::string("hello"), value.Get< std::string >(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( std::string("hello"), result, TEST_LOCATION ); + + Property::Value value2( "C hi!" ); + DALI_TEST_EQUALS( "C hi!", value2.Get< std::string >(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value2.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( "C hi!", result, TEST_LOCATION ); + END_TEST; +} - value = Property::Value( Rectangle(1,1,1,1) ); - { - Property::Value copy(false); - copy = value; - Rectangle copyRect; - copy.Get(copyRect); - DALI_TEST_CHECK( Rectangle(1,1,1,1) == copyRect); - } +int UtcDaliPropertyValueGetStringN(void) +{ + Property::Value value; + std::string result("doesn't change"); + DALI_TEST_EQUALS( std::string(), value.Get< std::string >(), TEST_LOCATION ); + DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( "doesn't change", result, TEST_LOCATION ); + + Property::Value value2(10); + DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( "doesn't change", result, TEST_LOCATION ); + + Property::Value value3((char*)NULL); + DALI_TEST_EQUALS( true, value3.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( std::string(), result, TEST_LOCATION ); + END_TEST; +} - value = Property::Value( Quaternion(1,1,1,1) ); - { - Property::Value copy(false); - copy = value; - DALI_TEST_CHECK( Quaternion(1,1,1,1) == copy.Get() ); - } +int UtcDaliPropertyValueGetArrayP(void) +{ + Property::Value value( Property::ARRAY ); + DALI_TEST_CHECK( NULL != value.GetArray() ); + value.GetArray()->PushBack( Property::Value(1) ); + Property::Array got = value.Get(); + DALI_TEST_CHECK( got[0].Get() == 1); + Property::Array result; + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_CHECK( result[0].Get() == 1); + END_TEST; +} - value = Property::Value( AngleAxis( Radian(Math::PI_2), Vector3::XAXIS )); - { - Property::Value copy(false); - copy = value; - DALI_TEST_CHECK( value.Get().axis == copy.Get().axis ); - DALI_TEST_CHECK( value.Get().angle == copy.Get().angle ); - } +int UtcDaliPropertyValueGetArrayN(void) +{ + Property::Value value; + DALI_TEST_CHECK( NULL == value.GetArray() ); + Property::Array result; + result.PushBack( Property::Value( 10 ) ); + DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( 1u, result.Count(), TEST_LOCATION ); // array is not modified + + Property::Value value2(""); + DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( 1u, result.Count(), TEST_LOCATION ); // array is not modified + END_TEST; +} - value = Property::Value("yes"); - { - Property::Value copy(false); - copy = value; - DALI_TEST_CHECK( "yes" == copy.Get() ); - } +int UtcDaliPropertyValueGetMapP(void) +{ + Property::Value value(Property::MAP); + DALI_TEST_CHECK( NULL == value.GetArray() ); + DALI_TEST_CHECK( NULL != value.GetMap() ); + value.GetMap()->Insert("key", Property::Value(1)); + Property::Map result = value.Get(); + DALI_TEST_CHECK(result.Find("key")->Get() == 1); + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_CHECK(result.Find("key")->Get() == 1); + END_TEST; +} - Property::Array array; - value = Property::Value(Property::ARRAY); - value.AppendItem(10); - { - Property::Value copy(false); - copy = value; - copy.Get( array ); - int getItem = 0; - array[0].Get( getItem ); - DALI_TEST_CHECK( getItem == 10 ); - } - Property::Map map; - value = Property::Value(Property::MAP); - value.SetValue("key", "value"); - { - Property::Value copy(false); - copy = value; - copy.Get( map ); - DALI_TEST_CHECK( map.GetKey(0) == "key" ); - } +int UtcDaliPropertyValueGetMapN(void) +{ + Property::Value value; + DALI_TEST_CHECK( NULL == value.GetMap() ); + DALI_TEST_EQUALS( 0u, value.Get().Count(), TEST_LOCATION ); + Property::Map result; + result.Insert("key", "value" ); + DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( 1u, result.Count(), TEST_LOCATION ); + + Property::Value value2(""); + DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( 1u, result.Count(), TEST_LOCATION ); // array is not modified + END_TEST; +} +int UtcDaliPropertyValueGetExtentsP(void) +{ + Property::Value value( Extents( 1u, 2u, 3u, 4u ) ); + Extents result( 4u, 3u, 2u, 1u ); + DALI_TEST_EQUALS( Extents( 1u, 2u, 3u, 4u ), value.Get(), TEST_LOCATION ); + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( Extents( 1u, 2u, 3u, 4u ), result, TEST_LOCATION ); END_TEST; } +int UtcDaliPropertyValueEnum(void) +{ + enum class E { zero, e }; + Property::Value value( E::e ); + DALI_TEST_EQUALS( static_cast(E::e), static_cast(value.Get()), TEST_LOCATION ); + DALI_TEST_EQUALS( static_cast(E::e), value.Get(), TEST_LOCATION ); + E result; + DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION ); + DALI_TEST_EQUALS( static_cast(E::e), static_cast(result), TEST_LOCATION ); + int result2; + DALI_TEST_EQUALS( true, value.Get( result2 ), TEST_LOCATION ); + DALI_TEST_EQUALS( static_cast(E::e), result2, TEST_LOCATION ); + END_TEST; +} int UtcDaliPropertyValueOutputStream(void) { @@ -571,90 +1272,148 @@ int UtcDaliPropertyValueOutputStream(void) { std::ostringstream stream; stream << value; - DALI_TEST_CHECK( stream.str() == "1") + DALI_TEST_CHECK( stream.str() == "1" ) + } + + { + Property::Value empty; + std::ostringstream stream; + stream << empty; + DALI_TEST_EQUALS( stream.str(), "undefined type", TEST_LOCATION ); + } + + { + Property::Value empty( Property::NONE ); + std::ostringstream stream; + stream << empty; + DALI_TEST_CHECK( stream.str() == "undefined type" ) } { value = Property::Value(20.2f); std::ostringstream stream; stream << value; - DALI_TEST_CHECK( stream.str() == "20.2") + DALI_TEST_CHECK( stream.str() == "20.2" ) } { value = Property::Value(-25); std::ostringstream stream; stream << value; - DALI_TEST_CHECK( stream.str() == "-25") + DALI_TEST_CHECK( stream.str() == "-25" ) } { - value = Property::Value(25U); + value = Property::Value( Vector2(1.f,1.f) ); std::ostringstream stream; stream << value; - DALI_TEST_CHECK( stream.str() == "25") + DALI_TEST_CHECK( stream.str() == "[1, 1]" ); } { - value = Property::Value( Vector2(1.f,1.f) ); + value = Property::Value( Vector3(1.f,1.f,1.f) ); std::ostringstream stream; stream << value; - DALI_TEST_CHECK( stream.str() == "[1, 1]"); + DALI_TEST_CHECK( stream.str() == "[1, 1, 1]" ); } { - value = Property::Value( Vector3(1.f,1.f,1.f) ); + value = Property::Value( Vector4(-4.f,-3.f,-2.f,-1.f) ); std::ostringstream stream; stream << value; - DALI_TEST_CHECK( stream.str() == "[1, 1, 1]"); + DALI_TEST_EQUALS( stream.str(), "[-4, -3, -2, -1]", TEST_LOCATION ); } { value = Property::Value( Matrix3::IDENTITY ); std::ostringstream stream; stream << value; - DALI_TEST_CHECK( stream.str() == "[ [1, 0, 0], [0, 1, 0], [0, 0, 1] ]"); + DALI_TEST_CHECK( stream.str() == "[ 1, 0, 0, 0, 1, 0, 0, 0, 1 ]" ); } { value = Property::Value( Matrix::IDENTITY ); std::ostringstream stream; stream << value; - DALI_TEST_CHECK( stream.str() == "[ [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1] ]"); + DALI_TEST_CHECK( stream.str() == "[ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ]" ); } { value = Property::Value( Rectangle(1,2,3,4) ); std::ostringstream stream; stream << value; - DALI_TEST_CHECK( stream.str() == "[1, 2, 3, 4]"); + DALI_TEST_CHECK( stream.str() == "[1, 2, 3, 4]" ); } { - value = Property::Value( AngleAxis( Radian(1.2f), Vector3::XAXIS )); + value = Property::Value( AngleAxis( Dali::ANGLE_120, Vector3::XAXIS ) ); std::ostringstream stream; stream << value; tet_printf("angle axis = %s \n", stream.str().c_str() ); - DALI_TEST_CHECK( stream.str() == "[1.2, -0, 0, 0]"); + DALI_TEST_EQUALS( stream.str(), "[ Axis: [1, 0, 0], Angle: 120 degrees ]", TEST_LOCATION ); + } + + { + value = Property::Value( std::string( "Foo" ) ); + std::ostringstream stream; + stream << value; + DALI_TEST_CHECK( stream.str() == "Foo" ); } - // Maps and arrays currently not supported, we just check a message is output { Property::Map map; + map.Insert("key", "value"); + map.Insert("duration", 10); + map.Insert("color", Vector4(1.0, 0.5, 1.0, 1.0)); + value = Property::Value( map ); std::ostringstream stream; - stream << value; - DALI_TEST_CHECK( !stream.str().empty() ); + stream << value; + tet_printf("Checking Property::Value is %s", stream.str().c_str()); + DALI_TEST_CHECK( !stream.str().compare("Map(3) = {key:value, duration:10, color:[1, 0.5, 1, 1]}")); } { Property::Array array; + array.PushBack(0); + array.PushBack(2); + array.PushBack(3); value = Property::Value( array ); std::ostringstream stream; stream << value; - DALI_TEST_CHECK( !stream.str().empty() ); + tet_printf("Checking Property::Value is %s", stream.str().c_str()); + DALI_TEST_CHECK( !stream.str().compare("Array(3) = [0, 2, 3]") ); + } + + { + Property::Map map; + Property::Map map2; + Property::Array array; + + map2.Insert("key", "value"); + map2.Insert("duration", 10); + map.Insert("color", Vector4(1.0, 0.5, 1.0, 1.0)); + map.Insert("timePeriod", map2); + array.PushBack(Vector2(1, 0)); + array.PushBack(Vector2(0, 1)); + array.PushBack(Vector2(1, 0)); + array.PushBack(Vector2(0, 0.5)); + map.Insert("texCoords", array); + value = Property::Value( map ); + + std::ostringstream stream; + stream << value; + + tet_printf("Checking Property::Value is %s", stream.str().c_str()); + + 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]]}")); } + { + value = Property::Value( Extents( 1u, 2u, 3u, 4u ) ); + std::ostringstream stream; + stream << value; + DALI_TEST_CHECK( stream.str() == "[1, 2, 3, 4]" ); + } END_TEST; - }