+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<Extents>() );
+ 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;
+}
+