X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-PropertyArray.cpp;h=7baa2f7499752b5402b9bfd9b42b0b26c8250ae1;hb=db9cfcd683be8e4b3a1f83f6378e493770eb9533;hp=84b33d754237f6a667d07ff307c91daaa3b6b6d3;hpb=432923e17cb38a99fc012473ef97fa8c4fc36162;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-PropertyArray.cpp b/automated-tests/src/dali/utc-Dali-PropertyArray.cpp index 84b33d7..7baa2f7 100644 --- a/automated-tests/src/dali/utc-Dali-PropertyArray.cpp +++ b/automated-tests/src/dali/utc-Dali-PropertyArray.cpp @@ -1,5 +1,5 @@ /* - * 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. @@ -18,6 +18,7 @@ #include #include +#include #include #include @@ -48,6 +49,29 @@ int UtcDaliPropertyArrayPushBackP(void) END_TEST; } +int UtcDaliPropertyArrayAddP(void) +{ + Property::Array array; + + DALI_TEST_CHECK( 0 == array.Size() ); + + array.Add( 1 ); + + DALI_TEST_CHECK( 1 == array.Size() ); + DALI_TEST_CHECK( array[0].Get() == 1 ); + + array.Add( 2 ) + .Add( 3 ) + .Add( 4.f ); + + DALI_TEST_EQUALS( 4u, array.Size(), TEST_LOCATION ); + DALI_TEST_EQUALS( array[1].Get(), 2, TEST_LOCATION ); + DALI_TEST_EQUALS( array[2].Get(), 3, TEST_LOCATION ); + DALI_TEST_EQUALS( array[3].Get(), 4.f, Math::MACHINE_EPSILON_1, TEST_LOCATION ); + + END_TEST; +} + int UtcDaliPropertyArrayCapacityP(void) { Property::Array array; @@ -206,3 +230,158 @@ int UtcDaliPropertyArrayAssignmentOperatorP(void) END_TEST; } + +int UtcDaliPropertyArrayResize(void) +{ + Property::Array array; + + array.Resize(3); + DALI_TEST_CHECK( array.Count() == 3 ); + + array.Resize(5); + DALI_TEST_CHECK( array.Count() == 5 ); + + END_TEST; +} + +int UtcDaliPropertyArrayOstream01(void) +{ + std::ostringstream oss; + + Property::Array array; + array.PushBack( 0 ); + array.PushBack( 1 ); + array.PushBack( 2 ); + + oss << array; + DALI_TEST_EQUALS( oss.str().compare("Array(3) = [0, 1, 2]"), 0, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliPropertyArrayOstream02(void) +{ + std::ostringstream oss; + + Property::Array array1; + array1.PushBack( 0 ); + array1.PushBack( 1 ); + array1.PushBack( 2 ); + + Property::Array array2; + array2.PushBack(array1); + array2.PushBack( 1 ); + array2.PushBack( 2 ); + + oss << array2; + DALI_TEST_EQUALS( oss.str().compare("Array(3) = [Array(3) = [0, 1, 2], 1, 2]"), 0, TEST_LOCATION ); + + 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; +}