5528b26420579f8e8080f004051b4695cb3af5e0
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-Radian.cpp
1 /*
2  * Copyright (c) 2020 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0
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
18 #include <iostream>
19
20 #include <stdlib.h>
21 #include <dali/public-api/dali-core.h>
22 #include <dali-test-suite-utils.h>
23
24 using namespace Dali;
25
26
27 void utc_dali_radian_startup(void)
28 {
29   test_return_value = TET_UNDEF;
30 }
31
32 void utc_dali_radian_cleanup(void)
33 {
34   test_return_value = TET_PASS;
35 }
36
37
38 // Positive test case for constructors
39 int UtcDaliRadianConstructors01(void)
40 {
41   // Default constructor, does not initialise the value
42   Radian radian0( 0.0f );
43
44   // Test float assignment operator
45   radian0 = Math::PI;
46   DALI_TEST_EQUALS( float(radian0), Math::PI, 0.001f, TEST_LOCATION );
47
48   // Constructor from float value
49   Radian radian1( Math::PI );
50   DALI_TEST_EQUALS( float(radian1), Math::PI, 0.001f, TEST_LOCATION );
51
52   // Constructor from a Degree
53   Radian radian2( Degree( 180.0f ) );
54   DALI_TEST_EQUALS( float(radian2), Math::PI, 0.001f, TEST_LOCATION );
55
56   // Assignment from Degree
57   Radian radian3( 0.0f );
58   radian3 = Degree( 180.0f );
59   DALI_TEST_EQUALS( float(radian3), Math::PI, 0.001f, TEST_LOCATION );
60   END_TEST;
61 }
62
63 int UtcDaliRadianCopyConstructor(void)
64 {
65   Radian radian0( Math::PI );
66   Radian radian1( radian0 );
67   DALI_TEST_EQUALS( float(radian1), Math::PI, 0.001f, TEST_LOCATION );
68
69   END_TEST;
70 }
71
72 int UtcDaliRadianMoveConstructor(void)
73 {
74   Radian radian0( Math::PI );
75   Radian radian1 = std::move( radian0 );
76   DALI_TEST_EQUALS( float(radian1), Math::PI, 0.001f, TEST_LOCATION );
77
78   END_TEST;
79 }
80
81 int UtcDaliRadianCopyAssignment(void)
82 {
83   Radian radian0( Math::PI );
84   Radian radian1;
85   radian1 = radian0;
86   DALI_TEST_EQUALS( float(radian1), Math::PI, 0.001f, TEST_LOCATION );
87
88   END_TEST;
89 }
90
91 int UtcDaliRadianMoveAssignment(void)
92 {
93   Radian radian0( Math::PI );
94   Radian radian1;
95   radian1 = std::move( radian0 );
96   DALI_TEST_EQUALS( float(radian1), Math::PI, 0.001f, TEST_LOCATION );
97
98   END_TEST;
99 }
100
101 // Positive test case for comparison
102 int UtcDaliRadianComparison01(void)
103 {
104   // Comparison between radians
105   Radian radian0( Math::PI_2 );
106   Radian radian1( Math::PI_2 );
107   Radian radian2( Math::PI );
108
109   DALI_TEST_CHECK( radian0 == radian1 );
110   DALI_TEST_CHECK( radian0 != radian2 );
111
112   // Comparison between radian to degree
113   Radian radian3( Math::PI );
114   Radian radian4( Math::PI_2 );
115   Degree degree0( 180.0f );
116
117   DALI_TEST_CHECK( radian3 == Radian(degree0) );
118   DALI_TEST_CHECK( radian4 != Radian(degree0) );
119
120   // Comparison with float
121   Radian radian5( Math::PI_2 );
122
123   DALI_TEST_CHECK( radian5 == Math::PI_2 );
124   DALI_TEST_CHECK( radian5 != Math::PI );
125
126   END_TEST;
127 }
128
129
130 // test case for cast operators
131 int UtcDaliRadianCastOperators01(void)
132 {
133   Radian radian0( Math::PI );
134
135   const float& value0( radian0.radian );
136   DALI_TEST_EQUALS( value0, Math::PI, 0.001f, TEST_LOCATION );
137
138   radian0 = Math::PI_2;
139   DALI_TEST_EQUALS( value0, Math::PI_2, 0.001f, TEST_LOCATION );
140
141   float value1( radian0 );
142   DALI_TEST_EQUALS( value1, Math::PI_2, 0.001f, TEST_LOCATION );
143
144   radian0 = Math::PI;
145   DALI_TEST_EQUALS( float(radian0), Math::PI, 0.001f, TEST_LOCATION );
146   END_TEST;
147 }
148
149
150 int UtcDaliRadianCastOperatorEquals(void)
151 {
152   Radian a(Math::PI_2);
153   Radian b(Math::PI_2);
154   Radian c(Math::PI);
155
156   DALI_TEST_EQUALS( a == a, true, TEST_LOCATION );
157   DALI_TEST_EQUALS( a == b, true, TEST_LOCATION );
158   DALI_TEST_EQUALS( a == c, false, TEST_LOCATION );
159   DALI_TEST_EQUALS( Degree(c) == c, true, TEST_LOCATION );
160   END_TEST;
161 }
162
163 int UtcDaliRadianCastOperatorNotEquals(void)
164 {
165   Radian a(Math::PI_2);
166   Radian b(Math::PI_2);
167   Radian c(Math::PI);
168
169   DALI_TEST_EQUALS( a != a, false, TEST_LOCATION );
170   DALI_TEST_EQUALS( a != b, false, TEST_LOCATION );
171   DALI_TEST_EQUALS( a != c, true, TEST_LOCATION );
172   DALI_TEST_EQUALS( Degree(a) != c, true, TEST_LOCATION );
173   END_TEST;
174 }
175
176 int UtcDaliRadianCastOperatorLessThan(void)
177 {
178   Radian a(Math::PI_4);
179   Radian b(Math::PI_2);
180   Radian c(Math::PI);
181   Radian d(2.0f*Math::PI);
182   Radian e(-Math::PI);
183
184   DALI_TEST_EQUALS(a < a, false, TEST_LOCATION);
185   DALI_TEST_EQUALS(a < b, true, TEST_LOCATION);
186   DALI_TEST_EQUALS(a < c, true, TEST_LOCATION);
187   DALI_TEST_EQUALS(a < d, true, TEST_LOCATION);
188   DALI_TEST_EQUALS(a < e, false, TEST_LOCATION);
189
190   DALI_TEST_EQUALS(b < a, false, TEST_LOCATION);
191   DALI_TEST_EQUALS(b < b, false, TEST_LOCATION);
192   DALI_TEST_EQUALS(c < b, false, TEST_LOCATION);
193   DALI_TEST_EQUALS(d < b, false, TEST_LOCATION);
194   DALI_TEST_EQUALS(e < b, true, TEST_LOCATION);
195
196   DALI_TEST_EQUALS( Radian(Math::PI_2) < Degree(180.0f), true,  TEST_LOCATION);
197   DALI_TEST_EQUALS( Radian(Math::PI_2) < Degree(90.0f),  false, TEST_LOCATION);
198   DALI_TEST_EQUALS( Radian(Math::PI_2) > Degree(45.0f),  true,  TEST_LOCATION);
199
200   DALI_TEST_EQUALS( Degree(180.0f) > Radian(Math::PI_2), true,  TEST_LOCATION);
201   DALI_TEST_EQUALS( Degree(90.0f)  > Radian(Math::PI_2), false, TEST_LOCATION);
202   DALI_TEST_EQUALS( Degree(45.0f)  < Radian(Math::PI_2), true,  TEST_LOCATION);
203
204   END_TEST;
205 }