2 * Copyright (c) 2014 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.
20 #include <dali-toolkit-test-suite-utils.h>
21 #include <dali-toolkit/dali-toolkit.h>
24 using namespace Dali::Toolkit;
29 const unsigned int NUM_ROWS = 16;
30 const unsigned int NUM_COLUMNS = 10;
31 const Vector2 VIEW_AREA_SIZE( 480.0f, 800.0f );
32 const float TRANSITION_DURATION = 0.5f;
33 const float CUBE_DISPLACEMENT = 55.f;
34 const Vector2 PAN_POSITION1( VIEW_AREA_SIZE.x * 0.75f, VIEW_AREA_SIZE.y * 0.25f );
35 const Vector2 PAN_DISPLACEMENT1( -5.f, 5.f );
36 const Vector2 PAN_POSITION2( VIEW_AREA_SIZE.x * 0.25f, VIEW_AREA_SIZE.y * 0.75f );
37 const Vector2 PAN_DISPLACEMENT2( 5.f, 5.f );
38 const int RENDER_FRAME_INTERVAL = 16;
39 static const float FLT_EPISILON = 0.0001f;
40 const float OFFSCREEN_RENDER_DURATION = 0.05f;
42 static bool gObjectCreatedCallBackCalled;
43 static void TestCallback(BaseHandle handle)
45 gObjectCreatedCallBackCalled = true;
49 * Simulate time passed by, waiting for certain process to finish
50 * @param[in] application Test application instance
51 * @param[in] durationToPass Time to pass in milliseconds.
53 void Wait(ToolkitTestApplication& application, float durationToPass)
55 int duration = static_cast<int>(durationToPass*1000.f);
56 // wait 2 more frames to compensate the two frames used by the bitmapImage waiting for the loading succeeded signal
57 for(int i = 0; i <= duration/RENDER_FRAME_INTERVAL+2 ; i++)
59 application.SendNotification();
60 application.Render(RENDER_FRAME_INTERVAL);
66 //Callback class to test whether transition completed signal is emitted when the transition animation is finished
67 class TransitionCompletedCallback : public Dali::ConnectionTracker
70 TransitionCompletedCallback( bool& signalReceived, CubeTransitionEffect& effect, ImageActor& imageActor )
71 : mSignalVerified( signalReceived ),
72 mCurrentEffect( effect ),
73 mActorTransitTo( imageActor )
77 void Callback( CubeTransitionEffect effect, ImageActor imageActor )
79 tet_infoline( "Verifying TransitionCompletedSignal" );
81 if( mCurrentEffect == effect && mActorTransitTo == imageActor )
83 mSignalVerified = true;
89 mSignalVerified = false;
92 bool& mSignalVerified;
93 CubeTransitionEffect& mCurrentEffect;
94 ImageActor& mActorTransitTo;
101 void cube_transition_effect_startup(void)
103 test_return_value = TET_UNDEF;
106 void cube_transition_effect_cleanup(void)
108 test_return_value = TET_PASS;
111 int UtcDaliCubeTransitionWaveEffectNew(void)
113 ToolkitTestApplication application;
114 tet_infoline(" UtcDaliCubeTransitionWaveEffectNew ");
116 CubeTransitionEffect waveEffect;
118 DALI_TEST_CHECK( !waveEffect );
120 waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
122 DALI_TEST_CHECK( waveEffect );
126 //Additional check to ensure object is created by checking if it's registered
127 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
128 DALI_TEST_CHECK( registry );
130 gObjectCreatedCallBackCalled = false;
131 registry.ObjectCreatedSignal().Connect( &TestCallback );
133 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
135 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
139 int UtcDaliCubeTransitionCrossEffectNew(void)
141 ToolkitTestApplication application;
142 tet_infoline(" UtcDaliCubeTransitionCrossEffectNew ");
144 CubeTransitionEffect crossEffect;
146 DALI_TEST_CHECK( !crossEffect );
148 crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
150 DALI_TEST_CHECK( crossEffect );
154 //Additional check to ensure object is created by checking if it's registered
155 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
156 DALI_TEST_CHECK( registry );
158 gObjectCreatedCallBackCalled = false;
159 registry.ObjectCreatedSignal().Connect( &TestCallback );
161 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
163 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
167 int UtcDaliCubeTransitionFoldEffectNew(void)
169 ToolkitTestApplication application;
170 tet_infoline( " UtcDaliCubeTransitionFoldEffectNew " );
172 CubeTransitionEffect foldEffect;
174 DALI_TEST_CHECK( !foldEffect );
176 foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
178 DALI_TEST_CHECK( foldEffect );
182 //Additional check to ensure object is created by checking if it is registered
183 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
184 DALI_TEST_CHECK( registry );
186 gObjectCreatedCallBackCalled = false;
187 registry.ObjectCreatedSignal().Connect( &TestCallback );
189 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
191 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
195 int UtcDaliCubeTransitionEffectSetGetTransitionDuration(void)
197 ToolkitTestApplication application;
198 tet_infoline(" UtcDaliCubeTransitionEffectSetGetTransitionDuration ");
200 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
201 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
202 DALI_TEST_EQUALS( TRANSITION_DURATION, waveEffect.GetTransitionDuration(), TEST_LOCATION );
204 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
205 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
206 DALI_TEST_EQUALS( TRANSITION_DURATION, crossEffect.GetTransitionDuration(), TEST_LOCATION );
208 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
209 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
210 DALI_TEST_EQUALS( TRANSITION_DURATION, foldEffect.GetTransitionDuration(), TEST_LOCATION );
214 int UtcDaliCubeTransitionEffectSetGetCubeDisplacement(void)
216 ToolkitTestApplication application;
217 tet_infoline(" UtcDaliCubeTransitionEffectSetGetTransitionDuration ");
219 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
220 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
221 DALI_TEST_EQUALS( CUBE_DISPLACEMENT, waveEffect.GetCubeDisplacement(), TEST_LOCATION );
223 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
224 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
225 DALI_TEST_EQUALS( CUBE_DISPLACEMENT, crossEffect.GetCubeDisplacement(), TEST_LOCATION );
227 //Cube displacement is not used in CubeTransitionFoldEffect
231 //Test common codes in base class
232 int UtcDaliCubeTransitionEffectGetRoot(void)
234 ToolkitTestApplication application;
235 tet_infoline(" UtcDaliCubeTransitionEffectGetRoot ");
237 unsigned int totalNum = NUM_ROWS*NUM_COLUMNS;
239 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
240 Actor rootActor = waveEffect.GetRoot();
242 // check that we have a total of NUM_ROWS*NUM_COLUMNS cubes;
243 DALI_TEST_CHECK( totalNum == rootActor.GetChildCount() );
245 // check that every cube has two children
246 DALI_TEST_CHECK( 2 == rootActor.GetChildAt(0).GetChildCount() );
247 DALI_TEST_CHECK( 2 == rootActor.GetChildAt(totalNum/2).GetChildCount() );
248 DALI_TEST_CHECK( 2 == rootActor.GetChildAt(totalNum-1).GetChildCount() );
252 int UtcDaliCubeTransitionEffectIsTransiting(void)
254 ToolkitTestApplication application;
255 tet_infoline(" UtcDaliCubeTransitionEffectIsTransiting ");
257 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
258 ImageActor imageActor = CreateSolidColorImageActor(application, Color::BLUE,30,30);
260 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
261 Actor rootActor = waveEffect.GetRoot();
262 Stage::GetCurrent().Add( rootActor );
264 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
265 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
266 DALI_TEST_CHECK( !waveEffect.IsTransiting() );
268 waveEffect.SetCurrentImage(imageActor);
269 waveEffect.SetTargetImage(imageActor);
270 //transition is started
271 waveEffect.StartTransition();
272 DALI_TEST_CHECK( waveEffect.IsTransiting() );
273 //transition is finished
274 Wait( application, TRANSITION_DURATION );
275 DALI_TEST_CHECK( !waveEffect.IsTransiting() );
277 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
278 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
279 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
280 DALI_TEST_CHECK( !crossEffect.IsTransiting() );
282 crossEffect.SetCurrentImage(imageActor);
283 crossEffect.SetTargetImage(imageActor);
284 //transition is started
285 crossEffect.StartTransition(false);
286 DALI_TEST_CHECK( crossEffect.IsTransiting() );
287 //transition is finished
288 Wait( application, TRANSITION_DURATION );
289 DALI_TEST_CHECK( !crossEffect.IsTransiting() );
291 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
292 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
293 DALI_TEST_CHECK( !foldEffect.IsTransiting() );
295 foldEffect.SetCurrentImage( imageActor );
296 foldEffect.SetTargetImage( imageActor );
297 //transition is started
298 foldEffect.StartTransition(true);
299 DALI_TEST_CHECK(foldEffect.IsTransiting() );
300 //transition is finished
301 Wait( application, TRANSITION_DURATION );
302 DALI_TEST_CHECK( !foldEffect.IsTransiting() );
307 //Test common codes in base class
308 int UtcDaliCubeTransitionEffectSetCurrentImage(void)
310 ToolkitTestApplication application;
311 tet_infoline(" UtcDaliCubeTransitionEffectSetCurrentImage ");
313 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
314 ImageActor imageActor = CreateSolidColorImageActor(application, Color::BLUE,40,40) ;
316 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
317 waveEffect.SetCurrentImage( imageActor );
319 // the current image content is set to the tiles facing the camera
320 ImageActor tile = ImageActor::DownCast( (waveEffect.GetRoot().GetChildAt(0).GetChildAt(0)));
322 //check the pixel area set to the cube
323 ImageActor::PixelArea pixelAreaDef( 0, 0, VIEW_AREA_SIZE.x / NUM_COLUMNS, VIEW_AREA_SIZE.y / NUM_ROWS);
324 ImageActor::PixelArea pixelArea = tile.GetPixelArea();
325 DALI_TEST_CHECK ( pixelAreaDef == pixelArea );
327 //check the size of the off screen rendered image
328 Wait( application, OFFSCREEN_RENDER_DURATION );
329 ImageAttributes attributes( tile.GetImage().GetAttributes() );
330 DALI_TEST_EQUALS( static_cast<float>(attributes.GetWidth()), VIEW_AREA_SIZE.x, TEST_LOCATION );
331 DALI_TEST_EQUALS( static_cast<float>(attributes.GetHeight()), VIEW_AREA_SIZE.y, TEST_LOCATION );
335 //Test common codes in base class
336 int UtcDaliCubeTransitionEffectSetTargetImage(void)
338 ToolkitTestApplication application;
339 tet_infoline(" UtcDaliCubeTransitionEffectSetTargetImage ");
341 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
342 ImageActor imageActor = CreateSolidColorImageActor(application, Color::BLUE,30,30);
344 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
345 Actor rootActor = waveEffect.GetRoot();
346 Stage::GetCurrent().Add( rootActor );
348 waveEffect.SetCurrentImage( imageActor );
349 waveEffect.SetTargetImage( imageActor );
351 // the target image content is set to the tiles currently invisible to the camera
352 ImageActor tile = ImageActor::DownCast( (rootActor.GetChildAt(0).GetChildAt(1)));
354 //check the pixel area set to the cube
355 ImageActor::PixelArea pixelAreaDef( 0, 0, VIEW_AREA_SIZE.x / NUM_COLUMNS, VIEW_AREA_SIZE.y / NUM_ROWS);
356 ImageActor::PixelArea pixelArea = tile.GetPixelArea();
357 DALI_TEST_CHECK ( pixelAreaDef == pixelArea );
359 //check the size of the off screen rendered image
360 Wait( application, OFFSCREEN_RENDER_DURATION );
361 ImageAttributes attributes( tile.GetImage().GetAttributes() );
362 DALI_TEST_EQUALS( static_cast<float>(attributes.GetWidth()), VIEW_AREA_SIZE.x, TEST_LOCATION );
363 DALI_TEST_EQUALS( static_cast<float>(attributes.GetHeight()), VIEW_AREA_SIZE.y, TEST_LOCATION );
367 int UtcDaliCubeTransitionWaveEffectStartTransition(void)
369 ToolkitTestApplication application;
370 tet_infoline(" UtcDaliCubeTransitionWaveEffectStartTransition ");
372 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
373 ImageActor imageActor = CreateSolidColorImageActor(application, Color::BLUE,30,30);
375 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
376 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
377 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
378 Actor rootActor = waveEffect.GetRoot();
379 Stage::GetCurrent().Add( rootActor );
380 Actor cube = rootActor.GetChildAt(0);
382 waveEffect.SetCurrentImage( imageActor );
384 Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
385 Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
387 //check the cube rotation value and color values after different transitions
388 waveEffect.SetTargetImage( imageActor );
389 waveEffect.StartTransition(true);
390 Wait( application, TRANSITION_DURATION );
391 DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
392 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
393 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
395 waveEffect.SetTargetImage( imageActor );
396 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
397 Wait( application, TRANSITION_DURATION );
398 DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( -2.f*Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
399 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
400 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
402 waveEffect.SetTargetImage( imageActor );
403 waveEffect.StartTransition(false);
404 Wait( application, TRANSITION_DURATION );
405 DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
406 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
407 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
409 waveEffect.SetTargetImage( imageActor );
410 waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
411 Wait( application, TRANSITION_DURATION );
412 DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( 0.f, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
413 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
414 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
418 int UtcDaliCubeTransitionCrossEffectStartTransition(void)
420 ToolkitTestApplication application;
421 tet_infoline(" UtcDaliCubeTransitionCrossEffectStartTransition ");
423 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
424 ImageActor imageActor = CreateSolidColorImageActor(application, Color::BLUE,30,30);
426 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
427 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
428 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
429 Actor rootActor = crossEffect.GetRoot();
430 Stage::GetCurrent().Add( rootActor );
431 crossEffect.SetCurrentImage( imageActor );
432 Actor cube0 = rootActor.GetChildAt(0);
433 Actor cube1 = rootActor.GetChildAt(1);
435 Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
436 Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
438 //check the cube rotation values and color values after different transitions
439 crossEffect.SetTargetImage( imageActor );
440 crossEffect.StartTransition(true);
441 Wait( application, TRANSITION_DURATION );
442 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
443 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
444 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
445 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
448 crossEffect.SetTargetImage( imageActor );
449 crossEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
450 Wait( application, TRANSITION_DURATION );
451 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -2.f*Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
452 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 2.f*Math::PI_2, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
453 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
454 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
457 crossEffect.SetTargetImage( imageActor );
458 crossEffect.StartTransition(false);
459 Wait( application, TRANSITION_DURATION );
460 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
461 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
462 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
463 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
465 crossEffect.SetTargetImage( imageActor );
466 crossEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
467 Wait( application, TRANSITION_DURATION );
468 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( 0.f, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
469 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 0.f, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
470 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
471 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
475 int UtcDaliCubeTransitionFoldEffectStartTransition(void)
477 ToolkitTestApplication application;
478 tet_infoline(" UtcDaliCubeTransitionFoldEffectStartTransition ");
480 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
481 ImageActor imageActor = CreateSolidColorImageActor(application, Color::BLUE,30,30);
483 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
484 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
485 Actor rootActor = foldEffect.GetRoot();
486 Stage::GetCurrent().Add( rootActor );
487 foldEffect.SetCurrentImage( imageActor );
488 Actor cube0 = rootActor.GetChildAt(0);
489 Actor cube1 = rootActor.GetChildAt(1);
491 Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
492 Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
494 //check the cube rotation values and color values after different transitions
495 foldEffect.SetTargetImage( imageActor );
496 foldEffect.StartTransition(true);
497 Wait( application, TRANSITION_DURATION );
498 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
499 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
500 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
501 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
503 foldEffect.SetTargetImage( imageActor );
504 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
505 Wait( application, TRANSITION_DURATION );
506 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -2.f*Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
507 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 2.f*Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
508 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
509 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
512 foldEffect.SetTargetImage( imageActor );
513 foldEffect.StartTransition(false);
514 Wait( application, TRANSITION_DURATION );
515 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
516 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
517 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
518 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(),fullBrightness, FLT_EPISILON, TEST_LOCATION );
520 foldEffect.SetTargetImage( imageActor );
521 foldEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
522 Wait( application, TRANSITION_DURATION );
523 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( 0.f, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
524 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 0.f, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
525 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
526 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
530 int UtcDaliCubeTransitionEffectSignalTransitionCompleted(void)
532 ToolkitTestApplication application;
533 tet_infoline(" UtcDaliCubeTransitionEffectSignalTransitionCompleted ");
535 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
536 ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
537 ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
538 ImageActor thirdImageActor = CreateSolidColorImageActor(application, Color::BLUE,40,40);
540 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
541 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
542 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
543 Actor rootActor = waveEffect.GetRoot();
544 Stage::GetCurrent().Add( rootActor );
546 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
547 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
548 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
549 rootActor = crossEffect.GetRoot();
550 Stage::GetCurrent().Add( rootActor );
552 CubeTransitionEffect foldEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
553 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
554 rootActor = foldEffect.GetRoot();
555 Stage::GetCurrent().Add( rootActor );
557 bool signalVerified = false;
558 CubeTransitionEffect currentEffect;
559 ImageActor actorTransitTo;
560 TransitionCompletedCallback callback(signalVerified, currentEffect, actorTransitTo);
561 waveEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
562 crossEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
563 foldEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
565 //check that the wave effect is used to transit to secondImageActor
566 currentEffect = waveEffect;
567 actorTransitTo = secondImageActor;
568 waveEffect.SetCurrentImage( firstImageActor );
569 waveEffect.SetTargetImage( secondImageActor );
570 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
571 Wait( application, TRANSITION_DURATION );
572 DALI_TEST_CHECK(callback.mSignalVerified);
575 //check that the wave effect is used to transit to thirdImageActor
576 actorTransitTo = thirdImageActor;
577 waveEffect.SetTargetImage( thirdImageActor );
578 waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
579 Wait( application, TRANSITION_DURATION );
580 DALI_TEST_CHECK(callback.mSignalVerified);
583 //check that the cross effect is used to transit to secondImageActor
584 currentEffect = crossEffect;
585 actorTransitTo = secondImageActor;
586 crossEffect.SetCurrentImage( thirdImageActor );
587 crossEffect.SetTargetImage( secondImageActor );
588 crossEffect.StartTransition(true);
589 Wait( application, TRANSITION_DURATION );
590 DALI_TEST_CHECK(callback.mSignalVerified);
593 //check that the cross effect is used to transit to firstImageActor
594 actorTransitTo = firstImageActor;
595 crossEffect.SetTargetImage( firstImageActor );
596 crossEffect.StartTransition(false);
597 Wait( application, TRANSITION_DURATION );
598 DALI_TEST_CHECK(callback.mSignalVerified);
601 //check that the fold effect is used to transit to secondImageActor
602 currentEffect = foldEffect;
603 actorTransitTo = secondImageActor;
604 foldEffect.SetCurrentImage( firstImageActor );
605 foldEffect.SetTargetImage( secondImageActor );
606 foldEffect.StartTransition();
607 Wait( application, TRANSITION_DURATION );
608 DALI_TEST_CHECK( callback.mSignalVerified );
611 //check that the fold effect is used to transit to thirdImageActor
612 actorTransitTo = thirdImageActor;
613 foldEffect.SetTargetImage( thirdImageActor );
614 foldEffect.StartTransition( false );
615 Wait( application, TRANSITION_DURATION );
616 DALI_TEST_CHECK( callback.mSignalVerified );
620 int UtcDaliCubeTransitionEffectPauseResumeTransition(void)
622 ToolkitTestApplication application;
623 tet_infoline(" UtcDaliCubeTransitionEffectPauseResumeTransition ");
625 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
626 ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
627 ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
629 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
630 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
631 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
632 Actor rootActor = waveEffect.GetRoot();
633 Stage::GetCurrent().Add( rootActor );
635 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
636 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
637 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
638 rootActor = crossEffect.GetRoot();
639 Stage::GetCurrent().Add( rootActor );
641 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
642 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
643 rootActor = crossEffect.GetRoot();
644 Stage::GetCurrent().Add( rootActor );
646 bool signalVerified = false;
647 CubeTransitionEffect currentEffect;
648 ImageActor actorTransitTo;
649 TransitionCompletedCallback callback(signalVerified, currentEffect, actorTransitTo);
650 waveEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
651 crossEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
652 foldEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
654 currentEffect = waveEffect;
655 actorTransitTo = secondImageActor;
656 waveEffect.SetCurrentImage( firstImageActor );
657 waveEffect.SetTargetImage( secondImageActor );
658 // start transition; transit for 0.5*duration; pause for 0.5*duration;
659 // resume for 0.25*duration; pause for 0.25*duration; resume for another 0.25*duration;
660 // only until now the transition finished signal can be received
661 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
662 Wait( application, TRANSITION_DURATION*0.5f );
663 DALI_TEST_CHECK(!callback.mSignalVerified);
664 waveEffect.PauseTransition();
665 Wait( application, TRANSITION_DURATION*0.5f );
666 DALI_TEST_CHECK(!callback.mSignalVerified);
667 waveEffect.ResumeTransition();
668 Wait( application, TRANSITION_DURATION*0.25f );
669 DALI_TEST_CHECK(!callback.mSignalVerified);
670 waveEffect.PauseTransition();
671 Wait( application, TRANSITION_DURATION*0.25f );
672 DALI_TEST_CHECK(!callback.mSignalVerified);
673 waveEffect.ResumeTransition();
674 Wait( application, TRANSITION_DURATION*0.25f );
675 DALI_TEST_CHECK(callback.mSignalVerified);
678 currentEffect = crossEffect;
679 actorTransitTo = firstImageActor;
680 crossEffect.SetCurrentImage( secondImageActor );
681 crossEffect.SetTargetImage( firstImageActor );
682 // start transition; transit for 0.25*duration; pause for 0.2*duration;
683 // resume for 0.5*duration; pause for 0.2*duration; resume for another 0.25*duration;
684 // only until now the transition finished signal can be received
685 crossEffect.StartTransition(false);
686 Wait( application, TRANSITION_DURATION*0.25f );
687 DALI_TEST_CHECK(!callback.mSignalVerified);
688 crossEffect.PauseTransition();
689 Wait( application, TRANSITION_DURATION*0.2f );
690 DALI_TEST_CHECK(!callback.mSignalVerified);
691 crossEffect.ResumeTransition();
692 Wait( application, TRANSITION_DURATION*0.5f );
693 DALI_TEST_CHECK(!callback.mSignalVerified);
694 crossEffect.PauseTransition();
695 Wait( application, TRANSITION_DURATION*0.2f );
696 DALI_TEST_CHECK(!callback.mSignalVerified);
697 crossEffect.ResumeTransition();
698 Wait( application, TRANSITION_DURATION*0.25f );
699 DALI_TEST_CHECK(callback.mSignalVerified);
702 currentEffect = foldEffect;
703 actorTransitTo = secondImageActor;
704 foldEffect.SetCurrentImage( firstImageActor );
705 foldEffect.SetTargetImage( secondImageActor );
706 // start transition; transit for 0.5*duration; pause for 0.5*duration;
707 // resume for 0.25*duration; pause for 0.25*duration; resume for another 0.25*duration;
708 // only until now the transition finished signal can be received
709 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
710 Wait( application, TRANSITION_DURATION*0.5f );
711 DALI_TEST_CHECK(!callback.mSignalVerified);
712 foldEffect.PauseTransition();
713 Wait( application, TRANSITION_DURATION*0.5f );
714 DALI_TEST_CHECK(!callback.mSignalVerified);
715 foldEffect.ResumeTransition();
716 Wait( application, TRANSITION_DURATION*0.25f );
717 DALI_TEST_CHECK(!callback.mSignalVerified);
718 foldEffect.PauseTransition();
719 Wait( application, TRANSITION_DURATION*0.25f );
720 DALI_TEST_CHECK(!callback.mSignalVerified);
721 foldEffect.ResumeTransition();
722 Wait( application, TRANSITION_DURATION*0.25f );
723 DALI_TEST_CHECK(callback.mSignalVerified);
727 int UtcDaliCubeTransitionWaveEffectStopTransition(void)
729 ToolkitTestApplication application;
730 tet_infoline(" UtcDaliCubeTransitionWaveEffectStopTransition ");
732 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
733 ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
734 ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
736 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
737 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
738 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
739 Actor rootActor = waveEffect.GetRoot();
740 Stage::GetCurrent().Add( rootActor );
741 Actor cube = rootActor.GetChildAt(0);
742 waveEffect.SetCurrentImage( firstImageActor );
744 Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
745 Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
747 //check the cube rotation value and color values after stopping different transitions in the middle
748 waveEffect.SetTargetImage( secondImageActor );
749 waveEffect.StartTransition(true);
750 Wait( application, TRANSITION_DURATION*0.2f );
751 waveEffect.StopTransition();
752 application.SendNotification();
753 application.Render(RENDER_FRAME_INTERVAL);
754 DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
755 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
756 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
758 waveEffect.SetTargetImage( firstImageActor );
759 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
760 Wait( application, TRANSITION_DURATION*0.4f );
761 waveEffect.StopTransition();
762 application.SendNotification();
763 application.Render(RENDER_FRAME_INTERVAL);
764 DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( -2.f*Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
765 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
766 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
768 waveEffect.SetTargetImage( secondImageActor );
769 waveEffect.StartTransition(false);
770 Wait( application, TRANSITION_DURATION*0.6f );
771 waveEffect.StopTransition();
772 application.SendNotification();
773 application.Render(RENDER_FRAME_INTERVAL);
774 DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
775 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
776 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
778 waveEffect.SetTargetImage( firstImageActor );
779 waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
780 Wait( application, TRANSITION_DURATION*0.8f );
781 waveEffect.StopTransition();
782 application.SendNotification();
783 application.Render(RENDER_FRAME_INTERVAL);
784 DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( 0.f, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
785 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
786 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
790 int UtcDaliCubeTransitionCrossEffectStopTransition(void)
792 ToolkitTestApplication application;
793 tet_infoline(" UtcDaliCubeTransitionCrossEffectStopTransition ");
795 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
796 ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
797 ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
799 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
800 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
801 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
802 Actor rootActor = crossEffect.GetRoot();
803 Stage::GetCurrent().Add( rootActor );
804 crossEffect.SetCurrentImage( firstImageActor );
805 Actor cube0 = rootActor.GetChildAt(0);
806 Actor cube1 = rootActor.GetChildAt(1);
808 Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
809 Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
811 //check the cube rotation values and color values after stop the different transitions in the middle
812 crossEffect.SetTargetImage( secondImageActor );
813 crossEffect.StartTransition(true);
814 Wait( application, TRANSITION_DURATION*0.2f );
815 crossEffect.StopTransition();
816 application.SendNotification();
817 application.Render(RENDER_FRAME_INTERVAL);
818 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
819 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
821 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
822 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
824 crossEffect.SetTargetImage( firstImageActor );
825 crossEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
826 Wait( application, TRANSITION_DURATION*0.4f );
827 crossEffect.StopTransition();
828 application.SendNotification();
829 application.Render(RENDER_FRAME_INTERVAL);
830 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -2.f*Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
831 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 2.f*Math::PI_2, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
832 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
833 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
835 crossEffect.SetTargetImage( secondImageActor );
836 crossEffect.StartTransition(false);
837 Wait( application, TRANSITION_DURATION*0.6f );
838 crossEffect.StopTransition();
839 application.SendNotification();
840 application.Render(RENDER_FRAME_INTERVAL);
841 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
842 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
843 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
844 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
846 crossEffect.SetTargetImage( firstImageActor );
847 crossEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
848 Wait( application, TRANSITION_DURATION*0.8f );
849 crossEffect.StopTransition();
850 application.SendNotification();
851 application.Render(RENDER_FRAME_INTERVAL);
852 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( 0.f, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
853 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 0.f, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
854 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
855 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
859 int UtcDaliCubeTransitionFoldEffectStopTransition(void)
861 ToolkitTestApplication application;
862 tet_infoline(" UtcDaliCubeTransitionFoldEffectStopTransition ");
864 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
865 ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
866 ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
868 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
869 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
870 Actor rootActor = foldEffect.GetRoot();
871 Stage::GetCurrent().Add( rootActor );
872 foldEffect.SetCurrentImage( firstImageActor );
873 Actor cube0 = rootActor.GetChildAt(0);
874 Actor cube1 = rootActor.GetChildAt(1);
876 Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
877 Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
879 //check the cube rotation values and color values after stop the different transitions in the middle
880 foldEffect.SetTargetImage( secondImageActor );
881 foldEffect.StartTransition(true);
882 Wait( application, TRANSITION_DURATION*0.2f );
883 foldEffect.StopTransition();
884 application.SendNotification();
885 application.Render(RENDER_FRAME_INTERVAL);
886 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
887 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
888 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
889 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
891 foldEffect.SetTargetImage( firstImageActor );
892 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
893 Wait( application, TRANSITION_DURATION*0.4f );
894 foldEffect.StopTransition();
895 application.SendNotification();
896 application.Render(RENDER_FRAME_INTERVAL);
897 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -2.f*Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
898 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 2.f*Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
899 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
900 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
902 foldEffect.SetTargetImage( secondImageActor );
903 foldEffect.StartTransition(false);
904 Wait( application, TRANSITION_DURATION*0.6f );
905 foldEffect.StopTransition();
906 application.SendNotification();
907 application.Render(RENDER_FRAME_INTERVAL);
908 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
909 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
910 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
911 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
913 foldEffect.SetTargetImage( firstImageActor );
914 foldEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
915 Wait( application, TRANSITION_DURATION*0.8f );
916 foldEffect.StopTransition();
917 application.SendNotification();
918 application.Render(RENDER_FRAME_INTERVAL);
919 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( 0.f, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
920 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 0.f, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
921 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
922 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );