/*
- * Copyright (c) 2014 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.
END_TEST;
}
+
+int UtcDaliPropertyArrayCopyConstructor(void)
+{
+ Property::Array array1;
+ array1.PushBack( 0 );
+ array1.PushBack( 1 );
+ array1.PushBack( 2 );
+ DALI_TEST_EQUALS( 3u, array1.Size(), TEST_LOCATION );
+
+ Property::Array array2( array1 );
+ DALI_TEST_EQUALS( 3u, array1.Size(), TEST_LOCATION );
+ DALI_TEST_EQUALS( 3u, array2.Size(), TEST_LOCATION );
+
+ END_TEST;
+}
+
+int UtcDaliPropertyArrayAssignmentOperator(void)
+{
+ Property::Array array1;
+ array1.PushBack( 0 );
+ array1.PushBack( 1 );
+ array1.PushBack( 2 );
+ DALI_TEST_EQUALS( 3u, array1.Size(), TEST_LOCATION );
+
+ Property::Array array2;
+ array2.PushBack( 4 );
+ DALI_TEST_EQUALS( 1u, array2.Size(), TEST_LOCATION );
+
+ array2 = array1;
+ DALI_TEST_EQUALS( 3u, array1.Size(), TEST_LOCATION );
+ DALI_TEST_EQUALS( 3u, array2.Size(), TEST_LOCATION );
+
+ END_TEST;
+}
+
+int UtcDaliPropertyArrayMoveConstructor(void)
+{
+ Property::Array array1;
+ array1.PushBack( 0 );
+ array1.PushBack( 1 );
+ array1.PushBack( 2 );
+ DALI_TEST_EQUALS( 3u, array1.Size(), TEST_LOCATION );
+
+ Property::Array array2( std::move( array1 ) );
+ DALI_TEST_EQUALS( 3u, array2.Size(), TEST_LOCATION );
+
+ // Calling any methods on array1 will debug assert
+ const char * exceptionMessage = "Cannot use an object previously used as an r-value";
+ DALI_TEST_ASSERTION( array1.Count(), exceptionMessage );
+ DALI_TEST_ASSERTION( array1.PushBack( Property::Value() ), exceptionMessage );
+ DALI_TEST_ASSERTION( array1.Count(), exceptionMessage );
+ DALI_TEST_ASSERTION( array1.Clear(), exceptionMessage );
+ DALI_TEST_ASSERTION( array1.Reserve( 1 ), exceptionMessage );
+ DALI_TEST_ASSERTION( array1.Resize( 1 ), exceptionMessage );
+ DALI_TEST_ASSERTION( array1.Capacity(), exceptionMessage );
+ DALI_TEST_ASSERTION( array1[ 0 ], exceptionMessage );
+ DALI_TEST_ASSERTION( const_cast< const Property::Array& >( array1 )[ 0 ], exceptionMessage );
+ DALI_TEST_ASSERTION( Property::Array temp; array1 = temp, exceptionMessage );
+
+ END_TEST;
+}
+
+int UtcDaliPropertyArrayMoveAssignmentOperator(void)
+{
+ Property::Array array1;
+ array1.PushBack( 0 );
+ array1.PushBack( 1 );
+ array1.PushBack( 2 );
+ DALI_TEST_EQUALS( 3u, array1.Size(), TEST_LOCATION );
+
+ Property::Array array2;
+ array2.PushBack( 4 );
+ DALI_TEST_EQUALS( 1u, array2.Size(), TEST_LOCATION );
+
+ array2 = std::move( array1 );
+ DALI_TEST_EQUALS( 3u, array2.Size(), TEST_LOCATION );
+
+ // Calling any methods on array1 will debug assert
+ const char * exceptionMessage = "Cannot use an object previously used as an r-value";
+ DALI_TEST_ASSERTION( array1.Count(), exceptionMessage );
+ DALI_TEST_ASSERTION( array1.PushBack( Property::Value() ), exceptionMessage );
+ DALI_TEST_ASSERTION( array1.Count(), exceptionMessage );
+ DALI_TEST_ASSERTION( array1.Clear(), exceptionMessage );
+ DALI_TEST_ASSERTION( array1.Reserve( 1 ), exceptionMessage );
+ DALI_TEST_ASSERTION( array1.Resize( 1 ), exceptionMessage );
+ DALI_TEST_ASSERTION( array1.Capacity(), exceptionMessage );
+ DALI_TEST_ASSERTION( array1[ 0 ], exceptionMessage );
+ DALI_TEST_ASSERTION( const_cast< const Property::Array& >( array1 )[ 0 ], exceptionMessage );
+ DALI_TEST_ASSERTION( Property::Array temp; array1 = temp, exceptionMessage );
+
+ // Self assignemnt
+ array2 = std::move( array2 );
+ DALI_TEST_EQUALS( 3u, array2.Size(), TEST_LOCATION ); // still works, no debug assert
+
+ END_TEST;
+}
+
+int UtcDaliPropertyArrayInitializerListConstructor(void)
+{
+ Property::Array array{ 1, 2, "hello" };
+ DALI_TEST_EQUALS( 3u, array.Size(), TEST_LOCATION );
+ DALI_TEST_EQUALS( Property::INTEGER, array.GetElementAt( 0 ).GetType(), TEST_LOCATION );
+ DALI_TEST_EQUALS( Property::INTEGER, array.GetElementAt( 1 ).GetType(), TEST_LOCATION );
+ DALI_TEST_EQUALS( Property::STRING, array.GetElementAt( 2 ).GetType(), TEST_LOCATION );
+
+ END_TEST;
+}