UTC tests; PropertyValue, Vector2/3/4, Matrix
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-PropertyValue.cpp
index c6d462f..300b500 100644 (file)
@@ -114,6 +114,138 @@ void CheckTypeName(const Property::Type& type)
 
 } // CheckTypeName
 
+template <typename T>
+struct GetCheckP
+{
+  GetCheckP(T value)
+  {
+    Property::Value v(value);
+    DALI_TEST_CHECK( v.Get<T>() == value );
+  }
+};
+
+template <typename T>
+struct CheckCopyCtorP
+{
+  CheckCopyCtorP(Property::Value value)
+  {
+    Property::Value copy( value );
+    DALI_TEST_CHECK( value.Get<T>() == copy.Get<T>() );
+  }
+};
+
+template <>
+struct CheckCopyCtorP<AngleAxis>
+{
+  CheckCopyCtorP(Property::Value value)
+  {
+    Property::Value copy( value );
+    AngleAxis a = value.Get<AngleAxis>();
+    AngleAxis b = copy.Get<AngleAxis>();
+    DALI_TEST_CHECK( a.angle == b.angle );
+    DALI_TEST_CHECK( a.axis == b.axis );
+  }
+};
+
+template <>
+struct CheckCopyCtorP<Property::Array>
+{
+  CheckCopyCtorP(Property::Value value)
+  {
+    Property::Value copy( value );
+    Property::Array a = value.Get<Property::Array>();
+    Property::Array b = copy.Get<Property::Array>();
+    DALI_TEST_CHECK( a.Size() == b.Size() );
+  }
+};
+
+template <>
+struct CheckCopyCtorP<Property::Map>
+{
+  CheckCopyCtorP(Property::Value value)
+  {
+    Property::Value copy( value );
+    Property::Map a = value.Get<Property::Map>();
+    Property::Map b = copy.Get<Property::Map>();
+    DALI_TEST_CHECK( a.Count() == b.Count() );
+  }
+};
+
+
+template <typename T>
+struct GetCheckN
+{
+  GetCheckN()
+  {
+    Property::Value v;
+    try
+    {
+      T got = v.Get<T>();
+      (void)got;
+      tet_result(TET_FAIL);
+    }
+    catch( Dali::DaliException& e )
+    {
+      DALI_TEST_PRINT_ASSERT( e );
+      DALI_TEST_ASSERT( e, "Property type invalid", TEST_LOCATION );
+    }
+    catch( ... )
+    {
+      tet_printf("Assertion test failed - wrong Exception\n" );
+      tet_result(TET_FAIL);
+    }
+  }
+};
+
+template<>
+struct GetCheckN<Property::Array>
+{
+  GetCheckN()
+  {
+    Property::Value value;
+    try
+    {
+      Property::Array array = value.Get<Property::Array>();
+      tet_result(TET_FAIL);
+    }
+    catch( Dali::DaliException& e )
+    {
+      DALI_TEST_PRINT_ASSERT( e );
+      DALI_TEST_ASSERT( e, "Property type invalid", TEST_LOCATION );
+    }
+    catch( ... )
+    {
+      tet_printf("Assertion test failed - wrong Exception\n" );
+      tet_result(TET_FAIL);
+    }
+  }
+};
+
+template<>
+struct GetCheckN<Property::Map>
+{
+  GetCheckN()
+  {
+    Property::Value value;
+    try
+    {
+      Property::Map map = value.Get<Property::Map>();
+      tet_result(TET_FAIL);
+    }
+    catch( Dali::DaliException& e )
+    {
+      DALI_TEST_PRINT_ASSERT( e );
+      DALI_TEST_ASSERT( e, "Property type invalid", TEST_LOCATION );
+    }
+    catch( ... )
+    {
+      tet_printf("Assertion test failed - wrong Exception\n" );
+      tet_result(TET_FAIL);
+    }
+  }
+};
+
+
 } // unnamed namespace
 
 void utc_dali_property_value_startup(void)
@@ -126,383 +258,418 @@ void utc_dali_property_value_cleanup(void)
   test_return_value = TET_PASS;
 }
 
-int UtcDaliPropertyValueConstructors01(void)
-{
-  // Testing PropertyValue construction using Property::Type
-  // also testing the PropertyTypes::GetName is correct for each type
 
+int UtcDaliPropertyValueConstructors01P(void)
+{
   TestApplication application;
-  tet_infoline("Testing Property::Value construction using  Property::Type");
-
   Property::Value value;
+
   DALI_TEST_CHECK( value.GetType() == Property::NONE );
 
-  Property::Type type = Property::NONE;
-  CheckTypeName(type);
-  // Value(Value&) ctor and Value(Type&) ctor
-  DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type );
-  DALI_TEST_CHECK( Property::NONE == type );
-
-  // PropertyTypes
-  type = Property::BOOLEAN;
-  CheckTypeName(type);
-  DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type );
-  DALI_TEST_CHECK( PropertyTypes::Get<bool>()            == type );
-
-  type = Property::FLOAT;
-  CheckTypeName(type);
-  DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type );
-  DALI_TEST_CHECK( PropertyTypes::Get<float>()           == type );
-
-  type = Property::INTEGER;
-  CheckTypeName(type);
-  DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type );
-  DALI_TEST_CHECK( PropertyTypes::Get<int>()             == type );
-
-  type = Property::UNSIGNED_INTEGER;
-  CheckTypeName(type);
-  DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type );
-  DALI_TEST_CHECK( PropertyTypes::Get<unsigned int>()    == type );
-
-  type = Property::VECTOR2;
-  CheckTypeName(type);
-  DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type );
-  DALI_TEST_CHECK( PropertyTypes::Get<Vector2>()         == type );
-
-  type = Property::VECTOR3;
-  CheckTypeName(type);
-  DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type );
-  DALI_TEST_CHECK( PropertyTypes::Get<Vector3>()         == type );
-
-  type = Property::VECTOR4;
-  CheckTypeName(type);
-  DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type );
-  DALI_TEST_CHECK( PropertyTypes::Get<Vector4>()         == type );
-
-  type = Property::MATRIX3;
-  CheckTypeName(type);
-  DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type );
-  DALI_TEST_CHECK( PropertyTypes::Get<Matrix3>()         == type );
-
-  type = Property::MATRIX;
-  CheckTypeName(type);
-  DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type );
-  DALI_TEST_CHECK( PropertyTypes::Get<Matrix>()          == type );
+  END_TEST;
+}
 
-  typedef Dali::Rect<int> Rectangle;
-  type = Property::RECTANGLE;
-  CheckTypeName(type);
-  DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type );
-  DALI_TEST_CHECK( PropertyTypes::Get<Rectangle>()       == type );
+int UtcDaliPropertyValueConstructors02P(void)
+{
+  TestApplication application;
+  Property::Value value(true);
 
-  type = Property::ROTATION;
-  CheckTypeName(type);
-  DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type );
-  DALI_TEST_CHECK( PropertyTypes::Get<Quaternion>()      == type );
+  DALI_TEST_CHECK( value.GetType() == Property::BOOLEAN );
+  DALI_TEST_CHECK( value.Get<bool>() == true );
 
-  type = Property::ROTATION;
-  CheckTypeName(type);
-  DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type );
-  DALI_TEST_CHECK( PropertyTypes::Get<AngleAxis>()       == type );
+  END_TEST;
+}
 
-  type = Property::STRING;
-  CheckTypeName(type);
-  DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type );
-  DALI_TEST_CHECK( PropertyTypes::Get<std::string>()     == type );
+int UtcDaliPropertyValueConstructors03P(void)
+{
+  TestApplication application;
+  Property::Value value(2.f);
 
-  type = Property::ARRAY;
-  CheckTypeName(type);
-  DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type );
-  DALI_TEST_CHECK( PropertyTypes::Get<Property::Array>() == type );
+  DALI_TEST_CHECK( value.GetType() == Property::FLOAT );
+  DALI_TEST_CHECK( value.Get<float>() == 2.f );
 
-  type = Property::MAP;
-  CheckTypeName(type);
-  DALI_TEST_CHECK( Property::Value(Property::Value(type)).GetType() == type );
-  DALI_TEST_CHECK( PropertyTypes::Get<Property::Map>()   == type );
   END_TEST;
-
 }
 
-int UtcDaliPropertyValueConstructors02(void)
+int UtcDaliPropertyValueConstructors04P(void)
 {
-  // Testing PropertyValue construction using value / reference types
-  // also testing the PropertyTypes::Get return same value as constructed
-
   TestApplication application;
-  tet_infoline("Testing Property::Value construction using values / references");
+  Property::Value value(1);
 
-  Property::Value value;
+  DALI_TEST_CHECK( value.GetType() == Property::INTEGER );
+  DALI_TEST_CHECK( value.Get<int>() == 1 );
 
-  bool b = false;
-  value = Property::Value(true);
-  value.Get(b);
-  DALI_TEST_CHECK( true == b );
+  END_TEST;
+}
 
-  float f = 5.f;
-  value = Property::Value(10.f);
-  value.Get(f);
-  DALI_TEST_CHECK( Dali::Equals(10.f, f) );
+int UtcDaliPropertyValueConstructors05P(void)
+{
+  TestApplication application;
+  Property::Value value(1u);
 
-  int i = 5;
-  value = Property::Value(10);
-  value.Get(i);
-  DALI_TEST_CHECK( 10 == i );
+  DALI_TEST_CHECK( value.GetType() == Property::UNSIGNED_INTEGER );
+  DALI_TEST_CHECK( value.Get<unsigned int>() == 1u );
 
-  unsigned int ui = 5;
-  value = Property::Value(10U);
-  value.Get(ui);
-  DALI_TEST_CHECK( 10 == ui );
+  END_TEST;
+}
 
-  Vector2 v2 = Vector2(0,0);
-  value = Property::Value( Vector2(1,1) );
-  value.Get(v2);
-  DALI_TEST_CHECK( Vector2(1,1) == v2 );
+int UtcDaliPropertyValueConstructors06P(void)
+{
+  TestApplication application;
+  Vector2 v(1,1);
+  Property::Value value(v);
 
-  Vector3 v3 = Vector3(0.f,0.f,0.f);
-  value = Property::Value( Vector3(1.f,1.f,1.f) );
-  value.Get(v3);
-  DALI_TEST_CHECK( Vector3(1.f,1.f,1.f) == v3 );
+  DALI_TEST_CHECK( value.GetType() == Property::VECTOR2 );
+  DALI_TEST_CHECK( value.Get<Vector2>() == v );
 
-  Vector4 v4 = Vector4(0,0,0,0);
-  value = Property::Value( Vector4(1,1,1,1) );
-  value.Get(v4);
-  DALI_TEST_CHECK( Vector4(1,1,1,1) == v4 );
+  END_TEST;
+}
 
-  Matrix3 m3 = Matrix3(0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f,0.f);
-  value = Property::Value( Matrix3::IDENTITY );
-  value.Get(m3);
-  DALI_TEST_CHECK( Matrix3::IDENTITY == m3 );
+int UtcDaliPropertyValueConstructors07P(void)
+{
+  TestApplication application;
+  Vector3 v(1.0,1.0,1.0);
+  Property::Value value(v);
 
-  Matrix m = Matrix(true);
-  value = Property::Value( Matrix::IDENTITY );
-  value.Get(m);
-  DALI_TEST_CHECK( Matrix::IDENTITY == m );
+  DALI_TEST_CHECK( value.GetType() == Property::VECTOR3 );
+  DALI_TEST_CHECK( value.Get<Vector3>() == v );
 
-  typedef Dali::Rect<int> Rectangle;
-  Rectangle r = Rectangle(0,0,0,0);
-  value = Property::Value( Rectangle(1,1,1,1) );
-  value.Get(r);
-  DALI_TEST_CHECK( Rectangle(1,1,1,1) == r );
+  END_TEST;
+}
 
-  Quaternion q = Quaternion(0,0,0,0);
-  value = Property::Value( Quaternion(1,1,1,1) );
-  value.Get(q);
-  DALI_TEST_CHECK( Quaternion(1,1,1,1) == q );
+int UtcDaliPropertyValueConstructors08P(void)
+{
+  TestApplication application;
+  Matrix3 v(1.0,1.0,1.0, 1.0,1.0,1.0, 1.0,1.0,1.0);
+  Property::Value value(v);
 
-  AngleAxis aa = AngleAxis( Degree(0), Vector3(0.f,0.f,0.f) );
-  value = Property::Value( AngleAxis( Radian(Math::PI_2), Vector3::XAXIS  ));
-  value.Get(aa);
-  Quaternion r8(Radian(Degree(aa.angle)), aa.axis);
-  DALI_TEST_EQUALS(r8, Quaternion(Math::PI_2, Vector3::XAXIS), 0.001, TEST_LOCATION);
+  DALI_TEST_CHECK( value.GetType() == Property::MATRIX3 );
+  DALI_TEST_CHECK( value.Get<Matrix3>() == v );
 
-  std::string s = "no";
-  value = Property::Value("yes");
-  value.Get(s);
-  DALI_TEST_CHECK( "yes" == s );
+  END_TEST;
+}
 
-  Property::Array array;
-  value = Property::Value(Property::ARRAY);
-  value.AppendItem(10);
-  value.Get(array);
-  int getItem = 0;
-  array[0].Get(getItem);
-  DALI_TEST_CHECK( getItem == 10 );
+int UtcDaliPropertyValueConstructors09P(void)
+{
+  TestApplication application;
+  float a[] = {1.0,1.0,1.0,1.0, 1.0,1.0,1.0,1.0, 1.0,1.0,1.0,1.0, 1.0,1.0,1.0,1.0};
+  Matrix v(a);
+  Property::Value value(v);
 
-  Property::Map map;
-  value = Property::Value(Property::MAP);
-  value.SetValue("key", "value");
-  value.Get(map);
-  DALI_TEST_CHECK( map.GetKey(0) == "key" );
+  DALI_TEST_CHECK( value.GetType() == Property::MATRIX );
+  DALI_TEST_CHECK( value.Get<Matrix>() == v );
 
   END_TEST;
 }
 
+int UtcDaliPropertyValueConstructors10P(void)
+{
+  TestApplication application;
+  Rect<int> v(1.0,1.0,1.0,1.0);
+  Property::Value value(v);
+
+  DALI_TEST_CHECK( value.GetType() == Property::RECTANGLE );
+  DALI_TEST_CHECK( value.Get<Rect<int> >() == v );
 
-int UtcDaliPropertyValueCopyConstructors01(void)
+  END_TEST;
+}
+
+int UtcDaliPropertyValueConstructors11P(void)
 {
   TestApplication application;
-  tet_infoline("Testing Property::Value copy construction using values / references");
+  AngleAxis v(Degree(1.0), Vector3(1.0,1.0,1.0));
+  Property::Value value(v);
 
-  Property::Value value;
+  DALI_TEST_CHECK( value.GetType() == Property::ROTATION );
+  AngleAxis got = value.Get<AngleAxis>();
+  DALI_TEST_CHECK( got.angle == v.angle );
+  DALI_TEST_CHECK( got.axis == v.axis );
 
-  value = Property::Value(true);
-  {
-    Property::Value copy( value );
-    DALI_TEST_CHECK( true == copy.Get<bool>() );
-  }
+  END_TEST;
+}
 
-  value = Property::Value(10.f);
-  {
-    Property::Value copy( value );
-    DALI_TEST_CHECK( Dali::Equals(10.f, copy.Get<float>() ) );
-  }
+int UtcDaliPropertyValueConstructors12P(void)
+{
+  TestApplication application;
+  Quaternion v( Vector4(1.0,1.0,1.0,1.0) );
+  Property::Value value(v);
 
-  value = Property::Value(10);
-  {
-    Property::Value copy( value );
-    DALI_TEST_CHECK( 10 == copy.Get<int>() );
-  }
+  DALI_TEST_CHECK( value.GetType() == Property::ROTATION );
+  DALI_TEST_CHECK( value.Get<Quaternion>() == v );
 
-  value = Property::Value(10U);
-  {
-    Property::Value copy( value );
-    DALI_TEST_CHECK( 10 == copy.Get< unsigned int>() );
-  }
+  END_TEST;
+}
 
-  value = Property::Value( Vector2(1,1) );
-  {
-    Property::Value copy( value );
-    DALI_TEST_CHECK( Vector2(1,1) == copy.Get<Vector2>() );
-  }
+int UtcDaliPropertyValueConstructors13P(void)
+{
+  TestApplication application;
+  std::string v("1");
+  Property::Value value(v);
 
-  value = Property::Value( Vector3(1.f,1.f,1.f) );
-  {
-    Property::Value copy( value );
-    DALI_TEST_CHECK( Vector3(1.f,1.f,1.f) == copy.Get<Vector3>() );
-  }
+  DALI_TEST_CHECK( value.GetType() == Property::STRING );
+  DALI_TEST_CHECK( value.Get<std::string>() == v );
 
-  value = Property::Value( Vector4(1,1,1,1) );
-  {
-    Property::Value copy( value );
-    DALI_TEST_CHECK( Vector4(1,1,1,1) == copy.Get<Vector4>() );
-  }
+  END_TEST;
+}
 
-  value = Property::Value( Matrix3::IDENTITY );
-  {
-    Property::Value copy( value );
-    DALI_TEST_CHECK( Matrix3::IDENTITY == copy.Get<Matrix3>() );
-  }
+int UtcDaliPropertyValueConstructors14P(void)
+{
+  TestApplication application;
 
-  value = Property::Value( Matrix::IDENTITY );
-  {
-    Property::Value copy( value );
-    DALI_TEST_CHECK( Matrix::IDENTITY == copy.Get<Matrix>()  );
-  }
+  Property::Value value(Property::ARRAY);
+  value.AppendItem(Property::Value(1));
 
-  typedef Dali::Rect<int> Rectangle;
+  DALI_TEST_CHECK( value.GetType() == Property::ARRAY );
+  DALI_TEST_CHECK( value.GetSize() == 1);
 
-  value = Property::Value( Rectangle(1,1,1,1) );
-  {
-    Property::Value copy( value );
-    Rectangle copyRect;
-    copy.Get(copyRect);
-    DALI_TEST_CHECK(  Rectangle(1,1,1,1) == copyRect);
-  }
+  END_TEST;
+}
 
-  value = Property::Value( Quaternion(1,1,1,1) );
-  {
-    Property::Value copy( value );
-    DALI_TEST_CHECK( Quaternion(1,1,1,1) == copy.Get<Quaternion>() );
-  }
+int UtcDaliPropertyValueConstructors15P(void)
+{
+  TestApplication application;
 
-  value = Property::Value( AngleAxis( Radian(Math::PI_2), Vector3::XAXIS  ));
-  {
-    Property::Value copy( value );
-    DALI_TEST_CHECK( value.Get<AngleAxis>().axis == copy.Get<AngleAxis>().axis );
-    DALI_TEST_CHECK( value.Get<AngleAxis>().angle == copy.Get<AngleAxis>().angle );
-  }
+  Property::Value value(Property::MAP);
+  value.SetValue("1", Property::Value(1));
 
-  value = Property::Value("yes");
-  {
-    Property::Value copy( value );
-    DALI_TEST_CHECK( "yes" == copy.Get<std::string>() );
-  }
+  DALI_TEST_CHECK( value.GetType() == Property::MAP );
+  DALI_TEST_CHECK( value.GetSize() == 1);
 
-  Property::Array array;
-  value = Property::Value(Property::ARRAY);
-  value.AppendItem(10);
-  {
-    Property::Value copy( value );
-    copy.Get( array );
-    int getItem = 0;
-    array[0].Get( getItem );
-    DALI_TEST_CHECK( getItem == 10 );
-  }
-  Property::Map map;
-  value = Property::Value(Property::MAP);
-  value.SetValue("key", "value");
-  {
-    Property::Value copy( value );
-    copy.Get( map );
-    DALI_TEST_CHECK( map.GetKey(0) == "key" );
-  }
+  END_TEST;
+}
 
+int UtcDaliPropertyValueCopyConstructor01P(void)
+{
+  TestApplication application;
+  CheckCopyCtorP<float> check(1.f);
   END_TEST;
 }
 
+int UtcDaliPropertyValueCopyConstructor02P(void)
+{
+  TestApplication application;
+  CheckCopyCtorP<bool> check(true);
+  END_TEST;
+}
 
-int UtcDaliPropertyValueAssignmentOperator01(void)
+int UtcDaliPropertyValueCopyConstructor03P(void)
 {
-  // Testing Property Value assignment
   TestApplication application;
-  tet_infoline("Testing Property::Value assignment operator");
+  CheckCopyCtorP<float> check(1.f);
+  END_TEST;
+}
 
-  Property::Value value;
+int UtcDaliPropertyValueCopyConstructor04P(void)
+{
+  TestApplication application;
+  CheckCopyCtorP<int> check(1);
+  END_TEST;
+}
 
+int UtcDaliPropertyValueCopyConstructor05P(void)
+{
+  TestApplication application;
+  CheckCopyCtorP<unsigned int> check(1u);
+  END_TEST;
+}
 
-  value = Property::Value(true);
-  {
-    Property::Value copy( false );
-    copy = value;
-    DALI_TEST_CHECK( true == copy.Get<bool>() );
-  }
+int UtcDaliPropertyValueCopyConstructor06P(void)
+{
+  TestApplication application;
+  CheckCopyCtorP<Vector2> check( Vector2(1,1) );
+  END_TEST;
+}
 
-  value = Property::Value(10.f);
-  {
-    Property::Value copy(false);
-    copy = value;
+int UtcDaliPropertyValueCopyConstructor07P(void)
+{
+  TestApplication application;
+  CheckCopyCtorP<Vector3> check( Vector3(1.0,1.0,1.0) );
+  END_TEST;
+}
+
+int UtcDaliPropertyValueCopyConstructor08P(void)
+{
+  TestApplication application;
+  CheckCopyCtorP<Matrix3> check( Matrix3::IDENTITY );
+  END_TEST;
+}
+
+int UtcDaliPropertyValueCopyConstructor09P(void)
+{
+  TestApplication application;
+  CheckCopyCtorP<Matrix> check(Matrix::IDENTITY);
+  END_TEST;
+}
+
+int UtcDaliPropertyValueCopyConstructor10P(void)
+{
+  TestApplication application;
+  CheckCopyCtorP<Rect<int> > check( Rect<int>(1.0,1.0,1.0,1.0) );
+  END_TEST;
+}
+
+int UtcDaliPropertyValueCopyConstructor11P(void)
+{
+  TestApplication application;
+  CheckCopyCtorP<AngleAxis> check( AngleAxis(Degree(1.0), Vector3(1.0,1.0,1.0)) );
+  END_TEST;
+}
+
+int UtcDaliPropertyValueCopyConstructor12P(void)
+{
+  TestApplication application;
+  CheckCopyCtorP<Quaternion> check( Quaternion( Vector4(1.0, 1.0, 1.0, 1.0) ) );
+  END_TEST;
+}
+
+int UtcDaliPropertyValueCopyConstructor13P(void)
+{
+  TestApplication application;
+  CheckCopyCtorP<std::string> check( std::string("1") );
+  END_TEST;
+}
+
+int UtcDaliPropertyValueCopyConstructor14P(void)
+{
+  TestApplication application;
+  Property::Array value;
+  value.PushBack(Property::Value(1));
+  CheckCopyCtorP<Property::Array> check(value);
+  END_TEST;
+}
+
+int UtcDaliPropertyValueCopyConstructor15P(void)
+{
+  TestApplication application;
+  Property::Map value;
+  value["1"] = Property::Value(1);
+  CheckCopyCtorP<Property::Map> check(value);
+  END_TEST;
+}
+
+
+int UtcDaliPropertyValueAssignmentOperator01P(void)
+{
+  TestApplication application;
+  Property::Value value;
+  value = Property::Value(true);
+  {
+    Property::Value copy( false );
+    copy = value;
+    DALI_TEST_CHECK( true == copy.Get<bool>() );
+  }
+  END_TEST;
+}
+
+
+int UtcDaliPropertyValueAssignmentOperator02P(void)
+{
+  TestApplication application;
+  Property::Value value;
+  value = Property::Value(10.f);
+  {
+    Property::Value copy(false);
+    copy = value;
     DALI_TEST_CHECK( Dali::Equals(10.f, copy.Get<float>() ) );
   }
+  END_TEST;
+}
 
+int UtcDaliPropertyValueAssignmentOperator03P(void)
+{
+  TestApplication application;
+  Property::Value value;
   value = Property::Value(10);
   {
     Property::Value copy(false);
     copy = value;
     DALI_TEST_CHECK( 10 == copy.Get<int>() );
   }
+  END_TEST;
+}
 
+int UtcDaliPropertyValueAssignmentOperator04P(void)
+{
+  TestApplication application;
+  Property::Value value;
   value = Property::Value(10U);
   {
     Property::Value copy(false);
     copy = value;
     DALI_TEST_CHECK( 10 == copy.Get< unsigned int>() );
   }
+  END_TEST;
+}
 
+int UtcDaliPropertyValueAssignmentOperator05P(void)
+{
+  TestApplication application;
+  Property::Value value;
   value = Property::Value( Vector2(1,1) );
   {
     Property::Value copy(false);
     copy = value;
     DALI_TEST_CHECK( Vector2(1,1) == copy.Get<Vector2>() );
   }
+  END_TEST;
+}
 
+int UtcDaliPropertyValueAssignmentOperator06P(void)
+{
+  TestApplication application;
+  Property::Value value;
   value = Property::Value( Vector3(1.f,1.f,1.f) );
   {
     Property::Value copy(false);
     copy = value;
     DALI_TEST_CHECK( Vector3(1.f,1.f,1.f) == copy.Get<Vector3>() );
   }
+  END_TEST;
+}
 
+int UtcDaliPropertyValueAssignmentOperator07P(void)
+{
+  TestApplication application;
+  Property::Value value;
   value = Property::Value( Vector4(1,1,1,1) );
   {
     Property::Value copy(false);
     copy = value;
     DALI_TEST_CHECK( Vector4(1,1,1,1) == copy.Get<Vector4>() );
   }
+  END_TEST;
+}
 
+int UtcDaliPropertyValueAssignmentOperator08P(void)
+{
+  TestApplication application;
+  Property::Value value;
   value = Property::Value( Matrix3::IDENTITY );
   {
     Property::Value copy(false);
     copy = value;
     DALI_TEST_CHECK( Matrix3::IDENTITY == copy.Get<Matrix3>() );
   }
+  END_TEST;
+}
 
+int UtcDaliPropertyValueAssignmentOperator09P(void)
+{
+  TestApplication application;
+  Property::Value value;
   value = Property::Value( Matrix::IDENTITY );
   {
     Property::Value copy(false);
     copy = value;
     DALI_TEST_CHECK( Matrix::IDENTITY == copy.Get<Matrix>()  );
   }
+  END_TEST;
+}
 
+int UtcDaliPropertyValueAssignmentOperator10P(void)
+{
+  TestApplication application;
+  Property::Value value;
   typedef Dali::Rect<int> Rectangle;
 
   value = Property::Value( Rectangle(1,1,1,1) );
@@ -513,14 +680,27 @@ int UtcDaliPropertyValueAssignmentOperator01(void)
     copy.Get(copyRect);
     DALI_TEST_CHECK(  Rectangle(1,1,1,1) == copyRect);
   }
+  END_TEST;
+}
 
+int UtcDaliPropertyValueAssignmentOperator11P(void)
+{
+  TestApplication application;
+  Property::Value value;
   value = Property::Value( Quaternion(1,1,1,1) );
   {
     Property::Value copy(false);
     copy = value;
     DALI_TEST_CHECK( Quaternion(1,1,1,1) == copy.Get<Quaternion>() );
   }
+  END_TEST;
+}
 
+
+int UtcDaliPropertyValueAssignmentOperator12P(void)
+{
+  TestApplication application;
+  Property::Value value;
   value = Property::Value( AngleAxis( Radian(Math::PI_2), Vector3::XAXIS  ));
   {
     Property::Value copy(false);
@@ -528,14 +708,26 @@ int UtcDaliPropertyValueAssignmentOperator01(void)
     DALI_TEST_CHECK( value.Get<AngleAxis>().axis == copy.Get<AngleAxis>().axis );
     DALI_TEST_CHECK( value.Get<AngleAxis>().angle == copy.Get<AngleAxis>().angle );
   }
+  END_TEST;
+}
 
+int UtcDaliPropertyValueAssignmentOperator13P(void)
+{
+  TestApplication application;
+  Property::Value value;
   value = Property::Value("yes");
   {
     Property::Value copy(false);
     copy = value;
     DALI_TEST_CHECK( "yes" == copy.Get<std::string>() );
   }
+  END_TEST;
+}
 
+int UtcDaliPropertyValueAssignmentOperator14P(void)
+{
+  TestApplication application;
+  Property::Value value;
   Property::Array array;
   value = Property::Value(Property::ARRAY);
   value.AppendItem(10);
@@ -547,6 +739,13 @@ int UtcDaliPropertyValueAssignmentOperator01(void)
     array[0].Get( getItem );
     DALI_TEST_CHECK( getItem == 10 );
   }
+  END_TEST;
+}
+
+int UtcDaliPropertyValueAssignmentOperator15P(void)
+{
+  TestApplication application;
+  Property::Value value;
   Property::Map map;
   value = Property::Value(Property::MAP);
   value.SetValue("key", "value");
@@ -556,6 +755,568 @@ int UtcDaliPropertyValueAssignmentOperator01(void)
     copy.Get( map );
     DALI_TEST_CHECK( map.GetKey(0) == "key" );
   }
+  END_TEST;
+}
+
+
+int UtcDaliPropertyValueGetTypeP(void)
+{
+  TestApplication application;
+
+  Property::Value value;
+  DALI_TEST_CHECK( value.GetType() == Property::NONE );
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet01P(void)
+{
+  TestApplication application;
+  Property::Value value(true);
+  DALI_TEST_CHECK( value.Get<bool>() == true );
+  value = Property::Value(1.f);
+  DALI_TEST_CHECK( value.Get<float>() == 1.f );
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet01N(void)
+{
+  TestApplication application;
+
+  Property::Value value;
+  try
+  {
+    value.Get<bool>() == true;
+    tet_result(TET_FAIL);
+  }
+  catch( Dali::DaliException& e )
+  {
+    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_ASSERT( e, "Property type invalid", TEST_LOCATION );
+  }
+  catch( ... )
+  {
+    tet_printf("Assertion test failed - wrong Exception\n" );
+    tet_result(TET_FAIL);
+  }
+
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet02P(void)
+{
+  TestApplication application;
+  Property::Value value(true);
+  DALI_TEST_CHECK( value.Get<bool>() == true );
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet02N(void)
+{
+  TestApplication application;
+  GetCheckN<bool> check;
+  END_TEST;
+}
+
+
+int UtcDaliPropertyValueGet03P(void)
+{
+  TestApplication application;
+  GetCheckP<float> check(1.f);
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet03N(void)
+{
+  TestApplication application;
+  GetCheckN<float> check;
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet04P(void)
+{
+  TestApplication application;
+  GetCheckP<int> check(1);
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet04N(void)
+{
+  TestApplication application;
+  GetCheckN<int> check;
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet05P(void)
+{
+  TestApplication application;
+  GetCheckP<unsigned int> check(1u);
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet05N(void)
+{
+  TestApplication application;
+  GetCheckN<unsigned int> check;
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet06P(void)
+{
+  TestApplication application;
+  GetCheckP<Rect<int> > check(Rect<int>(1,1,1,1));
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet06N(void)
+{
+  TestApplication application;
+  GetCheckN<Rect<int> > check;
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet07P(void)
+{
+  TestApplication application;
+  GetCheckP<Vector2> check(Vector2(1.0,1.0));
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet07N(void)
+{
+  TestApplication application;
+  GetCheckN<Vector2> check;
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet8P(void)
+{
+  TestApplication application;
+  GetCheckP<Vector3> check(Vector3(1.0,1.0,1.0));
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet08N(void)
+{
+  TestApplication application;
+  GetCheckN<Vector3> check;
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet09P(void)
+{
+  TestApplication application;
+  GetCheckP<Vector4> check(Vector4(1.0,1.0,1.0,1.0));
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet09N(void)
+{
+  TestApplication application;
+  GetCheckN<Vector4> check;
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet10P(void)
+{
+  TestApplication application;
+  GetCheckP<Matrix3> check(Matrix3(Matrix3::IDENTITY));
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet10N(void)
+{
+  TestApplication application;
+  GetCheckN<Matrix3> check;
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet11P(void)
+{
+  TestApplication application;
+  GetCheckP<Matrix> check(Matrix(Matrix::IDENTITY));
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet11N(void)
+{
+  TestApplication application;
+  GetCheckN<Matrix> check;
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet12P(void)
+{
+  TestApplication application;
+  AngleAxis a(Degree(1.0), Vector3(1.0,1.0,1.0));
+  Property::Value v(a);
+  AngleAxis b = v.Get<AngleAxis>();
+  DALI_TEST_CHECK(a.angle == b.angle);
+  DALI_TEST_CHECK(a.axis == b.axis);
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet12N(void)
+{
+  TestApplication application;
+  GetCheckN<AngleAxis> check;
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet13P(void)
+{
+  TestApplication application;
+  GetCheckP<Quaternion> check(Quaternion(1.0,1.0,1.0,1.0));
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet13N(void)
+{
+  TestApplication application;
+  GetCheckN<Quaternion> check;
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet14P(void)
+{
+  TestApplication application;
+  GetCheckP<std::string> check(std::string("astring"));
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet14N(void)
+{
+  TestApplication application;
+  GetCheckN<std::string> check;
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet15P(void)
+{
+  TestApplication application;
+  Property::Value a(Property::ARRAY);
+  a.AppendItem(Property::Value(1));
+  Property::Array got = a.Get<Property::Array>();
+  DALI_TEST_CHECK(got[0].Get<int>() == 1);
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet15N(void)
+{
+  TestApplication application;
+  GetCheckN<Property::Array> check;
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet16P(void)
+{
+  TestApplication application;
+  Property::Value a(Property::MAP);
+  a.SetValue("key", Property::Value(1));
+  Property::Map got = a.Get<Property::Map>();
+  DALI_TEST_CHECK(got.GetValue(0).Get<int>() == 1);
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGet16N(void)
+{
+  TestApplication application;
+  GetCheckN<Property::Map> check;
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGetValueP(void)
+{
+  TestApplication application;
+  Property::Value map(Property::MAP);
+  Property::Value a(1);
+  map.SetValue("key", a);
+  DALI_TEST_CHECK( map.GetValue("key").Get<int>() == 1 );
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGetValue01N(void)
+{
+  TestApplication application;
+  Property::Value value(1);
+
+  try
+  {
+    Property::Value got = value.GetValue("key");
+    tet_result(TET_FAIL);
+  }
+  catch( Dali::DaliException& e )
+  {
+    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_ASSERT( e, "Property type invalid", TEST_LOCATION );
+  }
+  catch( ... )
+  {
+    tet_printf("Assertion test failed - wrong Exception\n" );
+    tet_result(TET_FAIL);
+  }
+
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGetValue02N(void)
+{
+  TestApplication application;
+  Property::Value value(Property::MAP);
+  value.SetValue("key", Property::Value(1));
+
+  try
+  {
+    Property::Value got = value.GetValue("nokey");
+    tet_result(TET_FAIL);
+  }
+  catch( Dali::DaliException& e )
+  {
+    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_ASSERT( e, "Cannot find property map key", TEST_LOCATION );
+  }
+  catch( ... )
+  {
+    tet_printf("Assertion test failed - wrong Exception\n" );
+    tet_result(TET_FAIL);
+  }
+
+  END_TEST;
+}
+
+int UtcDaliPropertyValueHasKeyP(void)
+{
+  TestApplication application;
+  Property::Value map(Property::MAP);
+  Property::Value a(1);
+  map.SetValue("key", a);
+  DALI_TEST_CHECK( map.HasKey("key") == true );
+  DALI_TEST_CHECK( map.HasKey("key2") == false );
+  END_TEST;
+}
+
+int UtcDaliPropertyValueHasKeyN(void)
+{
+  TestApplication application;
+  Property::Value a(1);
+  DALI_TEST_CHECK( a.HasKey("key") == false );
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGetKeyP(void)
+{
+  TestApplication application;
+  Property::Value map(Property::MAP);
+  Property::Value a(1);
+  map.SetValue("key", a);
+  std::string empty;
+  DALI_TEST_CHECK( map.GetKey(-1) == empty );
+  DALI_TEST_CHECK( map.GetKey(1) == empty );
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGetKeyN(void)
+{
+  TestApplication application;
+  Property::Value a(1);
+  std::string empty;
+  DALI_TEST_CHECK( a.GetKey(0) == empty );
+  END_TEST;
+}
+
+int UtcDaliPropertyValueSetValueP(void)
+{
+  TestApplication application;
+  Property::Value map(Property::MAP);
+  Property::Value a(1);
+  map.SetValue("key", a);
+  DALI_TEST_CHECK( map.GetValue("key").Get<int>() == 1 );
+  END_TEST;
+}
+
+int UtcDaliPropertyValueSetValueN(void)
+{
+  TestApplication application;
+  Property::Value value(1);
+
+  try
+  {
+    value.SetValue("key", Property::Value(1));
+    tet_result(TET_FAIL);
+  }
+  catch( Dali::DaliException& e )
+  {
+    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_ASSERT( e, "Property type invalid", TEST_LOCATION );
+  }
+  catch( ... )
+  {
+    tet_printf("Assertion test failed - wrong Exception\n" );
+    tet_result(TET_FAIL);
+  }
+
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGetItem01P(void)
+{
+  TestApplication application;
+  Property::Value value(Property::ARRAY);
+  value.AppendItem(Property::Value(0));
+  value.SetItem(0, Property::Value(1));
+  DALI_TEST_CHECK( value.GetItem(0).Get<int>() == 1 );
+
+  value = Property::Value(Property::MAP);
+  value.SetValue("key", Property::Value(0));
+  value.SetItem(0, Property::Value(1));
+  DALI_TEST_CHECK( value.GetItem(0).Get<int>() == 1 );
+
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGetItem01N(void)
+{
+  TestApplication application;
+
+  Property::Value value(1);
+
+  try
+  {
+    Property::Value item = value.GetItem(0);
+    tet_result(TET_FAIL);
+  }
+  catch( Dali::DaliException& e )
+  {
+    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_ASSERT( e, "Cannot GetItem on property Type; not a container", TEST_LOCATION );
+  }
+  catch( ... )
+  {
+    tet_printf("Assertion test failed - wrong Exception\n" );
+    tet_result(TET_FAIL);
+  }
+
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGetItem02P(void)
+{
+  TestApplication application;
+  Property::Value value(Property::ARRAY);
+  value.AppendItem(Property::Value(0));
+  value.SetItem(0, Property::Value(1));
+  std::string key;
+  DALI_TEST_CHECK( value.GetItem(0, key).Get<int>() == 1 );
+  DALI_TEST_CHECK( key.size() == 0u );
+
+  value = Property::Value(Property::MAP);
+  value.SetValue("key", Property::Value(0));
+  value.SetItem(0, Property::Value(1));
+  DALI_TEST_CHECK( value.GetItem(0, key).Get<int>() == 1 );
+  DALI_TEST_CHECK( key.size() == 3 );
+  DALI_TEST_CHECK( key == std::string("key") );
+
+  END_TEST;
+}
+
+int UtcDaliPropertyValueGetItem02N(void)
+{
+  TestApplication application;
+
+  Property::Value value(1);
+  std::string key;
+  try
+  {
+    Property::Value item = value.GetItem(0, key);
+    tet_result(TET_FAIL);
+  }
+  catch( Dali::DaliException& e )
+  {
+    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_ASSERT( e, "Cannot GetItem on property Type; not a container", TEST_LOCATION );
+  }
+  catch( ... )
+  {
+    tet_printf("Assertion test failed - wrong Exception\n" );
+    tet_result(TET_FAIL);
+  }
+
+  END_TEST;
+}
+
+int UtcDaliPropertyValueSetItemP(void)
+{
+  TestApplication application;
+
+  Property::Value value(Property::ARRAY);
+  value.AppendItem(Property::Value(0));
+  value.SetItem(0, Property::Value(1));
+  DALI_TEST_CHECK( value.GetItem(0).Get<int>() == 1 );
+
+  value = Property::Value(Property::MAP);
+  value.SetValue("key", Property::Value(0));
+  value.SetItem(0, Property::Value(1));
+  DALI_TEST_CHECK( value.GetItem(0).Get<int>() == 1 );
+
+  END_TEST;
+}
+
+int UtcDaliPropertyValueSetItemN(void)
+{
+  TestApplication application;
+
+  Property::Value value(1);
+
+  try
+  {
+    value.SetItem(0, Property::Value(2));
+    tet_result(TET_FAIL);
+  }
+  catch( Dali::DaliException& e )
+  {
+    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_ASSERT( e, "Cannot SetItem on property Type; not a container", TEST_LOCATION );
+  }
+  catch( ... )
+  {
+    tet_printf("Assertion test failed - wrong Exception\n" );
+    tet_result(TET_FAIL);
+  }
+
+  END_TEST;
+}
+
+int UtcDaliPropertyValueAppendItemP(void)
+{
+  TestApplication application;
+
+  Property::Value value(Property::ARRAY);
+  value.AppendItem(Property::Value(1));
+  DALI_TEST_CHECK( value.GetItem(0).Get<int>() == 1 );
+
+  END_TEST;
+}
+
+int UtcDaliPropertyValueAppendItemN(void)
+{
+  TestApplication application;
+
+  Property::Value value(1);
+
+  try
+  {
+    Property::Value item = value.AppendItem(Property::Value(1));
+    tet_result(TET_FAIL);
+  }
+  catch( Dali::DaliException& e )
+  {
+    DALI_TEST_PRINT_ASSERT( e );
+    DALI_TEST_ASSERT( e, "Property type invalid", TEST_LOCATION );
+  }
+  catch( ... )
+  {
+    tet_printf("Assertion test failed - wrong Exception\n" );
+    tet_result(TET_FAIL);
+  }
 
   END_TEST;
 }