+ 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);
+