+ DALI_TEST_CHECK(map.Count() == 3);
+
+ END_TEST;
+}
+
+int UtcDaliPropertyMapMoveConstructor(void)
+{
+ Property::Map map1;
+ map1["hello"] = 1;
+ map1["world"] = 2;
+ map1[10] = "DALi";
+ DALI_TEST_EQUALS(3u, map1.Count(), TEST_LOCATION);
+
+ Property::Map map2(std::move(map1));
+ DALI_TEST_EQUALS(3u, map2.Count(), TEST_LOCATION);
+
+ // Calling any methods on map1 will debug assert
+ const char* exceptionMessage = "Cannot use an object previously used as an r-value";
+ DALI_TEST_ASSERTION(map1.Count(), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Empty(), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Insert((const char*)"key", Property::Value()), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Insert(std::string("key"), Property::Value()), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Insert(0, Property::Value()), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.GetValue(0), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.GetKey(0), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.GetKeyAt(1), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.GetPair(0), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.GetKeyValue(0), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Find((const char*)"key"), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Find(std::string("key")), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Find(0), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Find(0, "key"), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Find("key", Property::INTEGER), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Find(0, Property::INTEGER), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Clear(), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Merge(Property::Map()), exceptionMessage);
+ DALI_TEST_ASSERTION(map1["key"], exceptionMessage);
+ DALI_TEST_ASSERTION(const_cast<const Property::Map&>(map1)["key"], exceptionMessage);
+ DALI_TEST_ASSERTION(map1[0], exceptionMessage);
+ DALI_TEST_ASSERTION(const_cast<const Property::Map&>(map1)[0], exceptionMessage);
+ DALI_TEST_ASSERTION(Property::Map temp; map1 = temp, exceptionMessage);
+
+ END_TEST;
+}
+
+int UtcDaliPropertyMapMoveAssignmentOperator(void)
+{
+ Property::Map map1;
+ map1["hello"] = 1;
+ map1["world"] = 2;
+ map1[10] = "DALi";
+ DALI_TEST_EQUALS(3u, map1.Count(), TEST_LOCATION);
+
+ Property::Map map2;
+ map2[10] = "DALi again";
+ DALI_TEST_EQUALS(1u, map2.Count(), TEST_LOCATION);
+
+ map2 = std::move(map1);
+ DALI_TEST_EQUALS(3u, map2.Count(), TEST_LOCATION);
+
+ // Calling any methods on map1 will debug assert
+ const char* exceptionMessage = "Cannot use an object previously used as an r-value";
+ DALI_TEST_ASSERTION(map1.Count(), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Empty(), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Insert((const char*)"key", Property::Value()), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Insert(std::string("key"), Property::Value()), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Insert(0, Property::Value()), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.GetValue(0), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.GetKey(0), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.GetKeyAt(1), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.GetPair(0), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.GetKeyValue(0), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Find((const char*)"key"), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Find(std::string("key")), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Find(0), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Find(0, "key"), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Find("key", Property::INTEGER), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Find(0, Property::INTEGER), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Clear(), exceptionMessage);
+ DALI_TEST_ASSERTION(map1.Merge(Property::Map()), exceptionMessage);
+ DALI_TEST_ASSERTION(map1["key"], exceptionMessage);
+ DALI_TEST_ASSERTION(const_cast<const Property::Map&>(map1)["key"], exceptionMessage);
+ DALI_TEST_ASSERTION(map1[0], exceptionMessage);
+ DALI_TEST_ASSERTION(const_cast<const Property::Map&>(map1)[0], exceptionMessage);
+ DALI_TEST_ASSERTION(Property::Map temp; map1 = temp, exceptionMessage);
+
+ // Self assignment
+ map2 = std::move(map2);
+ DALI_TEST_EQUALS(3u, map2.Count(), TEST_LOCATION); // No debug assert as nothing should happen