Revert "License conversion from Flora to Apache 2.0"
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-Any.cpp
1 ///
2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Flora License, Version 1.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //     http://floralicense.org/license/
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an AS IS BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16
17 #include <iostream>
18 #include <stdlib.h>
19
20 #include <dali/dali.h>
21 #include <dali-test-suite-utils.h>
22
23 // Temp include
24 #include <dali/public-api/object/any.h>
25
26 using namespace Dali;
27
28 void utc_dali_any_startup(void)
29 {
30   test_return_value = TET_UNDEF;
31 }
32
33 void utc_dali_any_cleanup(void)
34 {
35   test_return_value = TET_PASS;
36 }
37
38 int UtcDaliAnyConstructors(void)
39 {
40   TestApplication application;
41
42   tet_infoline("Test Any constructors.");
43
44   // Test default constructor.
45   Any value;
46
47   DALI_TEST_CHECK( typeid( void ) == value.GetType() );
48
49   // Test constructor Any( const Type& )
50   Any value1 = 4u;
51
52   // Test constructor Any( const Any& )
53   Any value2 = value1;
54
55   // Test constructor Any( const Any& ) with a non initialized Any
56   Any value3 = value;
57
58   DALI_TEST_CHECK( typeid( unsigned int ) == value1.GetType() );
59   DALI_TEST_CHECK( typeid( unsigned int ) == value2.GetType() );
60   DALI_TEST_CHECK( typeid( void ) == value3.GetType() );
61
62   unsigned int uiValue1 = 0u;
63   unsigned int uiValue2 = 0u;
64   value1.Get( uiValue1 );
65   value2.Get( uiValue2 );
66
67   DALI_TEST_EQUALS( uiValue1, uiValue2, TEST_LOCATION );
68   END_TEST;
69 }
70
71 int UtcDaliAnyAssignmentOperators(void)
72 {
73   TestApplication application;
74
75   tet_infoline("Test assignment operators.");
76
77   float fValue = 0.f;
78
79   Any value1;
80
81   value1 = 4.f; // Test operator=( const Type& ) when current object is not initialized.
82
83   value1.Get( fValue );
84
85   DALI_TEST_EQUALS( fValue, 4.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
86
87   Any value2 = 0.f;
88
89   value2 = 9.f; // Test operator=( const Type& ).
90
91   value2.Get( fValue );
92
93   DALI_TEST_EQUALS( fValue, 9.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
94
95   Any value3 = 5.f;
96
97   value1 = value3; // Test operator=( const Any& ).
98
99   value1.Get( fValue );
100
101   DALI_TEST_EQUALS( fValue, 5.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
102
103   Any value4;
104
105   value4 = value3; // Test operator=( const Any& ) when current object is not initialized.
106
107   value4.Get( fValue );
108
109   DALI_TEST_EQUALS( fValue, 5.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
110
111   // Test assign a value to value3 doesn't modify value1.
112   value3 = 3.f;
113
114   value1.Get( fValue );
115
116   DALI_TEST_EQUALS( fValue, 5.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
117
118   value3.Get( fValue );
119
120   DALI_TEST_EQUALS( fValue, 3.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
121
122   // Test the branch when copying the same object.
123   Any value5 = 3.f;
124   Any& value6( value5 );
125
126   value6 = value5;
127
128   value6.Get( fValue );
129   DALI_TEST_EQUALS( fValue, 3.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
130   END_TEST;
131 }
132
133 int UtcDaliAnyNegativeAssignmentOperators(void)
134 {
135   TestApplication application;
136
137   tet_infoline("Test assignment operators.");
138
139   Any value1 = 4.f;
140   Any value2 = 5u;
141
142   bool assert = false;
143
144   try
145   {
146     value1 = value2; // Test operator=( const Any& );
147   }
148   catch( Dali::DaliException& e )
149   {
150     tet_printf( "Assertion %s failed at %s\n", e.mCondition.c_str(), e.mLocation.c_str() );
151     assert = true;
152   }
153
154   if( assert )
155   {
156     tet_result( TET_PASS );
157   }
158   else
159   {
160     tet_result( TET_FAIL );
161   }
162   END_TEST;
163 }
164
165 int UtcDaliAnyGetType(void)
166 {
167   TestApplication application;
168
169   tet_infoline("Test GetType().");
170
171   Any value;
172
173   DALI_TEST_CHECK( typeid( void ) == value.GetType() );
174
175   value = 5.f;
176
177   DALI_TEST_CHECK( typeid( float ) == value.GetType() );
178   END_TEST;
179 }
180
181 int UtcDaliAnyGet(void)
182 {
183   TestApplication application;
184
185   tet_infoline("Test Get().");
186
187   Any value1( 5.f );
188
189   float fValue = value1.Get<float>();
190
191   DALI_TEST_EQUALS( fValue, 5.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
192
193   fValue = 0.f;
194   value1.Get( fValue );
195   DALI_TEST_EQUALS( fValue, 5.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
196   END_TEST;
197 }
198
199 int UtcDaliAnyNegativeGet(void)
200 {
201   TestApplication application;
202   tet_infoline("Test Get().");
203
204   Any value1;
205   Any value2( 5.f );
206
207   bool assert1 = false;
208   bool assert2 = false;
209
210   unsigned int uiValue = 0u;
211
212   try
213   {
214     uiValue = value1.Get< unsigned int >();
215   }
216
217   catch( Dali::DaliException& e )
218   {
219     tet_printf( "Assertion %s failed at %s\n", e.mCondition.c_str(), e.mLocation.c_str() );
220     assert1 = true;
221   }
222
223   try
224   {
225     uiValue = value2.Get< unsigned int >();
226   }
227
228   catch( Dali::DaliException& e )
229   {
230     tet_printf( "Assertion %s failed at %s\n", e.mCondition.c_str(), e.mLocation.c_str() );
231     assert2 = true;
232   }
233
234   if( assert1 && assert2 )
235   {
236     tet_result( TET_PASS );
237   }
238   else
239   {
240     tet_result( TET_FAIL );
241   }
242   uiValue++;  // supresss warning from unused variable
243   END_TEST;
244 }