[ATSPI] Add CalculateScreenExtents function
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-PropertyValue.cpp
index 99abb22..712f60f 100644 (file)
@@ -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>() == 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>() == 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<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;
+}
+
 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<Extents>(), 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<int>(E::e), static_cast<int>(value.Get<E>()), TEST_LOCATION );
+  DALI_TEST_EQUALS( static_cast<int>(E::e), value.Get<int>(), TEST_LOCATION );
+  E result;
+  DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
+  DALI_TEST_EQUALS( static_cast<int>(E::e), static_cast<int>(result), TEST_LOCATION );
+  int result2;
+  DALI_TEST_EQUALS( true, value.Get( result2 ), TEST_LOCATION );
+  DALI_TEST_EQUALS( static_cast<int>(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;
 }