2 * Copyright (c) 2015 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 #include "dali-test-suite-utils.h"
25 #include <dali/public-api/dali-core.h>
29 int test_return_value = TET_UNDEF;
31 void tet_result(int value)
33 // First TET_PASS should set to zero
34 // first TET_FAIL should prevent any further TET_PASS from setting back to zero
35 // Any TET_FAIL should set to fail or leave as fail
36 if( test_return_value != 1 )
37 test_return_value = value;
41 return ((test_return_value>0)?1:0)
44 void tet_infoline(const char* str)
46 fprintf(stderr, "%s\n", str);
49 void tet_printf(const char *format, ...)
52 va_start(arg, format);
53 vfprintf(stderr, format, arg);
57 bool operator==(TimePeriod a, TimePeriod b)
59 return Equals(a.durationSeconds, b.durationSeconds) && Equals(a.delaySeconds, b.delaySeconds) ;
62 std::ostream& operator<<( std::ostream& ostream, TimePeriod value )
64 return ostream << "( Duration:" << value.durationSeconds << " Delay:" << value.delaySeconds << ")";
67 std::ostream& operator<<( std::ostream& ostream, Radian angle )
69 ostream << angle.radian;
73 std::ostream& operator<<( std::ostream& ostream, Degree angle )
75 ostream << angle.degree;
79 void DALI_TEST_EQUALS( const Matrix3& matrix1, const Matrix3& matrix2, const char* location)
81 const float* m1 = matrix1.AsFloat();
82 const float* m2 = matrix2.AsFloat();
83 bool equivalent = true;
95 fprintf(stderr, "%s, checking\n"
96 "(%f, %f, %f) (%f, %f, %f)\n"
97 "(%f, %f, %f) == (%f, %f, %f)\n"
98 "(%f, %f, %f) (%f, %f, %f)\n",
100 m1[0], m1[1], m1[2], m2[0], m2[1], m2[2],
101 m1[3], m1[4], m1[5], m2[3], m2[4], m2[5],
102 m1[6], m1[7], m1[8], m2[6], m2[7], m2[8]);
104 tet_result(TET_FAIL);
108 tet_result(TET_PASS);
112 void DALI_TEST_EQUALS( const Matrix3& matrix1, const Matrix3& matrix2, float epsilon, const char* location)
114 const float* m1 = matrix1.AsFloat();
115 const float* m2 = matrix2.AsFloat();
116 bool equivalent = true;
118 for (int i=0;i<9;++i)
120 equivalent &= (fabsf(m1[i] - m2[i])<epsilon);
125 fprintf(stderr, "%s, checking\n"
126 "(%f, %f, %f) (%f, %f, %f)\n"
127 "(%f, %f, %f) == (%f, %f, %f)\n"
128 "(%f, %f, %f) (%f, %f, %f)\n",
130 m1[0], m1[1], m1[2], m2[0], m2[1], m2[2],
131 m1[3], m1[4], m1[5], m2[3], m2[4], m2[5],
132 m1[6], m1[7], m1[8], m2[6], m2[7], m2[8]);
134 tet_result(TET_FAIL);
138 tet_result(TET_PASS);
142 void DALI_TEST_EQUALS( const Matrix& matrix1, const Matrix& matrix2, const char* location)
144 const float* m1 = matrix1.AsFloat();
145 const float* m2 = matrix2.AsFloat();
146 bool identical = true;
160 fprintf(stderr, "%s, checking\n"
161 "(%f, %f, %f, %f) (%f, %f, %f, %f)\n"
162 "(%f, %f, %f, %f) == (%f, %f, %f, %f)\n"
163 "(%f, %f, %f, %f) (%f, %f, %f, %f)\n"
164 "(%f, %f, %f, %f) (%f, %f, %f, %f)\n", location,
165 m1[0], m1[1], m1[2], m1[3], m2[0], m2[1], m2[2], m2[3],
166 m1[4], m1[5], m1[6], m1[7], m2[4], m2[5], m2[6], m2[7],
167 m1[8], m1[9], m1[10], m1[11], m2[8], m2[9], m2[10], m2[11],
168 m1[12], m1[13], m1[14], m1[15], m2[12], m2[13], m2[14], m2[15]);
170 tet_result(TET_FAIL);
174 tet_result(TET_PASS);
178 void DALI_TEST_EQUALS( const Matrix& matrix1, const Matrix& matrix2, float epsilon, const char* location)
180 const float* m1 = matrix1.AsFloat();
181 const float* m2 = matrix2.AsFloat();
182 bool equivalent = true;
184 for (int i=0;i<16;++i)
186 equivalent &= (fabsf(m1[i] - m2[i])<epsilon);
191 fprintf(stderr, "%s, checking\n"
192 "(%f, %f, %f, %f) (%f, %f, %f, %f)\n"
193 "(%f, %f, %f, %f) == (%f, %f, %f, %f)\n"
194 "(%f, %f, %f, %f) (%f, %f, %f, %f)\n"
195 "(%f, %f, %f, %f) (%f, %f, %f, %f)\n", location,
196 m1[0], m1[1], m1[2], m1[3], m2[0], m2[1], m2[2], m2[3],
197 m1[4], m1[5], m1[6], m1[7], m2[4], m2[5], m2[6], m2[7],
198 m1[8], m1[9], m1[10], m1[11], m2[8], m2[9], m2[10], m2[11],
199 m1[12], m1[13], m1[14], m1[15], m2[12], m2[13], m2[14], m2[15]);
201 tet_result(TET_FAIL);
205 tet_result(TET_PASS);
211 * Test whether two strings are equal.
212 * @param[in] str1 The first string
213 * @param[in] str2 The second string
214 * @param[in] location The TEST_LOCATION macro should be used here
216 void DALI_TEST_EQUALS( const std::string &str1, const char* str2, const char* location)
218 DALI_TEST_EQUALS(str1.c_str(), str2, location);
222 * Test whether two strings are equal.
223 * @param[in] str1 The first string
224 * @param[in] str2 The second string
225 * @param[in] location The TEST_LOCATION macro should be used here
227 void DALI_TEST_EQUALS( const char* str1, const std::string &str2, const char* location)
229 DALI_TEST_EQUALS(str1, str2.c_str(), location);
232 void DALI_TEST_ASSERT( DaliException& e, std::string conditionSubString, const char* location )
234 if( NULL == strstr( e.condition, conditionSubString.c_str() ) )
236 fprintf(stderr, "Expected substring '%s' : actual exception string '%s' : location %s\n", conditionSubString.c_str(), e.condition, location );
237 tet_result(TET_FAIL);
241 tet_result(TET_PASS);
245 // Functor to test whether an Applied signal is emitted
246 ConstraintAppliedCheck::ConstraintAppliedCheck( bool& signalReceived )
247 : mSignalReceived( signalReceived )
251 void ConstraintAppliedCheck::operator()( Constraint& constraint )
253 mSignalReceived = true;
256 void ConstraintAppliedCheck::Reset()
258 mSignalReceived = false;
261 void ConstraintAppliedCheck::CheckSignalReceived()
263 if ( !mSignalReceived )
265 fprintf(stderr, "Expected Applied signal was not received\n" );
266 tet_result( TET_FAIL );
270 tet_result( TET_PASS );
274 void ConstraintAppliedCheck::CheckSignalNotReceived()
276 if ( mSignalReceived )
278 fprintf(stderr, "Unexpected Applied signal was received\n" );
279 tet_result( TET_FAIL );
283 tet_result( TET_PASS );
287 BufferImage CreateBufferImage()
289 BufferImage image = BufferImage::New(4,4,Pixel::RGBA8888);
291 PixelBuffer* pixbuf = image.GetBuffer();
293 // Using a 4x4 image gives a better blend with the GL implementation
295 for(size_t i=0; i<16; i++)
297 pixbuf[i*4+0] = 0xFF;
298 pixbuf[i*4+1] = 0xFF;
299 pixbuf[i*4+2] = 0xFF;
300 pixbuf[i*4+3] = 0xFF;