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=99abb22094e88e9f8ee9f0d406ab2d2535b91273;hpb=53ad0a8d1d3c644d74301687625e3dedabe592b0;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 99abb22..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) 2016 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. @@ -377,6 +377,26 @@ int UtcDaliPropertyValueConstructorsMapTypeP(void) 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; @@ -486,6 +506,61 @@ int UtcDaliPropertyValueCopyConstructorMapP(void) 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; @@ -679,6 +754,51 @@ int UtcDaliPropertyValueAssignmentOperatorMapP(void) 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 UtcDaliPropertyValueGetTypeP(void) { Property::Value value; @@ -1117,6 +1237,31 @@ int UtcDaliPropertyValueGetMapN(void) 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) { TestApplication application; @@ -1134,7 +1279,7 @@ int UtcDaliPropertyValueOutputStream(void) Property::Value empty; std::ostringstream stream; stream << empty; - DALI_TEST_EQUALS( stream.str(), "empty type", TEST_LOCATION ); + DALI_TEST_EQUALS( stream.str(), "undefined type", TEST_LOCATION ); } { @@ -1183,14 +1328,14 @@ int UtcDaliPropertyValueOutputStream(void) 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 ]" ); } { @@ -1263,6 +1408,12 @@ int UtcDaliPropertyValueOutputStream(void) 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; }