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 ROTATION_EPSILON = 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), ROTATION_EPSILON, TEST_LOCATION );
392 DALI_TEST_CHECK( cube.GetChildAt(0).GetCurrentColor() == halfBrightness );
393 DALI_TEST_CHECK( cube.GetChildAt(1).GetCurrentColor() == fullBrightness );
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), ROTATION_EPSILON, TEST_LOCATION );
399 DALI_TEST_CHECK( cube.GetChildAt(0).GetCurrentColor() == fullBrightness );
400 DALI_TEST_CHECK( cube.GetChildAt(1).GetCurrentColor() == halfBrightness );
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), ROTATION_EPSILON, TEST_LOCATION );
406 DALI_TEST_CHECK( cube.GetChildAt(0).GetCurrentColor() == halfBrightness );
407 DALI_TEST_CHECK( cube.GetChildAt(1).GetCurrentColor() == fullBrightness );
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), ROTATION_EPSILON, TEST_LOCATION );
413 DALI_TEST_CHECK( cube.GetChildAt(0).GetCurrentColor() == fullBrightness );
414 DALI_TEST_CHECK( cube.GetChildAt(1).GetCurrentColor() == halfBrightness );
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), ROTATION_EPSILON, TEST_LOCATION );
443 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2, Vector3::XAXIS), ROTATION_EPSILON, TEST_LOCATION );
444 DALI_TEST_CHECK( cube0.GetChildAt(0).GetCurrentColor() == halfBrightness );
445 DALI_TEST_CHECK( cube0.GetChildAt(1).GetCurrentColor() == fullBrightness );
447 crossEffect.SetTargetImage( imageActor );
448 crossEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
449 Wait( application, TRANSITION_DURATION );
450 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -2.f*Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
451 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 2.f*Math::PI_2, Vector3::XAXIS), ROTATION_EPSILON, TEST_LOCATION );
452 DALI_TEST_CHECK( cube0.GetChildAt(0).GetCurrentColor() == fullBrightness );
453 DALI_TEST_CHECK( cube0.GetChildAt(1).GetCurrentColor() == halfBrightness );
456 crossEffect.SetTargetImage( imageActor );
457 crossEffect.StartTransition(false);
458 Wait( application, TRANSITION_DURATION );
459 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
460 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2, Vector3::XAXIS), ROTATION_EPSILON, TEST_LOCATION );
461 DALI_TEST_CHECK( cube0.GetChildAt(0).GetCurrentColor() == halfBrightness );
462 DALI_TEST_CHECK( cube0.GetChildAt(1).GetCurrentColor() == fullBrightness );
464 crossEffect.SetTargetImage( imageActor );
465 crossEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
466 Wait( application, TRANSITION_DURATION );
467 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( 0.f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
468 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 0.f, Vector3::XAXIS), ROTATION_EPSILON, TEST_LOCATION );
469 DALI_TEST_CHECK( cube0.GetChildAt(0).GetCurrentColor() == fullBrightness );
470 DALI_TEST_CHECK( cube0.GetChildAt(1).GetCurrentColor() == halfBrightness );
474 int UtcDaliCubeTransitionFoldEffectStartTransition(void)
476 ToolkitTestApplication application;
477 tet_infoline(" UtcDaliCubeTransitionFoldEffectStartTransition ");
479 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
480 ImageActor imageActor = CreateSolidColorImageActor(application, Color::BLUE,30,30);
482 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
483 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
484 Actor rootActor = foldEffect.GetRoot();
485 Stage::GetCurrent().Add( rootActor );
486 foldEffect.SetCurrentImage( imageActor );
487 Actor cube0 = rootActor.GetChildAt(0);
488 Actor cube1 = rootActor.GetChildAt(1);
490 Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
491 Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
493 //check the cube rotation values and color values after different transitions
494 foldEffect.SetTargetImage( imageActor );
495 foldEffect.StartTransition(true);
496 Wait( application, TRANSITION_DURATION );
497 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
498 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
499 DALI_TEST_CHECK( cube0.GetChildAt(0).GetCurrentColor() == halfBrightness );
500 DALI_TEST_CHECK( cube0.GetChildAt(1).GetCurrentColor() == fullBrightness );
502 foldEffect.SetTargetImage( imageActor );
503 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
504 Wait( application, TRANSITION_DURATION );
505 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -2.f*Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
506 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 2.f*Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
507 DALI_TEST_CHECK( cube0.GetChildAt(0).GetCurrentColor() == fullBrightness );
508 DALI_TEST_CHECK( cube0.GetChildAt(1).GetCurrentColor() == halfBrightness );
511 foldEffect.SetTargetImage( imageActor );
512 foldEffect.StartTransition(false);
513 Wait( application, TRANSITION_DURATION );
514 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
515 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
516 DALI_TEST_CHECK( cube0.GetChildAt(0).GetCurrentColor() == halfBrightness );
517 DALI_TEST_CHECK( cube0.GetChildAt(1).GetCurrentColor() == fullBrightness );
519 foldEffect.SetTargetImage( imageActor );
520 foldEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
521 Wait( application, TRANSITION_DURATION );
522 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( 0.f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
523 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 0.f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
524 DALI_TEST_CHECK( cube0.GetChildAt(0).GetCurrentColor() == fullBrightness );
525 DALI_TEST_CHECK( cube0.GetChildAt(1).GetCurrentColor() == halfBrightness );
529 int UtcDaliCubeTransitionEffectSignalTransitionCompleted(void)
531 ToolkitTestApplication application;
532 tet_infoline(" UtcDaliCubeTransitionEffectSignalTransitionCompleted ");
534 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
535 ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
536 ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
537 ImageActor thirdImageActor = CreateSolidColorImageActor(application, Color::BLUE,40,40);
539 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
540 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
541 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
542 Actor rootActor = waveEffect.GetRoot();
543 Stage::GetCurrent().Add( rootActor );
545 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
546 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
547 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
548 rootActor = crossEffect.GetRoot();
549 Stage::GetCurrent().Add( rootActor );
551 CubeTransitionEffect foldEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
552 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
553 rootActor = foldEffect.GetRoot();
554 Stage::GetCurrent().Add( rootActor );
556 bool signalVerified = false;
557 CubeTransitionEffect currentEffect;
558 ImageActor actorTransitTo;
559 TransitionCompletedCallback callback(signalVerified, currentEffect, actorTransitTo);
560 waveEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
561 crossEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
562 foldEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
564 //check that the wave effect is used to transit to secondImageActor
565 currentEffect = waveEffect;
566 actorTransitTo = secondImageActor;
567 waveEffect.SetCurrentImage( firstImageActor );
568 waveEffect.SetTargetImage( secondImageActor );
569 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
570 Wait( application, TRANSITION_DURATION );
571 DALI_TEST_CHECK(callback.mSignalVerified);
574 //check that the wave effect is used to transit to thirdImageActor
575 actorTransitTo = thirdImageActor;
576 waveEffect.SetTargetImage( thirdImageActor );
577 waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
578 Wait( application, TRANSITION_DURATION );
579 DALI_TEST_CHECK(callback.mSignalVerified);
582 //check that the cross effect is used to transit to secondImageActor
583 currentEffect = crossEffect;
584 actorTransitTo = secondImageActor;
585 crossEffect.SetCurrentImage( thirdImageActor );
586 crossEffect.SetTargetImage( secondImageActor );
587 crossEffect.StartTransition(true);
588 Wait( application, TRANSITION_DURATION );
589 DALI_TEST_CHECK(callback.mSignalVerified);
592 //check that the cross effect is used to transit to firstImageActor
593 actorTransitTo = firstImageActor;
594 crossEffect.SetTargetImage( firstImageActor );
595 crossEffect.StartTransition(false);
596 Wait( application, TRANSITION_DURATION );
597 DALI_TEST_CHECK(callback.mSignalVerified);
600 //check that the fold effect is used to transit to secondImageActor
601 currentEffect = foldEffect;
602 actorTransitTo = secondImageActor;
603 foldEffect.SetCurrentImage( firstImageActor );
604 foldEffect.SetTargetImage( secondImageActor );
605 foldEffect.StartTransition();
606 Wait( application, TRANSITION_DURATION );
607 DALI_TEST_CHECK( callback.mSignalVerified );
610 //check that the fold effect is used to transit to thirdImageActor
611 actorTransitTo = thirdImageActor;
612 foldEffect.SetTargetImage( thirdImageActor );
613 foldEffect.StartTransition( false );
614 Wait( application, TRANSITION_DURATION );
615 DALI_TEST_CHECK( callback.mSignalVerified );
619 int UtcDaliCubeTransitionEffectPauseResumeTransition(void)
621 ToolkitTestApplication application;
622 tet_infoline(" UtcDaliCubeTransitionEffectPauseResumeTransition ");
624 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
625 ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
626 ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
628 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
629 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
630 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
631 Actor rootActor = waveEffect.GetRoot();
632 Stage::GetCurrent().Add( rootActor );
634 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
635 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
636 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
637 rootActor = crossEffect.GetRoot();
638 Stage::GetCurrent().Add( rootActor );
640 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
641 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
642 rootActor = crossEffect.GetRoot();
643 Stage::GetCurrent().Add( rootActor );
645 bool signalVerified = false;
646 CubeTransitionEffect currentEffect;
647 ImageActor actorTransitTo;
648 TransitionCompletedCallback callback(signalVerified, currentEffect, actorTransitTo);
649 waveEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
650 crossEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
651 foldEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
653 currentEffect = waveEffect;
654 actorTransitTo = secondImageActor;
655 waveEffect.SetCurrentImage( firstImageActor );
656 waveEffect.SetTargetImage( secondImageActor );
657 // start transition; transit for 0.5*duration; pause for 0.5*duration;
658 // resume for 0.25*duration; pause for 0.25*duration; resume for another 0.25*duration;
659 // only until now the transition finished signal can be received
660 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
661 Wait( application, TRANSITION_DURATION*0.5f );
662 DALI_TEST_CHECK(!callback.mSignalVerified);
663 waveEffect.PauseTransition();
664 Wait( application, TRANSITION_DURATION*0.5f );
665 DALI_TEST_CHECK(!callback.mSignalVerified);
666 waveEffect.ResumeTransition();
667 Wait( application, TRANSITION_DURATION*0.25f );
668 DALI_TEST_CHECK(!callback.mSignalVerified);
669 waveEffect.PauseTransition();
670 Wait( application, TRANSITION_DURATION*0.25f );
671 DALI_TEST_CHECK(!callback.mSignalVerified);
672 waveEffect.ResumeTransition();
673 Wait( application, TRANSITION_DURATION*0.25f );
674 DALI_TEST_CHECK(callback.mSignalVerified);
677 currentEffect = crossEffect;
678 actorTransitTo = firstImageActor;
679 crossEffect.SetCurrentImage( secondImageActor );
680 crossEffect.SetTargetImage( firstImageActor );
681 // start transition; transit for 0.25*duration; pause for 0.2*duration;
682 // resume for 0.5*duration; pause for 0.2*duration; resume for another 0.25*duration;
683 // only until now the transition finished signal can be received
684 crossEffect.StartTransition(false);
685 Wait( application, TRANSITION_DURATION*0.25f );
686 DALI_TEST_CHECK(!callback.mSignalVerified);
687 crossEffect.PauseTransition();
688 Wait( application, TRANSITION_DURATION*0.2f );
689 DALI_TEST_CHECK(!callback.mSignalVerified);
690 crossEffect.ResumeTransition();
691 Wait( application, TRANSITION_DURATION*0.5f );
692 DALI_TEST_CHECK(!callback.mSignalVerified);
693 crossEffect.PauseTransition();
694 Wait( application, TRANSITION_DURATION*0.2f );
695 DALI_TEST_CHECK(!callback.mSignalVerified);
696 crossEffect.ResumeTransition();
697 Wait( application, TRANSITION_DURATION*0.25f );
698 DALI_TEST_CHECK(callback.mSignalVerified);
701 currentEffect = foldEffect;
702 actorTransitTo = secondImageActor;
703 foldEffect.SetCurrentImage( firstImageActor );
704 foldEffect.SetTargetImage( secondImageActor );
705 // start transition; transit for 0.5*duration; pause for 0.5*duration;
706 // resume for 0.25*duration; pause for 0.25*duration; resume for another 0.25*duration;
707 // only until now the transition finished signal can be received
708 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
709 Wait( application, TRANSITION_DURATION*0.5f );
710 DALI_TEST_CHECK(!callback.mSignalVerified);
711 foldEffect.PauseTransition();
712 Wait( application, TRANSITION_DURATION*0.5f );
713 DALI_TEST_CHECK(!callback.mSignalVerified);
714 foldEffect.ResumeTransition();
715 Wait( application, TRANSITION_DURATION*0.25f );
716 DALI_TEST_CHECK(!callback.mSignalVerified);
717 foldEffect.PauseTransition();
718 Wait( application, TRANSITION_DURATION*0.25f );
719 DALI_TEST_CHECK(!callback.mSignalVerified);
720 foldEffect.ResumeTransition();
721 Wait( application, TRANSITION_DURATION*0.25f );
722 DALI_TEST_CHECK(callback.mSignalVerified);
726 int UtcDaliCubeTransitionWaveEffectStopTransition(void)
728 ToolkitTestApplication application;
729 tet_infoline(" UtcDaliCubeTransitionWaveEffectStopTransition ");
731 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
732 ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
733 ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
735 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
736 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
737 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
738 Actor rootActor = waveEffect.GetRoot();
739 Stage::GetCurrent().Add( rootActor );
740 Actor cube = rootActor.GetChildAt(0);
741 waveEffect.SetCurrentImage( firstImageActor );
743 Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
744 Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
746 //check the cube rotation value and color values after stopping different transitions in the middle
747 waveEffect.SetTargetImage( secondImageActor );
748 waveEffect.StartTransition(true);
749 Wait( application, TRANSITION_DURATION*0.2f );
750 waveEffect.StopTransition();
751 application.SendNotification();
752 application.Render(RENDER_FRAME_INTERVAL);
753 DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
754 DALI_TEST_CHECK( cube.GetChildAt(0).GetCurrentColor() == halfBrightness );
755 DALI_TEST_CHECK( cube.GetChildAt(1).GetCurrentColor() == fullBrightness );
757 waveEffect.SetTargetImage( firstImageActor );
758 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
759 Wait( application, TRANSITION_DURATION*0.4f );
760 waveEffect.StopTransition();
761 application.SendNotification();
762 application.Render(RENDER_FRAME_INTERVAL);
763 DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( -2.f*Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
764 DALI_TEST_CHECK( cube.GetChildAt(0).GetCurrentColor() == fullBrightness );
765 DALI_TEST_CHECK( cube.GetChildAt(1).GetCurrentColor() == halfBrightness );
767 waveEffect.SetTargetImage( secondImageActor );
768 waveEffect.StartTransition(false);
769 Wait( application, TRANSITION_DURATION*0.6f );
770 waveEffect.StopTransition();
771 application.SendNotification();
772 application.Render(RENDER_FRAME_INTERVAL);
773 DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
774 DALI_TEST_CHECK( cube.GetChildAt(0).GetCurrentColor() == halfBrightness );
775 DALI_TEST_CHECK( cube.GetChildAt(1).GetCurrentColor() == fullBrightness );
777 waveEffect.SetTargetImage( firstImageActor );
778 waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
779 Wait( application, TRANSITION_DURATION*0.8f );
780 waveEffect.StopTransition();
781 application.SendNotification();
782 application.Render(RENDER_FRAME_INTERVAL);
783 DALI_TEST_EQUALS( cube.GetCurrentRotation(), Quaternion( 0.f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
784 DALI_TEST_CHECK( cube.GetChildAt(0).GetCurrentColor() == fullBrightness );
785 DALI_TEST_CHECK( cube.GetChildAt(1).GetCurrentColor() == halfBrightness );
789 int UtcDaliCubeTransitionCrossEffectStopTransition(void)
791 ToolkitTestApplication application;
792 tet_infoline(" UtcDaliCubeTransitionCrossEffectStopTransition ");
794 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
795 ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
796 ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
798 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
799 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
800 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
801 Actor rootActor = crossEffect.GetRoot();
802 Stage::GetCurrent().Add( rootActor );
803 crossEffect.SetCurrentImage( firstImageActor );
804 Actor cube0 = rootActor.GetChildAt(0);
805 Actor cube1 = rootActor.GetChildAt(1);
807 Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
808 Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
810 //check the cube rotation values and color values after stop the different transitions in the middle
811 crossEffect.SetTargetImage( secondImageActor );
812 crossEffect.StartTransition(true);
813 Wait( application, TRANSITION_DURATION*0.2f );
814 crossEffect.StopTransition();
815 application.SendNotification();
816 application.Render(RENDER_FRAME_INTERVAL);
817 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
818 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2, Vector3::XAXIS), ROTATION_EPSILON, TEST_LOCATION );
820 DALI_TEST_CHECK( cube0.GetChildAt(0).GetCurrentColor() == halfBrightness );
821 DALI_TEST_CHECK( cube0.GetChildAt(1).GetCurrentColor() == fullBrightness );
823 crossEffect.SetTargetImage( firstImageActor );
824 crossEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
825 Wait( application, TRANSITION_DURATION*0.4f );
826 crossEffect.StopTransition();
827 application.SendNotification();
828 application.Render(RENDER_FRAME_INTERVAL);
829 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -2.f*Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
830 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 2.f*Math::PI_2, Vector3::XAXIS), ROTATION_EPSILON, TEST_LOCATION );
831 DALI_TEST_CHECK( cube0.GetChildAt(0).GetCurrentColor() == fullBrightness );
832 DALI_TEST_CHECK( cube0.GetChildAt(1).GetCurrentColor() == halfBrightness );
834 crossEffect.SetTargetImage( secondImageActor );
835 crossEffect.StartTransition(false);
836 Wait( application, TRANSITION_DURATION*0.6f );
837 crossEffect.StopTransition();
838 application.SendNotification();
839 application.Render(RENDER_FRAME_INTERVAL);
840 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
841 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2, Vector3::XAXIS), ROTATION_EPSILON, TEST_LOCATION );
842 DALI_TEST_CHECK( cube0.GetChildAt(0).GetCurrentColor() == halfBrightness );
843 DALI_TEST_CHECK( cube0.GetChildAt(1).GetCurrentColor() == fullBrightness );
845 crossEffect.SetTargetImage( firstImageActor );
846 crossEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
847 Wait( application, TRANSITION_DURATION*0.8f );
848 crossEffect.StopTransition();
849 application.SendNotification();
850 application.Render(RENDER_FRAME_INTERVAL);
851 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( 0.f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
852 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 0.f, Vector3::XAXIS), ROTATION_EPSILON, TEST_LOCATION );
853 DALI_TEST_CHECK( cube0.GetChildAt(0).GetCurrentColor() == fullBrightness );
854 DALI_TEST_CHECK( cube0.GetChildAt(1).GetCurrentColor() == halfBrightness );
858 int UtcDaliCubeTransitionFoldEffectStopTransition(void)
860 ToolkitTestApplication application;
861 tet_infoline(" UtcDaliCubeTransitionFoldEffectStopTransition ");
863 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
864 ImageActor firstImageActor = CreateSolidColorImageActor(application, Color::RED,30,30);
865 ImageActor secondImageActor = CreateSolidColorImageActor(application, Color::GREEN,20,20);
867 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS, VIEW_AREA_SIZE );
868 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
869 Actor rootActor = foldEffect.GetRoot();
870 Stage::GetCurrent().Add( rootActor );
871 foldEffect.SetCurrentImage( firstImageActor );
872 Actor cube0 = rootActor.GetChildAt(0);
873 Actor cube1 = rootActor.GetChildAt(1);
875 Vector4 fullBrightness = Vector4(1.f,1.f,1.f,1.f);
876 Vector4 halfBrightness = Vector4(0.5f, 0.5f, 0.5f, 1.f);
878 //check the cube rotation values and color values after stop the different transitions in the middle
879 foldEffect.SetTargetImage( secondImageActor );
880 foldEffect.StartTransition(true);
881 Wait( application, TRANSITION_DURATION*0.2f );
882 foldEffect.StopTransition();
883 application.SendNotification();
884 application.Render(RENDER_FRAME_INTERVAL);
885 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
886 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
887 DALI_TEST_CHECK( cube0.GetChildAt(0).GetCurrentColor() == halfBrightness );
888 DALI_TEST_CHECK( cube0.GetChildAt(1).GetCurrentColor() == fullBrightness );
890 foldEffect.SetTargetImage( firstImageActor );
891 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
892 Wait( application, TRANSITION_DURATION*0.4f );
893 foldEffect.StopTransition();
894 application.SendNotification();
895 application.Render(RENDER_FRAME_INTERVAL);
896 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -2.f*Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
897 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 2.f*Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
898 DALI_TEST_CHECK( cube0.GetChildAt(0).GetCurrentColor() == fullBrightness );
899 DALI_TEST_CHECK( cube0.GetChildAt(1).GetCurrentColor() == halfBrightness );
901 foldEffect.SetTargetImage( secondImageActor );
902 foldEffect.StartTransition(false);
903 Wait( application, TRANSITION_DURATION*0.6f );
904 foldEffect.StopTransition();
905 application.SendNotification();
906 application.Render(RENDER_FRAME_INTERVAL);
907 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( -Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
908 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( Math::PI_2, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
909 DALI_TEST_CHECK( cube0.GetChildAt(0).GetCurrentColor() == halfBrightness );
910 DALI_TEST_CHECK( cube0.GetChildAt(1).GetCurrentColor() == fullBrightness );
912 foldEffect.SetTargetImage( firstImageActor );
913 foldEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
914 Wait( application, TRANSITION_DURATION*0.8f );
915 foldEffect.StopTransition();
916 application.SendNotification();
917 application.Render(RENDER_FRAME_INTERVAL);
918 DALI_TEST_EQUALS( cube1.GetCurrentRotation(), Quaternion( 0.f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
919 DALI_TEST_EQUALS( cube0.GetCurrentRotation(), Quaternion( 0.f, Vector3::YAXIS), ROTATION_EPSILON, TEST_LOCATION );
920 DALI_TEST_CHECK( cube0.GetChildAt(0).GetCurrentColor() == fullBrightness );
921 DALI_TEST_CHECK( cube0.GetChildAt(1).GetCurrentColor() == halfBrightness );