X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-PropertyMap.cpp;h=61edaee0ff16c174edc5df3ccedf0625eb0f1f4f;hb=b6e3c77d9956fa042d06b396c5e5cbf1768614f0;hp=7283e1c0d7d63a29ce224fce610f5418f43a37f6;hpb=4616ef8a4ad89c235b6d982f7ca746ac09783b51;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-PropertyMap.cpp b/automated-tests/src/dali/utc-Dali-PropertyMap.cpp old mode 100644 new mode 100755 index 7283e1c..61edaee --- a/automated-tests/src/dali/utc-Dali-PropertyMap.cpp +++ b/automated-tests/src/dali/utc-Dali-PropertyMap.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 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. @@ -15,11 +15,12 @@ * */ +#include +#include +#include + #include #include -#include -#include -#include using namespace Dali; @@ -36,46 +37,134 @@ void utc_dali_property_map_cleanup(void) int UtcDaliPropertyMapPopulate(void) { Property::Map map; - DALI_TEST_CHECK( map.Empty() ); - - map[ "hello" ] = 1; - map[ 10 ] = "DALi"; - map[ "world" ] = "world"; - map[ 100 ] = 9; - map[ "world" ] = 3; // same item as line above - DALI_TEST_CHECK( !map.Empty() ); // Should no longer be empty - DALI_TEST_CHECK( map.Count() == 4 ); // Should only have four items, not five!! - DALI_TEST_CHECK( map["hello"].Get() == 1 ); - DALI_TEST_CHECK( map["world"].Get() == 3 ); - DALI_TEST_EQUALS( "DALi", map[ 10 ].Get(), TEST_LOCATION ); - DALI_TEST_CHECK( map[100].Get() == 9 ); + DALI_TEST_CHECK(map.Empty()); + + map["hello"] = 1; + map[10] = "DALi"; + map["world"] = "world"; + map[100] = 9; + map["world"] = 3; // same item as line above + DALI_TEST_CHECK(!map.Empty()); // Should no longer be empty + DALI_TEST_CHECK(map.Count() == 4); // Should only have four items, not five!! + DALI_TEST_CHECK(map["hello"].Get() == 1); + DALI_TEST_CHECK(map["world"].Get() == 3); + DALI_TEST_EQUALS("DALi", map[10].Get(), TEST_LOCATION); + DALI_TEST_CHECK(map[100].Get() == 9); map.Clear(); - DALI_TEST_CHECK( map.Empty() ); + DALI_TEST_CHECK(map.Empty()); END_TEST; } int UtcDaliPropertyMapCopyAndAssignment(void) { Property::Map map; - map[ "hello" ] = 1; - map[ "world" ] = 2; - map[ 10 ] = "DALi"; + map["hello"] = 1; + map["world"] = 2; + map[10] = "DALi"; Property::Map assignedMap; - assignedMap[ "foo" ] = 3; - assignedMap[ 100 ] = 9; - DALI_TEST_CHECK( assignedMap.Count() == 2 ); + assignedMap["foo"] = 3; + assignedMap[100] = 9; + DALI_TEST_CHECK(assignedMap.Count() == 2); assignedMap = map; - DALI_TEST_CHECK( assignedMap.Count() == 3 ); + DALI_TEST_CHECK(assignedMap.Count() == 3); - Property::Map copiedMap( map ); - DALI_TEST_CHECK( copiedMap.Count() == 3 ); + Property::Map copiedMap(map); + DALI_TEST_CHECK(copiedMap.Count() == 3); // Self assignment - DALI_TEST_CHECK( map.Count() == 3 ); + DALI_TEST_CHECK(map.Count() == 3); map = map; - DALI_TEST_CHECK( map.Count() == 3 ); + 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(map1)["key"], exceptionMessage); + DALI_TEST_ASSERTION(map1[0], exceptionMessage); + DALI_TEST_ASSERTION(const_cast(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(map1)["key"], exceptionMessage); + DALI_TEST_ASSERTION(map1[0], exceptionMessage); + DALI_TEST_ASSERTION(const_cast(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 END_TEST; } @@ -83,27 +172,27 @@ int UtcDaliPropertyMapCopyAndAssignment(void) int UtcDaliPropertyMapConstOperator(void) { Property::Map map; - map[ "hello" ] = 1; - map[ 10 ] = "DALi"; - map[ "world" ] = 2; - DALI_TEST_CHECK( map.Count() == 3 ); + map["hello"] = 1; + map[10] = "DALi"; + map["world"] = 2; + DALI_TEST_CHECK(map.Count() == 3); - const Property::Map& constMap( map ); - DALI_TEST_CHECK( constMap[ "world" ].Get() == 2 ); - DALI_TEST_CHECK( constMap.Count() == 3 ); // Ensure count hasn't gone up + const Property::Map& constMap(map); + DALI_TEST_CHECK(constMap["world"].Get() == 2); + DALI_TEST_CHECK(constMap.Count() == 3); // Ensure count hasn't gone up - DALI_TEST_EQUALS( "DALi", map[ 10 ].Get(), TEST_LOCATION ); - DALI_TEST_CHECK( constMap.Count() == 3 ); // Ensure count hasn't gone up + DALI_TEST_EQUALS("DALi", map[10].Get(), TEST_LOCATION); + DALI_TEST_CHECK(constMap.Count() == 3); // Ensure count hasn't gone up // Invalid Key try { - constMap[ "invalidKey" ]; - tet_result( TET_FAIL ); + constMap["invalidKey"]; + tet_result(TET_FAIL); } - catch ( DaliException& e ) + catch(DaliException& e) { - DALI_TEST_ASSERT( e, "! \"Invalid Key\"", TEST_LOCATION ); + DALI_TEST_ASSERT(e, "!\"Invalid Key\"", TEST_LOCATION); } END_TEST; @@ -112,29 +201,29 @@ int UtcDaliPropertyMapConstOperator(void) int UtcDaliPropertyMapGetValue(void) { Property::Map map; - map[ "hello" ] = 1; - map[ "world" ] = 2; - map[ Actor::Property::COLOR ] = Color::MAGENTA; + map["hello"] = 1; + map["world"] = 2; + map[Actor::Property::COLOR] = Color::MAGENTA; - Property::Value& value = map.GetValue( 0 ); - DALI_TEST_CHECK( value.Get() == 1 ); + Property::Value& value = map.GetValue(0); + DALI_TEST_CHECK(value.Get() == 1); value = 10; // Allows the actual changing of the value as we have a ref - DALI_TEST_CHECK( map[ "hello" ].Get() == 10 ); + DALI_TEST_CHECK(map["hello"].Get() == 10); - Property::Value& value2 = map.GetValue( 2 ); - DALI_TEST_CHECK( value2.Get() == Color::MAGENTA ); + Property::Value& value2 = map.GetValue(2); + DALI_TEST_CHECK(value2.Get() == Color::MAGENTA); value2 = Color::CYAN; - DALI_TEST_EQUALS( map[ Actor::Property::COLOR].Get(), Color::CYAN, TEST_LOCATION); + DALI_TEST_EQUALS(map[Actor::Property::COLOR].Get(), Color::CYAN, TEST_LOCATION); // Out of bounds try { - map.GetValue( 3 ); - tet_result( TET_FAIL ); + map.GetValue(3); + tet_result(TET_FAIL); } - catch ( DaliException& e ) + catch(DaliException& e) { - DALI_TEST_ASSERT( e, "position", TEST_LOCATION ); + DALI_TEST_ASSERT(e, "position", TEST_LOCATION); } END_TEST; @@ -144,59 +233,58 @@ int UtcDaliPropertyMapGetValue(void) int UtcDaliPropertyMapGetKey(void) { Property::Map map; - map[ "hello" ] = 1; - map[ "world" ] = 2; - map[ Actor::Property::COLOR ] = Color::MAGENTA; + map["hello"] = 1; + map["world"] = 2; + map[Actor::Property::COLOR] = Color::MAGENTA; - DALI_TEST_CHECK( map.GetKey( 0 ) == "hello" ); - DALI_TEST_CHECK( map.GetKey( 1 ) == "world" ); + DALI_TEST_CHECK(map.GetKey(0) == "hello"); + DALI_TEST_CHECK(map.GetKey(1) == "world"); // Wrong type try { - map.GetKey( 2 ); - tet_result( TET_FAIL ); + map.GetKey(2); + tet_result(TET_FAIL); } - catch ( DaliException& e ) + catch(DaliException& e) { - DALI_TEST_ASSERT( e, "position", TEST_LOCATION ); + DALI_TEST_ASSERT(e, "position", TEST_LOCATION); } // Out of bounds try { - map.GetKey( 3 ); - tet_result( TET_FAIL ); + map.GetKey(3); + tet_result(TET_FAIL); } - catch ( DaliException& e ) + catch(DaliException& e) { - DALI_TEST_ASSERT( e, "position", TEST_LOCATION ); + DALI_TEST_ASSERT(e, "position", TEST_LOCATION); } END_TEST; } - int UtcDaliPropertyMapGetKeyAt(void) { Property::Map map; - map[ "hello" ] = 1; - map[ "world" ] = 2; - map[ Actor::Property::COLOR ] = Color::MAGENTA; + map["hello"] = 1; + map["world"] = 2; + map[Actor::Property::COLOR] = Color::MAGENTA; - DALI_TEST_CHECK( map.GetKeyAt( 0 ) == "hello" ); - DALI_TEST_CHECK( map.GetKeyAt( 1 ) == "world" ); - DALI_TEST_CHECK( map.GetKeyAt( 2 ) == Actor::Property::COLOR ); + DALI_TEST_CHECK(map.GetKeyAt(0) == "hello"); + DALI_TEST_CHECK(map.GetKeyAt(1) == "world"); + DALI_TEST_CHECK(map.GetKeyAt(2) == Actor::Property::COLOR); // Out of bounds try { - map.GetKey( 3 ); - tet_result( TET_FAIL ); + map.GetKey(3); + tet_result(TET_FAIL); } - catch ( DaliException& e ) + catch(DaliException& e) { - DALI_TEST_ASSERT( e, "position", TEST_LOCATION ); + DALI_TEST_ASSERT(e, "position", TEST_LOCATION); } END_TEST; @@ -205,35 +293,35 @@ int UtcDaliPropertyMapGetKeyAt(void) int UtcDaliPropertyMapGetPair(void) { Property::Map map; - map[ "hello" ] = 1; - map[ "world" ] = 2; - map[ Actor::Property::COLOR ] = Color::MAGENTA; + map["hello"] = 1; + map["world"] = 2; + map[Actor::Property::COLOR] = Color::MAGENTA; - DALI_TEST_CHECK( map.GetPair( 0 ).first == "hello" ); - DALI_TEST_CHECK( map.GetPair( 0 ).second.Get< int >() == 1 ); - DALI_TEST_CHECK( map.GetPair( 1 ).first == "world" ); - DALI_TEST_CHECK( map.GetPair( 1 ).second.Get< int >() == 2 ); + DALI_TEST_CHECK(map.GetPair(0).first == "hello"); + DALI_TEST_CHECK(map.GetPair(0).second.Get() == 1); + DALI_TEST_CHECK(map.GetPair(1).first == "world"); + DALI_TEST_CHECK(map.GetPair(1).second.Get() == 2); // Wrong Type try { - map.GetPair( 2 ); - tet_result( TET_FAIL ); + map.GetPair(2); + tet_result(TET_FAIL); } - catch ( DaliException& e ) + catch(DaliException& e) { - DALI_TEST_ASSERT( e, "position", TEST_LOCATION ); + DALI_TEST_ASSERT(e, "position", TEST_LOCATION); } // Out of bounds try { - map.GetPair( 3 ); - tet_result( TET_FAIL ); + map.GetPair(3); + tet_result(TET_FAIL); } - catch ( DaliException& e ) + catch(DaliException& e) { - DALI_TEST_ASSERT( e, "position", TEST_LOCATION ); + DALI_TEST_ASSERT(e, "position", TEST_LOCATION); } END_TEST; @@ -242,26 +330,26 @@ int UtcDaliPropertyMapGetPair(void) int UtcDaliPropertyMapGetKeyValue(void) { Property::Map map; - map[ "hello" ] = 1; - map[ "world" ] = 2; - map[ Actor::Property::COLOR ] = Color::MAGENTA; + map["hello"] = 1; + map["world"] = 2; + map[Actor::Property::COLOR] = Color::MAGENTA; - DALI_TEST_CHECK( map.GetKeyValue( 0 ).first == "hello" ); - DALI_TEST_CHECK( map.GetKeyValue( 0 ).second.Get< int >() == 1 ); - DALI_TEST_CHECK( map.GetKeyValue( 1 ).first == "world" ); - DALI_TEST_CHECK( map.GetKeyValue( 1 ).second.Get< int >() == 2 ); - DALI_TEST_CHECK( map.GetKeyValue( 2 ).first == Actor::Property::COLOR ); - DALI_TEST_CHECK( map.GetKeyValue( 2 ).second.Get< Vector4 >() == Color::MAGENTA ); + DALI_TEST_CHECK(map.GetKeyValue(0).first == "hello"); + DALI_TEST_CHECK(map.GetKeyValue(0).second.Get() == 1); + DALI_TEST_CHECK(map.GetKeyValue(1).first == "world"); + DALI_TEST_CHECK(map.GetKeyValue(1).second.Get() == 2); + DALI_TEST_CHECK(map.GetKeyValue(2).first == Actor::Property::COLOR); + DALI_TEST_CHECK(map.GetKeyValue(2).second.Get() == Color::MAGENTA); // Out of bounds try { - map.GetPair( 3 ); - tet_result( TET_FAIL ); + map.GetPair(3); + tet_result(TET_FAIL); } - catch ( DaliException& e ) + catch(DaliException& e) { - DALI_TEST_ASSERT( e, "position", TEST_LOCATION ); + DALI_TEST_ASSERT(e, "position", TEST_LOCATION); } END_TEST; @@ -270,35 +358,35 @@ int UtcDaliPropertyMapGetKeyValue(void) int UtcDaliPropertyMapFind(void) { Property::Map map; - map[ "hello" ] = 1; - map[ 10 ] = "DALi"; - map[ "world" ] = 2; - map[ 100 ] = 9; + map["hello"] = 1; + map[10] = "DALi"; + map["world"] = 2; + map[100] = 9; Property::Value* value = NULL; - value = map.Find( "hello" ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == 1 ); + value = map.Find("hello"); + DALI_TEST_CHECK(value); + DALI_TEST_CHECK(value->Get() == 1); const std::string world("world"); - value = map.Find( world ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == 2 ); + value = map.Find(world); + DALI_TEST_CHECK(value); + DALI_TEST_CHECK(value->Get() == 2); - value = map.Find( 100 ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == 9 ); + value = map.Find(100); + DALI_TEST_CHECK(value); + DALI_TEST_CHECK(value->Get() == 9); - value = map.Find( 10, Property::STRING ); - DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( "DALi", value->Get(), TEST_LOCATION ); + value = map.Find(10, Property::STRING); + DALI_TEST_CHECK(value); + DALI_TEST_EQUALS("DALi", value->Get(), TEST_LOCATION); - value = map.Find( 10, Property::INTEGER ); - DALI_TEST_CHECK( value == NULL ); + value = map.Find(10, Property::INTEGER); + DALI_TEST_CHECK(value == NULL); - value = map.Find( "invalidKey" ); - DALI_TEST_CHECK( !value ); + value = map.Find("invalidKey"); + DALI_TEST_CHECK(!value); END_TEST; } @@ -306,46 +394,43 @@ int UtcDaliPropertyMapFind(void) int UtcDaliPropertyMapFindIndexThenString(void) { // Define the valid keys and values to test with. - std::string stringKeyValid = "bar"; + std::string stringKeyValid = "bar"; std::string stringKeyInvalid = "aardvark"; - int indexKeyValid = 100; - int indexKeyInvalid = 101; + int indexKeyValid = 100; + int indexKeyInvalid = 101; // Define invalid key and value to test with. std::string stringValueValid = "DALi"; - int indexValueValid = 3; + int indexValueValid = 3; // Set up a property map containing the valid keys and values defined above. Property::Map map; - map[ "foo" ] = 1; - map[ 10 ] = "string"; - map[ stringKeyValid ] = stringValueValid; - map[ indexKeyValid ] = indexValueValid; + map["foo"] = 1; + map[10] = "string"; + map[stringKeyValid] = stringValueValid; + map[indexKeyValid] = indexValueValid; Property::Value* value = NULL; // TEST: If both index and string are valid, the Property::Value of the index is returned. - value = map.Find( indexKeyValid, stringKeyValid ); - - DALI_TEST_EQUALS( value->Get(), indexValueValid, TEST_LOCATION ); + value = map.Find(indexKeyValid, stringKeyValid); + DALI_TEST_EQUALS(value->Get(), indexValueValid, TEST_LOCATION); // TEST: If only the index is valid, the Property::Value of the index is returned. - value = map.Find( indexKeyValid, stringKeyInvalid ); - - DALI_TEST_EQUALS( value->Get(), indexValueValid, TEST_LOCATION ); + value = map.Find(indexKeyValid, stringKeyInvalid); + DALI_TEST_EQUALS(value->Get(), indexValueValid, TEST_LOCATION); // TEST: If only the string is valid, the Property::Value of the string is returned. - value = map.Find( indexKeyInvalid, stringKeyValid ); - - DALI_TEST_EQUALS( value->Get(), stringValueValid, TEST_LOCATION ); + value = map.Find(indexKeyInvalid, stringKeyValid); + DALI_TEST_EQUALS(value->Get(), stringValueValid, TEST_LOCATION); // TEST: If neither the index or string are valid, then a NULL pointer is returned. - value = map.Find( indexKeyInvalid, stringKeyInvalid ); + value = map.Find(indexKeyInvalid, stringKeyInvalid); - DALI_TEST_CHECK( value == NULL ); + DALI_TEST_CHECK(value == NULL); END_TEST; } @@ -353,20 +438,20 @@ int UtcDaliPropertyMapFindIndexThenString(void) int UtcDaliPropertyMapOperatorIndex(void) { Property::Map map; - map[ "hello" ] = 1; - map[ 10 ] = "DALi"; - map[ "world" ] = 2; - map[ 100 ] = 9; + map["hello"] = 1; + map[10] = "DALi"; + map["world"] = 2; + map[100] = 9; - const Property::Map map2 = map; + const Property::Map map2 = map; const Property::Value& value10 = map2[10]; - DALI_TEST_EQUALS( value10.Get(), "DALi", TEST_LOCATION ); + DALI_TEST_EQUALS(value10.Get(), "DALi", TEST_LOCATION); const Property::Value& value100 = map2[100]; - DALI_TEST_EQUALS( value100.Get(), 9, TEST_LOCATION ); + DALI_TEST_EQUALS(value100.Get(), 9, TEST_LOCATION); const Property::Value& valueHello = map2["hello"]; - DALI_TEST_EQUALS( valueHello.Get(), 1, TEST_LOCATION ); + DALI_TEST_EQUALS(valueHello.Get(), 1, TEST_LOCATION); END_TEST; } @@ -374,62 +459,61 @@ int UtcDaliPropertyMapOperatorIndex(void) int UtcDaliPropertyMapInsertP(void) { Property::Map map; - DALI_TEST_EQUALS( 0u, map.Count(), TEST_LOCATION ); - map.Insert( "foo", "bar"); - DALI_TEST_EQUALS( 1u, map.Count(), TEST_LOCATION ); - Property::Value* value = map.Find( "foo" ); - DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( "bar", value->Get(), TEST_LOCATION ); - - map.Insert( std::string("foo2"), "testing" ); - DALI_TEST_EQUALS( 2u, map.Count(), TEST_LOCATION ); - value = map.Find( "foo2" ); - DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( "testing", value->Get(), TEST_LOCATION ); - - map.Insert( 10, "DALi" ); - DALI_TEST_EQUALS( 3u, map.Count(), TEST_LOCATION ); - value = map.Find( 10 ); - DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( "DALi", value->Get(), TEST_LOCATION ); - - map.Insert( 100, 9 ); - DALI_TEST_EQUALS( 4u, map.Count(), TEST_LOCATION ); - value = map.Find( 100 ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == 9 ); + DALI_TEST_EQUALS(0u, map.Count(), TEST_LOCATION); + map.Insert("foo", "bar"); + DALI_TEST_EQUALS(1u, map.Count(), TEST_LOCATION); + Property::Value* value = map.Find("foo"); + DALI_TEST_CHECK(value); + DALI_TEST_EQUALS("bar", value->Get(), TEST_LOCATION); + + map.Insert(std::string("foo2"), "testing"); + DALI_TEST_EQUALS(2u, map.Count(), TEST_LOCATION); + value = map.Find("foo2"); + DALI_TEST_CHECK(value); + DALI_TEST_EQUALS("testing", value->Get(), TEST_LOCATION); + + map.Insert(10, "DALi"); + DALI_TEST_EQUALS(3u, map.Count(), TEST_LOCATION); + value = map.Find(10); + DALI_TEST_CHECK(value); + DALI_TEST_EQUALS("DALi", value->Get(), TEST_LOCATION); + + map.Insert(100, 9); + DALI_TEST_EQUALS(4u, map.Count(), TEST_LOCATION); + value = map.Find(100); + DALI_TEST_CHECK(value); + DALI_TEST_CHECK(value->Get() == 9); END_TEST; } - int UtcDaliPropertyMapAddP(void) { Property::Map map; - DALI_TEST_EQUALS( 0u, map.Count(), TEST_LOCATION ); - map.Add( "foo", "bar"); - DALI_TEST_EQUALS( 1u, map.Count(), TEST_LOCATION ); - Property::Value* value = map.Find( "foo" ); - DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( "bar", value->Get(), TEST_LOCATION ); - - map.Add( std::string("foo2"), "testing" ); - DALI_TEST_EQUALS( 2u, map.Count(), TEST_LOCATION ); - value = map.Find( "foo2" ); - DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( "testing", value->Get(), TEST_LOCATION ); - - map.Add( 10, "DALi" ); - DALI_TEST_EQUALS( 3u, map.Count(), TEST_LOCATION ); - value = map.Find( 10 ); - DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( "DALi", value->Get(), TEST_LOCATION ); - - map.Add( 100, 9 ); - DALI_TEST_EQUALS( 4u, map.Count(), TEST_LOCATION ); - value = map.Find( 100 ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == 9 ); + DALI_TEST_EQUALS(0u, map.Count(), TEST_LOCATION); + map.Add("foo", "bar"); + DALI_TEST_EQUALS(1u, map.Count(), TEST_LOCATION); + Property::Value* value = map.Find("foo"); + DALI_TEST_CHECK(value); + DALI_TEST_EQUALS("bar", value->Get(), TEST_LOCATION); + + map.Add(std::string("foo2"), "testing"); + DALI_TEST_EQUALS(2u, map.Count(), TEST_LOCATION); + value = map.Find("foo2"); + DALI_TEST_CHECK(value); + DALI_TEST_EQUALS("testing", value->Get(), TEST_LOCATION); + + map.Add(10, "DALi"); + DALI_TEST_EQUALS(3u, map.Count(), TEST_LOCATION); + value = map.Find(10); + DALI_TEST_CHECK(value); + DALI_TEST_EQUALS("DALi", value->Get(), TEST_LOCATION); + + map.Add(100, 9); + DALI_TEST_EQUALS(4u, map.Count(), TEST_LOCATION); + value = map.Find(100); + DALI_TEST_CHECK(value); + DALI_TEST_CHECK(value->Get() == 9); END_TEST; } @@ -437,30 +521,30 @@ int UtcDaliPropertyMapAddP(void) int UtcDaliPropertyMapAddChainP(void) { Property::Map map; - DALI_TEST_EQUALS( 0u, map.Count(), TEST_LOCATION ); + DALI_TEST_EQUALS(0u, map.Count(), TEST_LOCATION); map - .Add( "foo", "bar") - .Add( std::string("foo2"), "testing" ) - .Add( 10, "DALi" ) - .Add( 100, 9 ); + .Add("foo", "bar") + .Add(std::string("foo2"), "testing") + .Add(10, "DALi") + .Add(100, 9); - DALI_TEST_EQUALS( 4u, map.Count(), TEST_LOCATION ); + DALI_TEST_EQUALS(4u, map.Count(), TEST_LOCATION); - Property::Value* value = map.Find( "foo" ); - DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( "bar", value->Get(), TEST_LOCATION ); + Property::Value* value = map.Find("foo"); + DALI_TEST_CHECK(value); + DALI_TEST_EQUALS("bar", value->Get(), TEST_LOCATION); - value = map.Find( "foo2" ); - DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( "testing", value->Get(), TEST_LOCATION ); + value = map.Find("foo2"); + DALI_TEST_CHECK(value); + DALI_TEST_EQUALS("testing", value->Get(), TEST_LOCATION); - value = map.Find( 10 ); - DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( "DALi", value->Get(), TEST_LOCATION ); + value = map.Find(10); + DALI_TEST_CHECK(value); + DALI_TEST_EQUALS("DALi", value->Get(), TEST_LOCATION); - value = map.Find( 100 ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == 9 ); + value = map.Find(100); + DALI_TEST_CHECK(value); + DALI_TEST_CHECK(value->Get() == 9); END_TEST; } @@ -477,97 +561,114 @@ int UtcDaliPropertyMapAnonymousAddChainP(void) Property::Map mMap; }; - TestMap mapTest( Property::Map().Add( "foo", "bar") - .Add( std::string("foo2"), "testing" ) - .Add( 10, "DALi" ) - .Add( 100, 9 )); + TestMap mapTest(Property::Map().Add("foo", "bar").Add(std::string("foo2"), "testing").Add(10, "DALi").Add(100, 9)); + Property::Value* value = mapTest.mMap.Find("foo"); + DALI_TEST_CHECK(value); + DALI_TEST_EQUALS("bar", value->Get(), TEST_LOCATION); - Property::Value* value = mapTest.mMap.Find( "foo" ); - DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( "bar", value->Get(), TEST_LOCATION ); + value = mapTest.mMap.Find("foo2"); + DALI_TEST_CHECK(value); + DALI_TEST_EQUALS("testing", value->Get(), TEST_LOCATION); - value = mapTest.mMap.Find( "foo2" ); - DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( "testing", value->Get(), TEST_LOCATION ); + value = mapTest.mMap.Find(10); + DALI_TEST_CHECK(value); + DALI_TEST_EQUALS("DALi", value->Get(), TEST_LOCATION); - value = mapTest.mMap.Find( 10 ); - DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( "DALi", value->Get(), TEST_LOCATION ); - - value = mapTest.mMap.Find( 100 ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == 9 ); + value = mapTest.mMap.Find(100); + DALI_TEST_CHECK(value); + DALI_TEST_CHECK(value->Get() == 9); END_TEST; } +int UtcDaliPropertyMapRemove(void) +{ + Property::Map map; + map["hello"] = 1; + map[10] = "DALi"; + map["world"] = 2; + + DALI_TEST_CHECK(map.Count() == 3); + DALI_TEST_CHECK(!map.Remove(0)); + DALI_TEST_CHECK(map.Count() == 3); + DALI_TEST_CHECK(!map.Remove("doesnotexist")); + DALI_TEST_CHECK(map.Count() == 3); + DALI_TEST_CHECK(map.Remove(10)); + DALI_TEST_CHECK(map.Count() == 2); + DALI_TEST_CHECK(map.Remove("hello")); + DALI_TEST_CHECK(map.Count() == 1); + DALI_TEST_CHECK(map.Remove("world")); + DALI_TEST_CHECK(map.Count() == 0); + + END_TEST; +} int UtcDaliPropertyMapMerge(void) { Property::Map map; - map[ "hello" ] = 1; - map[ 10 ] = "DALi"; - map[ "world" ] = 2; + map["hello"] = 1; + map[10] = "DALi"; + map["world"] = 2; - DALI_TEST_CHECK( map.Count() == 3 ); + DALI_TEST_CHECK(map.Count() == 3); // Create another map with the same keys but different values Property::Map map2; - map2[ "hello" ] = 3; - map2[ "world" ] = 4; - map[ 10 ] = "3DEngine"; + map2["hello"] = 3; + map2["world"] = 4; + map[10] = "3DEngine"; // Merge map2 into map1, count should still be 2, map values should be from map2 - map.Merge( map2 ); - DALI_TEST_CHECK( map.Count() == 3 ); - DALI_TEST_CHECK( map[ "hello" ].Get< int >() == 3 ); - DALI_TEST_CHECK( map[ "world"].Get< int >() == 4 ); - DALI_TEST_EQUALS( "3DEngine", map[ 10 ].Get(), TEST_LOCATION ); + map.Merge(map2); + DALI_TEST_CHECK(map.Count() == 3); + DALI_TEST_CHECK(map["hello"].Get() == 3); + DALI_TEST_CHECK(map["world"].Get() == 4); + DALI_TEST_EQUALS("3DEngine", map[10].Get(), TEST_LOCATION); // Create another map with different keys Property::Map map3; - map3[ "foo" ] = 5; - map3[ 100 ] = 6; + map3["foo"] = 5; + map3[100] = 6; // Merge map3 into map1, count should increase, existing values should match previous and new values should match map3 - map.Merge( map3 ); - DALI_TEST_CHECK( map.Count() == 5 ); - DALI_TEST_CHECK( map[ "hello" ].Get< int >() == 3 ); - DALI_TEST_CHECK( map[ "world"].Get< int >() == 4 ); - DALI_TEST_CHECK( map[ "foo"].Get< int >() == 5 ); - DALI_TEST_EQUALS( "3DEngine", map[ 10 ].Get(), TEST_LOCATION ); - DALI_TEST_CHECK( map[ 100].Get< int >() == 6 ); + map.Merge(map3); + DALI_TEST_CHECK(map.Count() == 5); + DALI_TEST_CHECK(map["hello"].Get() == 3); + DALI_TEST_CHECK(map["world"].Get() == 4); + DALI_TEST_CHECK(map["foo"].Get() == 5); + DALI_TEST_EQUALS("3DEngine", map[10].Get(), TEST_LOCATION); + DALI_TEST_CHECK(map[100].Get() == 6); // Create an empty map and attempt to merge, should be successful, nothing should change Property::Map map4; - DALI_TEST_CHECK( map4.Empty() ); - map.Merge( map4 ); - DALI_TEST_CHECK( map4.Empty() ); - DALI_TEST_CHECK( map.Count() == 5 ); - DALI_TEST_CHECK( map[ "hello" ].Get< int >() == 3 ); - DALI_TEST_CHECK( map[ "world"].Get< int >() == 4 ); - DALI_TEST_CHECK( map[ "foo"].Get< int >() == 5 ); - DALI_TEST_EQUALS( "3DEngine", map[ 10 ].Get(), TEST_LOCATION ); - DALI_TEST_CHECK( map[ 100 ].Get< int >() == 6 ); + DALI_TEST_CHECK(map4.Empty()); + map.Merge(map4); + DALI_TEST_CHECK(map4.Empty()); + DALI_TEST_CHECK(map.Count() == 5); + DALI_TEST_CHECK(map["hello"].Get() == 3); + DALI_TEST_CHECK(map["world"].Get() == 4); + DALI_TEST_CHECK(map["foo"].Get() == 5); + DALI_TEST_EQUALS("3DEngine", map[10].Get(), TEST_LOCATION); + DALI_TEST_CHECK(map[100].Get() == 6); // Merge map into map4, map4 should be the same as map now. - map4.Merge( map ); - DALI_TEST_CHECK( map4.Count() == 5 ); - DALI_TEST_CHECK( map4[ "hello" ].Get< int >() == 3 ); - DALI_TEST_CHECK( map4[ "world"].Get< int >() == 4 ); - DALI_TEST_CHECK( map4[ "foo"].Get< int >() == 5 ); - DALI_TEST_EQUALS( "3DEngine", map[ 10 ].Get(), TEST_LOCATION ); - DALI_TEST_CHECK( map4[ 100 ].Get< int >() == 6 ); + map4.Merge(map); + DALI_TEST_CHECK(map4.Count() == 5); + DALI_TEST_CHECK(map4["hello"].Get() == 3); + DALI_TEST_CHECK(map4["world"].Get() == 4); + DALI_TEST_CHECK(map4["foo"].Get() == 5); + DALI_TEST_EQUALS("3DEngine", map[10].Get(), TEST_LOCATION); + DALI_TEST_CHECK(map4[100].Get() == 6); // Attempt to merge into itself, should be successful, nothing should change - map.Merge( map ); - DALI_TEST_CHECK( map.Count() == 5 ); - DALI_TEST_CHECK( map[ "hello" ].Get< int >() == 3 ); - DALI_TEST_CHECK( map[ "world"].Get< int >() == 4 ); - DALI_TEST_CHECK( map[ "foo"].Get< int >() == 5 ); - DALI_TEST_EQUALS( "3DEngine", map[ 10 ].Get(), TEST_LOCATION ); - DALI_TEST_CHECK( map[ 100 ].Get< int >() == 6 ); + map.Merge(map); + DALI_TEST_CHECK(map.Count() == 5); + DALI_TEST_CHECK(map["hello"].Get() == 3); + DALI_TEST_CHECK(map["world"].Get() == 4); + DALI_TEST_CHECK(map["foo"].Get() == 5); + DALI_TEST_EQUALS("3DEngine", map[10].Get(), TEST_LOCATION); + DALI_TEST_CHECK(map[100].Get() == 6); END_TEST; } @@ -577,9 +678,9 @@ int UtcDaliPropertyMapOstream01(void) Property::Map map; map.Insert("duration", 5.0f); - map.Insert( 10, "DALi" ); + map.Insert(10, "DALi"); map.Insert("delay", 1.0f); - map.Insert( 100, 9 ); + map.Insert(100, 9); map.Insert("value", 100); std::ostringstream oss; @@ -588,21 +689,20 @@ int UtcDaliPropertyMapOstream01(void) tet_printf("Testing ouput of map: %s\n", oss.str().c_str()); // string-value pairs first, then index-value pairs - DALI_TEST_EQUALS( oss.str().compare("Map(5) = {duration:5, delay:1, value:100, 10:DALi, 100:9}"), 0, TEST_LOCATION ); + DALI_TEST_EQUALS(oss.str().compare("Map(5) = {duration:5, delay:1, value:100, 10:DALi, 100:9}"), 0, TEST_LOCATION); END_TEST; } - int UtcDaliPropertyMapOstream02(void) { Property::Map map, map2; map2.Insert("duration", 5.0f); map2.Insert("delay", 1.0f); - map2.Insert( 10, "DALi" ); + map2.Insert(10, "DALi"); map.Insert("timePeriod", map2); - map.Insert( 100, 9 ); + map.Insert(100, 9); map.Insert("value", 100); std::ostringstream oss; @@ -611,78 +711,145 @@ int UtcDaliPropertyMapOstream02(void) tet_printf("Testing ouput of map: %s\n", oss.str().c_str()); // string-value pairs first, then index-value pairs - DALI_TEST_EQUALS( oss.str().compare("Map(3) = {timePeriod:Map(3) = {duration:5, delay:1, 10:DALi}, value:100, 100:9}"), 0, TEST_LOCATION ); + DALI_TEST_EQUALS(oss.str().compare("Map(3) = {timePeriod:Map(3) = {duration:5, delay:1, 10:DALi}, value:100, 100:9}"), 0, TEST_LOCATION); END_TEST; } int UtcDaliPropertyKeyConstructorP(void) { - Property::Key key1( "aKey" ); - DALI_TEST_EQUALS( key1.type, Property::Key::STRING, TEST_LOCATION ); - DALI_TEST_EQUALS( key1.stringKey, "aKey", TEST_LOCATION ); - DALI_TEST_EQUALS( key1.indexKey, Property::INVALID_INDEX, TEST_LOCATION ); - - Property::Key key2( Actor::Property::COLOR ); - DALI_TEST_EQUALS( key2.type, Property::Key::INDEX, TEST_LOCATION ); - DALI_TEST_EQUALS( key2.indexKey, (Dali::Property::Index)Actor::Property::COLOR, TEST_LOCATION ); + Property::Key key1("aKey"); + DALI_TEST_EQUALS(key1.type, Property::Key::STRING, TEST_LOCATION); + DALI_TEST_EQUALS(key1.stringKey, "aKey", TEST_LOCATION); + DALI_TEST_EQUALS(key1.indexKey, Property::INVALID_INDEX, TEST_LOCATION); + + Property::Key key2(Actor::Property::COLOR); + DALI_TEST_EQUALS(key2.type, Property::Key::INDEX, TEST_LOCATION); + DALI_TEST_EQUALS(key2.indexKey, (Dali::Property::Index)Actor::Property::COLOR, TEST_LOCATION); END_TEST; } int UtcDaliPropertyKeyEqualityOperatorP(void) { - Property::Key key1( "aKey" ); - Property::Key key2( 113 ); + Property::Key key1("aKey"); + Property::Key key2(113); - DALI_TEST_CHECK( key1 == "aKey" ); - DALI_TEST_CHECK( ! (key1 == "notTheKey") ); - DALI_TEST_CHECK( ! (key1 == 1) ); + DALI_TEST_CHECK(key1 == "aKey"); + DALI_TEST_CHECK(!(key1 == "notTheKey")); + DALI_TEST_CHECK(!(key1 == 1)); - DALI_TEST_CHECK( key2 == 113 ); - DALI_TEST_CHECK( ! (key2 == 0) ); - DALI_TEST_CHECK( ! (key2 == "One hundred and thirteen" ) ); + DALI_TEST_CHECK(key2 == 113); + DALI_TEST_CHECK(!(key2 == 0)); + DALI_TEST_CHECK(!(key2 == "One hundred and thirteen")); - DALI_TEST_CHECK( ! (key1 == key2) ); - DALI_TEST_CHECK( key1 != key2 ); + DALI_TEST_CHECK(!(key1 == key2)); + DALI_TEST_CHECK(key1 != key2); - Property::Key key1B( "aKey" ); - Property::Key key2B( 113 ); + Property::Key key1B("aKey"); + Property::Key key2B(113); - DALI_TEST_CHECK( key1 == key1B ); - DALI_TEST_CHECK( key2 == key2B ); + DALI_TEST_CHECK(key1 == key1B); + DALI_TEST_CHECK(key2 == key2B); END_TEST; } int UtcDaliPropertyKeyInequalityOperatorP(void) { - Property::Key key1( "aKey" ); - Property::Key key2( 113 ); + Property::Key key1("aKey"); + Property::Key key2(113); - DALI_TEST_CHECK( key1 != "notTheKey" ); - DALI_TEST_CHECK( key1 != 1 ); + DALI_TEST_CHECK(key1 != "notTheKey"); + DALI_TEST_CHECK(key1 != 1); - DALI_TEST_CHECK( key2 != 0 ); - DALI_TEST_CHECK( key2 != "One hundred and thirteen" ); + DALI_TEST_CHECK(key2 != 0); + DALI_TEST_CHECK(key2 != "One hundred and thirteen"); - DALI_TEST_CHECK( key1 != key2 ); + DALI_TEST_CHECK(key1 != key2); END_TEST; } - int UtcDaliPropertyKeyOutputStream(void) { - Property::Key key1( "aKey" ); - Property::Key key2( 113 ); + Property::Key key1("aKey"); + Property::Key key2(113); std::ostringstream oss; oss << key1; - DALI_TEST_EQUALS( oss.str(), "aKey", TEST_LOCATION ); + DALI_TEST_EQUALS(oss.str(), "aKey", TEST_LOCATION); std::ostringstream oss2; oss2 << key2; - DALI_TEST_EQUALS( oss2.str(), "113", TEST_LOCATION ); + DALI_TEST_EQUALS(oss2.str(), "113", TEST_LOCATION); + + END_TEST; +} + +int UtcDaliPropertyMapInitializerListConstructor(void) +{ + auto map = Property::Map{ + {"number mapped to string", 1}, + {10, "string mapped to number"}, + {"string mapped", "to string"}, + {100, 3}, + }; + + DALI_TEST_CHECK(!map.Empty()); // Should not be empty + DALI_TEST_EQUALS(4, map.Count(), TEST_LOCATION); // Should have four items + + DALI_TEST_EQUALS(1, map["number mapped to string"].Get(), TEST_LOCATION); + DALI_TEST_EQUALS("string mapped to number", map[10].Get(), TEST_LOCATION); + DALI_TEST_EQUALS("to string", map["string mapped"].Get(), TEST_LOCATION); + DALI_TEST_EQUALS(3, map[100].Get(), TEST_LOCATION); + + END_TEST; +} + +int UtcDaliPropertyMapNestedInitializerListConstructor(void) +{ + auto map = Property::Map{ + {1, 1}, + {2, {{2, 2}}}, + {3, {{3, {{3, 3}}}}}}; + + DALI_TEST_CHECK(!map.Empty()); + DALI_TEST_EQUALS(3, map.Count(), TEST_LOCATION); + + // Check first item + { + DALI_TEST_EQUALS(1, map[1].Get(), TEST_LOCATION); + } + + // Check second item + { + auto& value1 = map[2]; + DALI_TEST_EQUALS(Property::MAP, value1.GetType(), TEST_LOCATION); + + auto& map2 = *(value1.GetMap()); + DALI_TEST_EQUALS(1, map2.Count(), TEST_LOCATION); + + // check the value + DALI_TEST_EQUALS(2, map2[2].Get(), TEST_LOCATION); + } + + // Check the third item + { + auto& value1 = map[3]; + DALI_TEST_EQUALS(Property::MAP, value1.GetType(), TEST_LOCATION); + + auto& map2 = *(value1.GetMap()); + DALI_TEST_EQUALS(1, map2.Count(), TEST_LOCATION); + + auto& value2 = map2[3]; + DALI_TEST_EQUALS(Property::MAP, value2.GetType(), TEST_LOCATION); + + auto& map3 = *(value2.GetMap()); + DALI_TEST_EQUALS(1, map3.Count(), TEST_LOCATION); + + // check the value + DALI_TEST_EQUALS(3, map3[3].Get(), TEST_LOCATION); + } END_TEST; }