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>
22 #include <dali-toolkit/devel-api/transition-effects/cube-transition-effect.h>
23 #include <dali-toolkit/devel-api/transition-effects/cube-transition-cross-effect.h>
24 #include <dali-toolkit/devel-api/transition-effects/cube-transition-fold-effect.h>
25 #include <dali-toolkit/devel-api/transition-effects/cube-transition-wave-effect.h>
30 using namespace Dali::Toolkit;
35 const unsigned int NUM_ROWS = 16;
36 const unsigned int NUM_COLUMNS = 10;
37 const Vector2 VIEW_AREA_SIZE( 480.0f, 800.0f );
38 const float TRANSITION_DURATION = 0.5f;
39 const float CUBE_DISPLACEMENT = 55.f;
40 const Vector2 PAN_POSITION1( VIEW_AREA_SIZE.x * 0.75f, VIEW_AREA_SIZE.y * 0.25f );
41 const Vector2 PAN_DISPLACEMENT1( -5.f, 5.f );
42 const Vector2 PAN_POSITION2( VIEW_AREA_SIZE.x * 0.25f, VIEW_AREA_SIZE.y * 0.75f );
43 const Vector2 PAN_DISPLACEMENT2( 5.f, 5.f );
44 const int RENDER_FRAME_INTERVAL = 16;
45 static const float FLT_EPISILON = 0.0001f;
46 const float OFFSCREEN_RENDER_DURATION = 0.05f;
48 static bool gObjectCreatedCallBackCalled;
49 static void TestCallback(BaseHandle handle)
51 gObjectCreatedCallBackCalled = true;
55 * Simulate time passed by, waiting for certain process to finish
56 * @param[in] application Test application instance
57 * @param[in] durationToPass Time to pass in milliseconds.
59 void Wait(ToolkitTestApplication& application, float durationToPass)
61 int duration = static_cast<int>(durationToPass*1000.f);
62 // wait 2 more frames to compensate the two frames used by the image waiting for the loading succeeded signal
63 for(int i = 0; i <= duration/RENDER_FRAME_INTERVAL+2 ; i++)
65 application.SendNotification();
66 application.Render(RENDER_FRAME_INTERVAL);
72 //Callback class to test whether transition completed signal is emitted when the transition animation is finished
73 class TransitionCompletedCallback : public Dali::ConnectionTracker
76 TransitionCompletedCallback( bool& signalReceived, CubeTransitionEffect& effect, ImageActor& imageActor )
77 : mSignalVerified( signalReceived ),
78 mCurrentEffect( effect ),
79 mActorTransitTo( imageActor )
83 void Callback( CubeTransitionEffect effect, ImageActor imageActor )
85 tet_infoline( "Verifying TransitionCompletedSignal" );
87 if( mCurrentEffect == effect && mActorTransitTo == imageActor )
89 mSignalVerified = true;
95 mSignalVerified = false;
98 bool& mSignalVerified;
99 CubeTransitionEffect& mCurrentEffect;
100 ImageActor& mActorTransitTo;
107 void cube_transition_effect_startup(void)
109 test_return_value = TET_UNDEF;
112 void cube_transition_effect_cleanup(void)
114 test_return_value = TET_PASS;
117 int UtcDaliCubeTransitionWaveEffectNew(void)
119 ToolkitTestApplication application;
120 tet_infoline(" UtcDaliCubeTransitionWaveEffectNew ");
122 CubeTransitionEffect waveEffect;
124 DALI_TEST_CHECK( !waveEffect );
126 waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
128 DALI_TEST_CHECK( waveEffect );
132 //Additional check to ensure object is created by checking if it's registered
133 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
134 DALI_TEST_CHECK( registry );
136 gObjectCreatedCallBackCalled = false;
137 registry.ObjectCreatedSignal().Connect( &TestCallback );
139 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
141 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
145 int UtcDaliCubeTransitionCrossEffectNew(void)
147 ToolkitTestApplication application;
148 tet_infoline(" UtcDaliCubeTransitionCrossEffectNew ");
150 CubeTransitionEffect crossEffect;
152 DALI_TEST_CHECK( !crossEffect );
154 crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
156 DALI_TEST_CHECK( crossEffect );
160 //Additional check to ensure object is created by checking if it's registered
161 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
162 DALI_TEST_CHECK( registry );
164 gObjectCreatedCallBackCalled = false;
165 registry.ObjectCreatedSignal().Connect( &TestCallback );
167 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
169 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
173 int UtcDaliCubeTransitionFoldEffectNew(void)
175 ToolkitTestApplication application;
176 tet_infoline( " UtcDaliCubeTransitionFoldEffectNew " );
178 CubeTransitionEffect foldEffect;
180 DALI_TEST_CHECK( !foldEffect );
182 foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
184 DALI_TEST_CHECK( foldEffect );
188 //Additional check to ensure object is created by checking if it is registered
189 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
190 DALI_TEST_CHECK( registry );
192 gObjectCreatedCallBackCalled = false;
193 registry.ObjectCreatedSignal().Connect( &TestCallback );
195 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
197 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
201 int UtcDaliCubeTransitionEffectSetGetTransitionDuration(void)
203 ToolkitTestApplication application;
204 tet_infoline(" UtcDaliCubeTransitionEffectSetGetTransitionDuration ");
206 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
207 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
208 DALI_TEST_EQUALS( TRANSITION_DURATION, waveEffect.GetTransitionDuration(), TEST_LOCATION );
210 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
211 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
212 DALI_TEST_EQUALS( TRANSITION_DURATION, crossEffect.GetTransitionDuration(), TEST_LOCATION );
214 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
215 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
216 DALI_TEST_EQUALS( TRANSITION_DURATION, foldEffect.GetTransitionDuration(), TEST_LOCATION );
220 int UtcDaliCubeTransitionEffectSetGetCubeDisplacement(void)
222 ToolkitTestApplication application;
223 tet_infoline(" UtcDaliCubeTransitionEffectSetGetTransitionDuration ");
225 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
226 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
227 DALI_TEST_EQUALS( CUBE_DISPLACEMENT, waveEffect.GetCubeDisplacement(), TEST_LOCATION );
229 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
230 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
231 DALI_TEST_EQUALS( CUBE_DISPLACEMENT, crossEffect.GetCubeDisplacement(), TEST_LOCATION );
233 //Cube displacement is not used in CubeTransitionFoldEffect
237 //Test common codes in base class
238 int UtcDaliCubeTransitionEffectGetRoot(void)
240 ToolkitTestApplication application;
241 tet_infoline(" UtcDaliCubeTransitionEffectGetRoot ");
243 unsigned int totalNum = NUM_ROWS*NUM_COLUMNS;
245 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
246 Actor rootActor = waveEffect.GetRoot();
248 // check that we have a total of NUM_ROWS*NUM_COLUMNS cubes;
249 DALI_TEST_CHECK( totalNum == rootActor.GetChildCount() );
251 // check that every cube has two children
252 DALI_TEST_CHECK( 2 == rootActor.GetChildAt(0).GetChildCount() );
253 DALI_TEST_CHECK( 2 == rootActor.GetChildAt(totalNum/2).GetChildCount() );
254 DALI_TEST_CHECK( 2 == rootActor.GetChildAt(totalNum-1).GetChildCount() );
258 int UtcDaliCubeTransitionEffectIsTransiting(void)
260 ToolkitTestApplication application;
261 tet_infoline(" UtcDaliCubeTransitionEffectIsTransiting ");
263 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
264 ImageActor imageActor = CreateSolidColorImageActor(application, Color::BLUE,30,30);
266 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
267 Actor rootActor = waveEffect.GetRoot();
268 Stage::GetCurrent().Add( rootActor );
270 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
271 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
272 DALI_TEST_CHECK( !waveEffect.IsTransiting() );
274 waveEffect.SetCurrentImage(imageActor);
275 waveEffect.SetTargetImage(imageActor);
276 //transition is started
277 waveEffect.StartTransition();
278 DALI_TEST_CHECK( waveEffect.IsTransiting() );
279 //transition is finished
280 Wait( application, TRANSITION_DURATION );
281 DALI_TEST_CHECK( !waveEffect.IsTransiting() );
283 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
284 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
285 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
286 DALI_TEST_CHECK( !crossEffect.IsTransiting() );
288 crossEffect.SetCurrentImage(imageActor);
289 crossEffect.SetTargetImage(imageActor);
290 //transition is started
291 crossEffect.StartTransition(false);
292 DALI_TEST_CHECK( crossEffect.IsTransiting() );
293 //transition is finished
294 Wait( application, TRANSITION_DURATION );
295 DALI_TEST_CHECK( !crossEffect.IsTransiting() );
297 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
298 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
299 DALI_TEST_CHECK( !foldEffect.IsTransiting() );
301 foldEffect.SetCurrentImage( imageActor );
302 foldEffect.SetTargetImage( imageActor );
303 //transition is started
304 foldEffect.StartTransition(true);
305 DALI_TEST_CHECK(foldEffect.IsTransiting() );
306 //transition is finished
307 Wait( application, TRANSITION_DURATION );
308 DALI_TEST_CHECK( !foldEffect.IsTransiting() );
313 //Test common codes in base class
314 int UtcDaliCubeTransitionEffectSetCurrentImage(void)
316 ToolkitTestApplication application;
317 tet_infoline(" UtcDaliCubeTransitionEffectSetCurrentImage ");
319 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
320 ImageActor imageActor = CreateSolidColorImageActor(application, Color::BLUE,40,40) ;
322 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
323 waveEffect.SetCurrentImage( imageActor );
325 // the current image content is set to the tiles facing the camera
326 ImageActor tile = ImageActor::DownCast( (waveEffect.GetRoot().GetChildAt(0).GetChildAt(0)));
328 //check the pixel area set to the cube
329 ImageActor::PixelArea pixelAreaDef( 0, 0, VIEW_AREA_SIZE.x / NUM_COLUMNS, VIEW_AREA_SIZE.y / NUM_ROWS);
330 ImageActor::PixelArea pixelArea = tile.GetPixelArea();
331 DALI_TEST_CHECK ( pixelAreaDef == pixelArea );
333 //check the size of the off screen rendered image
334 Wait( application, OFFSCREEN_RENDER_DURATION );
335 DALI_TEST_EQUALS( tile.GetImage().GetWidth(), VIEW_AREA_SIZE.x, TEST_LOCATION );
336 DALI_TEST_EQUALS( tile.GetImage().GetHeight(), VIEW_AREA_SIZE.y, TEST_LOCATION );
340 //Test common codes in base class
341 int UtcDaliCubeTransitionEffectSetTargetImage(void)
343 ToolkitTestApplication application;
344 tet_infoline(" UtcDaliCubeTransitionEffectSetTargetImage ");
346 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
347 ImageActor imageActor = CreateSolidColorImageActor(application, Color::BLUE,30,30);
349 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
350 Actor rootActor = waveEffect.GetRoot();
351 Stage::GetCurrent().Add( rootActor );
353 waveEffect.SetCurrentImage( imageActor );
354 waveEffect.SetTargetImage( imageActor );
356 // the target image content is set to the tiles currently invisible to the camera
357 ImageActor tile = ImageActor::DownCast( (rootActor.GetChildAt(0).GetChildAt(1)));
359 //check the pixel area set to the cube
360 ImageActor::PixelArea pixelAreaDef( 0, 0, VIEW_AREA_SIZE.x / NUM_COLUMNS, VIEW_AREA_SIZE.y / NUM_ROWS);
361 ImageActor::PixelArea pixelArea = tile.GetPixelArea();
362 DALI_TEST_CHECK ( pixelAreaDef == pixelArea );
364 //check the size of the off screen rendered image
365 Wait( application, OFFSCREEN_RENDER_DURATION );
366 DALI_TEST_EQUALS( tile.GetImage().GetWidth(), VIEW_AREA_SIZE.x, TEST_LOCATION );
367 DALI_TEST_EQUALS( tile.GetImage().GetHeight(), VIEW_AREA_SIZE.y, TEST_LOCATION );
371 int UtcDaliCubeTransitionWaveEffectStartTransition(void)
373 ToolkitTestApplication application;
374 tet_infoline(" UtcDaliCubeTransitionWaveEffectStartTransition ");
376 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
377 ImageActor imageActor = ImageActor::New(ResourceImage::New("Image.jpg"));
379 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
380 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
381 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
382 Actor rootActor = waveEffect.GetRoot();
383 Stage::GetCurrent().Add( rootActor );
384 Actor cube = rootActor.GetChildAt(0);
386 waveEffect.SetCurrentImage( imageActor );
388 Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
389 Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
391 //check the cube rotation value and color values after different transitions
392 waveEffect.SetTargetImage( imageActor );
393 waveEffect.StartTransition(true);
394 Wait( application, TRANSITION_DURATION );
395 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
396 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
397 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
399 waveEffect.SetTargetImage( imageActor );
400 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
401 Wait( application, TRANSITION_DURATION );
402 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_180, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
403 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
404 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
406 waveEffect.SetTargetImage( imageActor );
407 waveEffect.StartTransition(false);
408 Wait( application, TRANSITION_DURATION );
409 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
410 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
411 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
413 waveEffect.SetTargetImage( imageActor );
414 waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
415 Wait( application, TRANSITION_DURATION );
416 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
417 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
418 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
422 int UtcDaliCubeTransitionCrossEffectStartTransition(void)
424 ToolkitTestApplication application;
425 tet_infoline(" UtcDaliCubeTransitionCrossEffectStartTransition ");
427 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
428 ImageActor imageActor = ImageActor::New(ResourceImage::New("Image.jpg"));
430 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
431 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
432 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
433 Actor rootActor = crossEffect.GetRoot();
434 Stage::GetCurrent().Add( rootActor );
435 crossEffect.SetCurrentImage( imageActor );
436 Actor cube0 = rootActor.GetChildAt(0);
437 Actor cube1 = rootActor.GetChildAt(1);
439 Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
440 Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
442 //check the cube rotation values and color values after different transitions
443 crossEffect.SetTargetImage( imageActor );
444 crossEffect.StartTransition(true);
445 Wait( application, TRANSITION_DURATION );
446 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
447 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
448 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
449 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
452 crossEffect.SetTargetImage( imageActor );
453 crossEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
454 Wait( application, TRANSITION_DURATION );
455 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_180, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
456 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_180, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
457 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
458 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
461 crossEffect.SetTargetImage( imageActor );
462 crossEffect.StartTransition(false);
463 Wait( application, TRANSITION_DURATION );
464 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
465 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
466 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
467 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
469 crossEffect.SetTargetImage( imageActor );
470 crossEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
471 Wait( application, TRANSITION_DURATION );
472 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
473 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
474 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
475 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
479 int UtcDaliCubeTransitionFoldEffectStartTransition(void)
481 ToolkitTestApplication application;
482 tet_infoline(" UtcDaliCubeTransitionFoldEffectStartTransition ");
484 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
485 ImageActor imageActor = CreateSolidColorImageActor(application, Color::BLUE,30,30);
487 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
488 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
489 Actor rootActor = foldEffect.GetRoot();
490 Stage::GetCurrent().Add( rootActor );
491 foldEffect.SetCurrentImage( imageActor );
492 Actor cube0 = rootActor.GetChildAt(0);
493 Actor cube1 = rootActor.GetChildAt(1);
495 Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
496 Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
498 //check the cube rotation values and color values after different transitions
499 foldEffect.SetTargetImage( imageActor );
500 foldEffect.StartTransition(true);
501 Wait( application, TRANSITION_DURATION );
502 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
503 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
504 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
505 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
507 foldEffect.SetTargetImage( imageActor );
508 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
509 Wait( application, TRANSITION_DURATION );
510 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_180, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
511 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_180, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
512 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
513 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
516 foldEffect.SetTargetImage( imageActor );
517 foldEffect.StartTransition(false);
518 Wait( application, TRANSITION_DURATION );
519 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
520 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
521 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
522 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(),fullBrightness, FLT_EPISILON, TEST_LOCATION );
524 foldEffect.SetTargetImage( imageActor );
525 foldEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
526 Wait( application, TRANSITION_DURATION );
527 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
528 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
529 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
530 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
534 int UtcDaliCubeTransitionEffectSignalTransitionCompleted(void)
536 ToolkitTestApplication application;
537 tet_infoline(" UtcDaliCubeTransitionEffectSignalTransitionCompleted ");
539 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
540 ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
541 ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
542 ImageActor thirdImageActor = CreateSolidColorImageActor(application, Color::BLUE,40,40);
544 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
545 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
546 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
547 Actor rootActor = waveEffect.GetRoot();
548 Stage::GetCurrent().Add( rootActor );
550 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
551 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
552 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
553 rootActor = crossEffect.GetRoot();
554 Stage::GetCurrent().Add( rootActor );
556 CubeTransitionEffect foldEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
557 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
558 rootActor = foldEffect.GetRoot();
559 Stage::GetCurrent().Add( rootActor );
561 bool signalVerified = false;
562 CubeTransitionEffect currentEffect;
563 ImageActor actorTransitTo;
564 TransitionCompletedCallback callback(signalVerified, currentEffect, actorTransitTo);
565 waveEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
566 crossEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
567 foldEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
569 //check that the wave effect is used to transit to secondImageActor
570 currentEffect = waveEffect;
571 actorTransitTo = secondImageActor;
572 waveEffect.SetCurrentImage( firstImageActor );
573 waveEffect.SetTargetImage( secondImageActor );
574 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
575 Wait( application, TRANSITION_DURATION );
576 DALI_TEST_CHECK(callback.mSignalVerified);
579 //check that the wave effect is used to transit to thirdImageActor
580 actorTransitTo = thirdImageActor;
581 waveEffect.SetTargetImage( thirdImageActor );
582 waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
583 Wait( application, TRANSITION_DURATION );
584 DALI_TEST_CHECK(callback.mSignalVerified);
587 //check that the cross effect is used to transit to secondImageActor
588 currentEffect = crossEffect;
589 actorTransitTo = secondImageActor;
590 crossEffect.SetCurrentImage( thirdImageActor );
591 crossEffect.SetTargetImage( secondImageActor );
592 crossEffect.StartTransition(true);
593 Wait( application, TRANSITION_DURATION );
594 DALI_TEST_CHECK(callback.mSignalVerified);
597 //check that the cross effect is used to transit to firstImageActor
598 actorTransitTo = firstImageActor;
599 crossEffect.SetTargetImage( firstImageActor );
600 crossEffect.StartTransition(false);
601 Wait( application, TRANSITION_DURATION );
602 DALI_TEST_CHECK(callback.mSignalVerified);
605 //check that the fold effect is used to transit to secondImageActor
606 currentEffect = foldEffect;
607 actorTransitTo = secondImageActor;
608 foldEffect.SetCurrentImage( firstImageActor );
609 foldEffect.SetTargetImage( secondImageActor );
610 foldEffect.StartTransition();
611 Wait( application, TRANSITION_DURATION );
612 DALI_TEST_CHECK( callback.mSignalVerified );
615 //check that the fold effect is used to transit to thirdImageActor
616 actorTransitTo = thirdImageActor;
617 foldEffect.SetTargetImage( thirdImageActor );
618 foldEffect.StartTransition( false );
619 Wait( application, TRANSITION_DURATION );
620 DALI_TEST_CHECK( callback.mSignalVerified );
624 int UtcDaliCubeTransitionEffectPauseResumeTransition(void)
626 ToolkitTestApplication application;
627 tet_infoline(" UtcDaliCubeTransitionEffectPauseResumeTransition ");
629 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
630 ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
631 ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
633 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
634 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
635 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
636 Actor rootActor = waveEffect.GetRoot();
637 Stage::GetCurrent().Add( rootActor );
639 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
640 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
641 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
642 rootActor = crossEffect.GetRoot();
643 Stage::GetCurrent().Add( rootActor );
645 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
646 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
647 rootActor = crossEffect.GetRoot();
648 Stage::GetCurrent().Add( rootActor );
650 bool signalVerified = false;
651 CubeTransitionEffect currentEffect;
652 ImageActor actorTransitTo;
653 TransitionCompletedCallback callback(signalVerified, currentEffect, actorTransitTo);
654 waveEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
655 crossEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
656 foldEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
658 currentEffect = waveEffect;
659 actorTransitTo = secondImageActor;
660 waveEffect.SetCurrentImage( firstImageActor );
661 waveEffect.SetTargetImage( secondImageActor );
662 // start transition; transit for 0.5*duration; pause for 0.5*duration;
663 // resume for 0.25*duration; pause for 0.25*duration; resume for another 0.25*duration;
664 // only until now the transition finished signal can be received
665 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
666 Wait( application, TRANSITION_DURATION*0.5f );
667 DALI_TEST_CHECK(!callback.mSignalVerified);
668 waveEffect.PauseTransition();
669 Wait( application, TRANSITION_DURATION*0.5f );
670 DALI_TEST_CHECK(!callback.mSignalVerified);
671 waveEffect.ResumeTransition();
672 Wait( application, TRANSITION_DURATION*0.25f );
673 DALI_TEST_CHECK(!callback.mSignalVerified);
674 waveEffect.PauseTransition();
675 Wait( application, TRANSITION_DURATION*0.25f );
676 DALI_TEST_CHECK(!callback.mSignalVerified);
677 waveEffect.ResumeTransition();
678 Wait( application, TRANSITION_DURATION*0.25f );
679 DALI_TEST_CHECK(callback.mSignalVerified);
682 currentEffect = crossEffect;
683 actorTransitTo = firstImageActor;
684 crossEffect.SetCurrentImage( secondImageActor );
685 crossEffect.SetTargetImage( firstImageActor );
686 // start transition; transit for 0.25*duration; pause for 0.2*duration;
687 // resume for 0.5*duration; pause for 0.2*duration; resume for another 0.25*duration;
688 // only until now the transition finished signal can be received
689 crossEffect.StartTransition(false);
690 Wait( application, TRANSITION_DURATION*0.25f );
691 DALI_TEST_CHECK(!callback.mSignalVerified);
692 crossEffect.PauseTransition();
693 Wait( application, TRANSITION_DURATION*0.2f );
694 DALI_TEST_CHECK(!callback.mSignalVerified);
695 crossEffect.ResumeTransition();
696 Wait( application, TRANSITION_DURATION*0.5f );
697 DALI_TEST_CHECK(!callback.mSignalVerified);
698 crossEffect.PauseTransition();
699 Wait( application, TRANSITION_DURATION*0.2f );
700 DALI_TEST_CHECK(!callback.mSignalVerified);
701 crossEffect.ResumeTransition();
702 Wait( application, TRANSITION_DURATION*0.25f );
703 DALI_TEST_CHECK(callback.mSignalVerified);
706 currentEffect = foldEffect;
707 actorTransitTo = secondImageActor;
708 foldEffect.SetCurrentImage( firstImageActor );
709 foldEffect.SetTargetImage( secondImageActor );
710 // start transition; transit for 0.5*duration; pause for 0.5*duration;
711 // resume for 0.25*duration; pause for 0.25*duration; resume for another 0.25*duration;
712 // only until now the transition finished signal can be received
713 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
714 Wait( application, TRANSITION_DURATION*0.5f );
715 DALI_TEST_CHECK(!callback.mSignalVerified);
716 foldEffect.PauseTransition();
717 Wait( application, TRANSITION_DURATION*0.5f );
718 DALI_TEST_CHECK(!callback.mSignalVerified);
719 foldEffect.ResumeTransition();
720 Wait( application, TRANSITION_DURATION*0.25f );
721 DALI_TEST_CHECK(!callback.mSignalVerified);
722 foldEffect.PauseTransition();
723 Wait( application, TRANSITION_DURATION*0.25f );
724 DALI_TEST_CHECK(!callback.mSignalVerified);
725 foldEffect.ResumeTransition();
726 Wait( application, TRANSITION_DURATION*0.25f );
727 DALI_TEST_CHECK(callback.mSignalVerified);
731 int UtcDaliCubeTransitionWaveEffectStopTransition(void)
733 ToolkitTestApplication application;
734 tet_infoline(" UtcDaliCubeTransitionWaveEffectStopTransition ");
736 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
737 ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
738 ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
740 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
741 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
742 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
743 Actor rootActor = waveEffect.GetRoot();
744 Stage::GetCurrent().Add( rootActor );
745 Actor cube = rootActor.GetChildAt(0);
746 waveEffect.SetCurrentImage( firstImageActor );
748 Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
749 Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
751 //check the cube rotation value and color values after stopping different transitions in the middle
752 waveEffect.SetTargetImage( secondImageActor );
753 waveEffect.StartTransition(true);
754 Wait( application, TRANSITION_DURATION*0.2f );
755 waveEffect.StopTransition();
756 application.SendNotification();
757 application.Render(RENDER_FRAME_INTERVAL);
758 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
759 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
760 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
762 waveEffect.SetTargetImage( firstImageActor );
763 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
764 Wait( application, TRANSITION_DURATION*0.4f );
765 waveEffect.StopTransition();
766 application.SendNotification();
767 application.Render(RENDER_FRAME_INTERVAL);
768 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_180, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
769 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
770 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
772 waveEffect.SetTargetImage( secondImageActor );
773 waveEffect.StartTransition(false);
774 Wait( application, TRANSITION_DURATION*0.6f );
775 waveEffect.StopTransition();
776 application.SendNotification();
777 application.Render(RENDER_FRAME_INTERVAL);
778 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
779 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
780 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
782 waveEffect.SetTargetImage( firstImageActor );
783 waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
784 Wait( application, TRANSITION_DURATION*0.8f );
785 waveEffect.StopTransition();
786 application.SendNotification();
787 application.Render(RENDER_FRAME_INTERVAL);
788 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
789 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
790 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
794 int UtcDaliCubeTransitionCrossEffectStopTransition(void)
796 ToolkitTestApplication application;
797 tet_infoline(" UtcDaliCubeTransitionCrossEffectStopTransition ");
799 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
800 ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
801 ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
803 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
804 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
805 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
806 Actor rootActor = crossEffect.GetRoot();
807 Stage::GetCurrent().Add( rootActor );
808 crossEffect.SetCurrentImage( firstImageActor );
809 Actor cube0 = rootActor.GetChildAt(0);
810 Actor cube1 = rootActor.GetChildAt(1);
812 Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
813 Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
815 //check the cube rotation values and color values after stop the different transitions in the middle
816 crossEffect.SetTargetImage( secondImageActor );
817 crossEffect.StartTransition(true);
818 Wait( application, TRANSITION_DURATION*0.2f );
819 crossEffect.StopTransition();
820 application.SendNotification();
821 application.Render(RENDER_FRAME_INTERVAL);
822 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
823 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
825 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
826 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
828 crossEffect.SetTargetImage( firstImageActor );
829 crossEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
830 Wait( application, TRANSITION_DURATION*0.4f );
831 crossEffect.StopTransition();
832 application.SendNotification();
833 application.Render(RENDER_FRAME_INTERVAL);
834 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_180, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
835 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_180, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
836 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
837 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
839 crossEffect.SetTargetImage( secondImageActor );
840 crossEffect.StartTransition(false);
841 Wait( application, TRANSITION_DURATION*0.6f );
842 crossEffect.StopTransition();
843 application.SendNotification();
844 application.Render(RENDER_FRAME_INTERVAL);
845 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
846 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
847 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
848 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
850 crossEffect.SetTargetImage( firstImageActor );
851 crossEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
852 Wait( application, TRANSITION_DURATION*0.8f );
853 crossEffect.StopTransition();
854 application.SendNotification();
855 application.Render(RENDER_FRAME_INTERVAL);
856 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
857 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
858 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
859 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
863 int UtcDaliCubeTransitionFoldEffectStopTransition(void)
865 ToolkitTestApplication application;
866 tet_infoline(" UtcDaliCubeTransitionFoldEffectStopTransition ");
868 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
869 ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
870 ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
872 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
873 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
874 Actor rootActor = foldEffect.GetRoot();
875 Stage::GetCurrent().Add( rootActor );
876 foldEffect.SetCurrentImage( firstImageActor );
877 Actor cube0 = rootActor.GetChildAt(0);
878 Actor cube1 = rootActor.GetChildAt(1);
880 Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
881 Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
883 //check the cube rotation values and color values after stop the different transitions in the middle
884 foldEffect.SetTargetImage( secondImageActor );
885 foldEffect.StartTransition(true);
886 Wait( application, TRANSITION_DURATION*0.2f );
887 foldEffect.StopTransition();
888 application.SendNotification();
889 application.Render(RENDER_FRAME_INTERVAL);
890 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
891 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
892 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
893 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
895 foldEffect.SetTargetImage( firstImageActor );
896 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
897 Wait( application, TRANSITION_DURATION*0.4f );
898 foldEffect.StopTransition();
899 application.SendNotification();
900 application.Render(RENDER_FRAME_INTERVAL);
901 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_180, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
902 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_180, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
903 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
904 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
906 foldEffect.SetTargetImage( secondImageActor );
907 foldEffect.StartTransition(false);
908 Wait( application, TRANSITION_DURATION*0.6f );
909 foldEffect.StopTransition();
910 application.SendNotification();
911 application.Render(RENDER_FRAME_INTERVAL);
912 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
913 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
914 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );
915 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
917 foldEffect.SetTargetImage( firstImageActor );
918 foldEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
919 Wait( application, TRANSITION_DURATION*0.8f );
920 foldEffect.StopTransition();
921 application.SendNotification();
922 application.Render(RENDER_FRAME_INTERVAL);
923 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
924 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
925 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), fullBrightness, FLT_EPISILON, TEST_LOCATION );
926 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), halfBrightness, FLT_EPISILON, TEST_LOCATION );