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>
26 #include <dali/public-api/images/buffer-image.h>
31 using namespace Dali::Toolkit;
36 const unsigned int NUM_ROWS = 16;
37 const unsigned int NUM_COLUMNS = 10;
38 const Vector2 VIEW_AREA_SIZE( 480.0f, 800.0f );
39 const float TRANSITION_DURATION = 0.5f;
40 const float CUBE_DISPLACEMENT = 55.f;
41 const Vector2 PAN_POSITION1( VIEW_AREA_SIZE.x * 0.75f, VIEW_AREA_SIZE.y * 0.25f );
42 const Vector2 PAN_DISPLACEMENT1( -5.f, 5.f );
43 const Vector2 PAN_POSITION2( VIEW_AREA_SIZE.x * 0.25f, VIEW_AREA_SIZE.y * 0.75f );
44 const Vector2 PAN_DISPLACEMENT2( 5.f, 5.f );
45 const Vector4 FULL_BRIGHTNESS(1.f,1.f,1.f,1.f);
46 const Vector4 HALF_BRIGHTNESS(0.5f, 0.5f, 0.5f, 1.f);
47 const int RENDER_FRAME_INTERVAL = 16;
48 static const float FLT_EPISILON = 0.0001f;
49 static const float EPISILON = 0.05f;
50 const float TRANSITION_BEFORE_END_DURATION = TRANSITION_DURATION - 0.05f;
52 static bool gObjectCreatedCallBackCalled;
53 static void TestCallback(BaseHandle handle)
55 gObjectCreatedCallBackCalled = true;
59 * Simulate time passed by, waiting for certain process to finish
60 * @param[in] application Test application instance
61 * @param[in] durationToPass Time to pass in milliseconds.
63 void Wait(ToolkitTestApplication& application, float durationToPass)
65 int duration = static_cast<int>(durationToPass*1000.f);
66 // wait 2 more frames to compensate the two frames used by the image waiting for the loading succeeded signal
67 for(int i = 0; i <= duration/RENDER_FRAME_INTERVAL+2 ; i++)
69 application.SendNotification();
70 application.Render(RENDER_FRAME_INTERVAL);
76 //Callback class to test whether transition completed signal is emitted when the transition animation is finished
77 class TransitionCompletedCallback : public Dali::ConnectionTracker
80 TransitionCompletedCallback( bool& signalReceived, CubeTransitionEffect& effect, Image& image )
81 : mSignalVerified( signalReceived ),
82 mCurrentEffect( effect ),
83 mActorTransitTo( image )
87 void Callback( CubeTransitionEffect effect, Image image )
89 tet_infoline( "Verifying TransitionCompletedSignal" );
91 if( mCurrentEffect == effect && mActorTransitTo == image )
93 mSignalVerified = true;
99 mSignalVerified = false;
102 bool& mSignalVerified;
103 CubeTransitionEffect& mCurrentEffect;
104 Image& mActorTransitTo;
111 void cube_transition_effect_startup(void)
113 test_return_value = TET_UNDEF;
116 void cube_transition_effect_cleanup(void)
118 test_return_value = TET_PASS;
121 int UtcDaliCubeTransitionWaveEffectNew(void)
123 ToolkitTestApplication application;
124 tet_infoline(" UtcDaliCubeTransitionWaveEffectNew ");
126 CubeTransitionEffect waveEffect;
128 DALI_TEST_CHECK( !waveEffect );
130 waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
131 waveEffect.SetSize( VIEW_AREA_SIZE );
133 DALI_TEST_CHECK( waveEffect );
137 //Additional check to ensure object is created by checking if it's registered
138 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
139 DALI_TEST_CHECK( registry );
141 gObjectCreatedCallBackCalled = false;
142 registry.ObjectCreatedSignal().Connect( &TestCallback );
144 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
145 waveEffect.SetSize( VIEW_AREA_SIZE );
147 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
151 int UtcDaliCubeTransitionCrossEffectNew(void)
153 ToolkitTestApplication application;
154 tet_infoline(" UtcDaliCubeTransitionCrossEffectNew ");
156 CubeTransitionEffect crossEffect;
158 DALI_TEST_CHECK( !crossEffect );
160 crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
161 crossEffect.SetSize( VIEW_AREA_SIZE );
163 DALI_TEST_CHECK( crossEffect );
167 //Additional check to ensure object is created by checking if it's registered
168 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
169 DALI_TEST_CHECK( registry );
171 gObjectCreatedCallBackCalled = false;
172 registry.ObjectCreatedSignal().Connect( &TestCallback );
174 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
175 crossEffect.SetSize( VIEW_AREA_SIZE );
177 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
181 int UtcDaliCubeTransitionFoldEffectNew(void)
183 ToolkitTestApplication application;
184 tet_infoline( " UtcDaliCubeTransitionFoldEffectNew " );
186 CubeTransitionEffect foldEffect;
188 DALI_TEST_CHECK( !foldEffect );
190 foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
191 foldEffect.SetSize( VIEW_AREA_SIZE );
193 DALI_TEST_CHECK( foldEffect );
197 //Additional check to ensure object is created by checking if it is registered
198 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
199 DALI_TEST_CHECK( registry );
201 gObjectCreatedCallBackCalled = false;
202 registry.ObjectCreatedSignal().Connect( &TestCallback );
204 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
205 foldEffect.SetSize( VIEW_AREA_SIZE );
207 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
211 int UtcDaliCubeTransitionEffectSetGetTransitionDuration(void)
213 ToolkitTestApplication application;
214 tet_infoline(" UtcDaliCubeTransitionEffectSetGetTransitionDuration ");
216 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
217 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
218 waveEffect.SetSize( VIEW_AREA_SIZE );
219 DALI_TEST_EQUALS( TRANSITION_DURATION, waveEffect.GetTransitionDuration(), TEST_LOCATION );
221 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
222 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
223 crossEffect.SetSize( VIEW_AREA_SIZE );
224 DALI_TEST_EQUALS( TRANSITION_DURATION, crossEffect.GetTransitionDuration(), TEST_LOCATION );
226 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
227 foldEffect.SetSize( VIEW_AREA_SIZE );
228 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
229 DALI_TEST_EQUALS( TRANSITION_DURATION, foldEffect.GetTransitionDuration(), TEST_LOCATION );
233 int UtcDaliCubeTransitionEffectSetGetCubeDisplacement(void)
235 ToolkitTestApplication application;
236 tet_infoline(" UtcDaliCubeTransitionEffectSetGetTransitionDuration ");
238 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS);
239 waveEffect.SetSize( VIEW_AREA_SIZE );
240 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
241 DALI_TEST_EQUALS( CUBE_DISPLACEMENT, waveEffect.GetCubeDisplacement(), TEST_LOCATION );
243 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
244 crossEffect.SetSize( VIEW_AREA_SIZE );
245 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
246 DALI_TEST_EQUALS( CUBE_DISPLACEMENT, crossEffect.GetCubeDisplacement(), TEST_LOCATION );
248 //Cube displacement is not used in CubeTransitionFoldEffect
252 //Test common codes in base class
253 int UtcDaliCubeTransitionEffectGetRoot(void)
255 ToolkitTestApplication application;
256 tet_infoline(" UtcDaliCubeTransitionEffectGetRoot ");
258 unsigned int totalNum = NUM_ROWS*NUM_COLUMNS;
260 Image image = BufferImage::New( 40, 40 ) ;
262 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
263 waveEffect.SetSize( VIEW_AREA_SIZE );
264 Stage::GetCurrent().Add( waveEffect );
265 waveEffect.SetCurrentImage( image );
266 waveEffect.SetTargetImage( image );
268 application.SendNotification();
269 application.Render();
271 waveEffect.StartTransition();
273 Wait( application, TRANSITION_DURATION * 0.5f );
275 // check that we have a total of NUM_ROWS*NUM_COLUMNS cubes;
276 Actor boxesRoot = waveEffect.GetChildAt(0);
277 DALI_TEST_CHECK( totalNum == boxesRoot.GetChildCount() );
279 // check that every cube has two children
280 DALI_TEST_CHECK( 2 == boxesRoot.GetChildAt(0).GetChildCount() );
281 DALI_TEST_CHECK( 2 == boxesRoot.GetChildAt(totalNum/2).GetChildCount() );
282 DALI_TEST_CHECK( 2 == boxesRoot.GetChildAt(totalNum-1).GetChildCount() );
286 int UtcDaliCubeTransitionEffectIsTransitioning(void)
288 ToolkitTestApplication application;
289 tet_infoline(" UtcDaliCubeTransitionEffectIsTransiting ");
291 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
292 Image image = BufferImage::New( 40, 40 ) ;
294 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
295 waveEffect.SetSize( VIEW_AREA_SIZE );
296 Stage::GetCurrent().Add( waveEffect );
298 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
299 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
300 DALI_TEST_CHECK( !waveEffect.IsTransitioning() );
302 waveEffect.SetCurrentImage( image );
303 waveEffect.SetTargetImage( image );
304 //transition is started
305 waveEffect.StartTransition();
306 DALI_TEST_CHECK( waveEffect.IsTransitioning() );
307 //transition is finished
308 Wait( application, TRANSITION_DURATION );
309 DALI_TEST_CHECK( !waveEffect.IsTransitioning() );
311 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
312 crossEffect.SetSize( VIEW_AREA_SIZE );
313 Stage::GetCurrent().Add( crossEffect );
315 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
316 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
317 DALI_TEST_CHECK( !crossEffect.IsTransitioning() );
319 crossEffect.SetCurrentImage( image );
320 crossEffect.SetTargetImage( image );
321 //transition is started
322 crossEffect.StartTransition(false);
323 DALI_TEST_CHECK( crossEffect.IsTransitioning() );
324 //transition is finished
325 Wait( application, TRANSITION_DURATION );
326 DALI_TEST_CHECK( !crossEffect.IsTransitioning() );
328 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
329 foldEffect.SetSize( VIEW_AREA_SIZE );
330 Stage::GetCurrent().Add( foldEffect );
332 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
333 DALI_TEST_CHECK( !foldEffect.IsTransitioning() );
335 foldEffect.SetCurrentImage( image );
336 foldEffect.SetTargetImage( image );
337 //transition is started
338 foldEffect.StartTransition(true);
339 DALI_TEST_CHECK(foldEffect.IsTransitioning() );
340 //transition is finished
341 Wait( application, TRANSITION_DURATION );
342 DALI_TEST_CHECK( !foldEffect.IsTransitioning() );
347 //Test common codes in base class
348 int UtcDaliCubeTransitionEffectSetCurrentImage(void)
350 ToolkitTestApplication application;
351 tet_infoline(" UtcDaliCubeTransitionEffectSetCurrentImage ");
353 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
354 Image image = BufferImage::New( 40, 40 ) ;
356 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
357 waveEffect.SetSize( VIEW_AREA_SIZE );
358 waveEffect.SetCurrentImage( image );
360 Stage::GetCurrent().Add( waveEffect );
362 application.SendNotification();
363 application.Render();
365 waveEffect.StartTransition();
367 // the current image content is set to the tiles facing the camera
368 Actor currentTile = waveEffect.GetChildAt(0).GetChildAt(0).GetChildAt(0);
369 Actor targetTile = waveEffect.GetChildAt(0).GetChildAt(0).GetChildAt(1);
371 //check the pixel area set to the cube
372 Vector4 pixelAreaDef( 0.f, 0.f, 1.f / NUM_COLUMNS, 1.f / NUM_ROWS);
374 Property::Index textureRectIndex = currentTile.GetPropertyIndex( "uTextureRect" );
375 DALI_TEST_CHECK( textureRectIndex != Property::INVALID_INDEX );
376 Property::Value textureRectValue = currentTile.GetProperty( textureRectIndex );
377 DALI_TEST_CHECK( textureRectValue.GetType() == Property::VECTOR4 );
379 DALI_TEST_CHECK( textureRectValue.Get( pixelArea ) );
381 DALI_TEST_EQUALS( pixelAreaDef, pixelArea, FLT_EPISILON, TEST_LOCATION );
386 //Test common codes in base class
387 int UtcDaliCubeTransitionEffectSetTargetImage(void)
389 ToolkitTestApplication application;
390 tet_infoline(" UtcDaliCubeTransitionEffectSetTargetImage ");
392 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
393 Image image = BufferImage::New( 30, 30 );
395 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
396 waveEffect.SetSize( VIEW_AREA_SIZE );
397 Stage::GetCurrent().Add( waveEffect );
399 waveEffect.SetCurrentImage( image );
400 waveEffect.SetTargetImage( image );
402 Stage::GetCurrent().Add( waveEffect );
404 application.SendNotification();
405 application.Render();
407 waveEffect.StartTransition();
409 // the target image content is set to the tiles currently invisible to the camera
410 Actor tile = waveEffect.GetChildAt(0).GetChildAt(0).GetChildAt(1);
412 //check the pixel area set to the cube
413 Vector4 pixelAreaDef( 0.f, 0.f, 1.f / NUM_COLUMNS, 1.f / NUM_ROWS);
415 Property::Index textureRectIndex = tile.GetPropertyIndex( "uTextureRect" );
416 DALI_TEST_CHECK( textureRectIndex != -1 );
417 Property::Value textureRectValue = tile.GetProperty( textureRectIndex );
418 DALI_TEST_CHECK( textureRectValue.GetType() == Property::VECTOR4 );
420 DALI_TEST_CHECK( textureRectValue.Get( pixelArea ) );
422 DALI_TEST_EQUALS( pixelAreaDef, pixelArea, FLT_EPISILON, TEST_LOCATION );
427 int UtcDaliCubeTransitionWaveEffectStartTransition(void)
429 ToolkitTestApplication application;
430 tet_infoline(" UtcDaliCubeTransitionWaveEffectStartTransition ");
432 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
433 Image image = ResourceImage::New( "Image.jpg" );
435 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
436 waveEffect.SetSize( VIEW_AREA_SIZE );
437 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
438 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
439 waveEffect.SetCurrentImage( image );
441 Stage::GetCurrent().Add( waveEffect );
443 application.SendNotification();
444 application.Render();
446 waveEffect.StartTransition( true );
448 Actor cube = waveEffect.GetChildAt(0).GetChildAt(0);
450 //check the cube rotation value and color values just before the end of different transitions
451 waveEffect.SetTargetImage( image );
452 Wait( application, TRANSITION_BEFORE_END_DURATION );
453 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
454 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
455 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
457 waveEffect.SetTargetImage( image );
458 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
459 Wait( application, TRANSITION_BEFORE_END_DURATION );
460 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
461 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
462 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
464 waveEffect.SetTargetImage( image );
465 waveEffect.StartTransition(false);
466 Wait( application, TRANSITION_BEFORE_END_DURATION );
467 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
468 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
469 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
471 waveEffect.SetTargetImage( image );
472 waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
473 Wait( application, TRANSITION_BEFORE_END_DURATION );
474 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
475 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
476 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
480 int UtcDaliCubeTransitionCrossEffectStartTransition(void)
482 ToolkitTestApplication application;
483 tet_infoline(" UtcDaliCubeTransitionCrossEffectStartTransition ");
485 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
486 Image image = ResourceImage::New( "Image.jpg" );
488 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
489 crossEffect.SetSize( VIEW_AREA_SIZE );
490 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
491 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
492 crossEffect.SetCurrentImage( image );
493 crossEffect.SetTargetImage( image );
495 Stage::GetCurrent().Add( crossEffect );
497 application.SendNotification();
498 application.Render();
500 crossEffect.StartTransition(true);
502 Actor cube0 = crossEffect.GetChildAt(0).GetChildAt(0);
503 Actor cube1 = crossEffect.GetChildAt(0).GetChildAt(1);
505 //check the cube rotation value and color values just before the end of different transitions
506 Wait( application, TRANSITION_BEFORE_END_DURATION );
507 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
508 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::XAXIS), EPISILON, TEST_LOCATION );
509 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
510 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
513 crossEffect.SetTargetImage( image );
514 crossEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
515 Wait( application, TRANSITION_BEFORE_END_DURATION );
516 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
517 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::XAXIS), EPISILON, TEST_LOCATION );
518 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
519 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
522 crossEffect.SetTargetImage( image );
523 crossEffect.StartTransition(false);
524 Wait( application, TRANSITION_BEFORE_END_DURATION );
525 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
526 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::XAXIS), EPISILON, TEST_LOCATION );
527 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
528 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
530 crossEffect.SetTargetImage( image );
531 crossEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
532 Wait( application, TRANSITION_BEFORE_END_DURATION );
533 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
534 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::XAXIS), EPISILON, TEST_LOCATION );
535 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
536 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
540 int UtcDaliCubeTransitionFoldEffectStartTransition(void)
542 ToolkitTestApplication application;
543 tet_infoline(" UtcDaliCubeTransitionFoldEffectStartTransition ");
545 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
546 Image image = BufferImage::New( 30, 30 );
548 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
549 foldEffect.SetSize( VIEW_AREA_SIZE );
550 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
551 foldEffect.SetCurrentImage( image );
552 foldEffect.SetTargetImage( image );
554 Stage::GetCurrent().Add( foldEffect );
556 application.SendNotification();
557 application.Render();
559 foldEffect.StartTransition(true);
561 Actor cube0 = foldEffect.GetChildAt(0).GetChildAt(0);
562 Actor cube1 = foldEffect.GetChildAt(0).GetChildAt(1);
564 //check the cube rotation value and color values just before the end of different transitions
565 Wait( application, TRANSITION_BEFORE_END_DURATION );
566 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
567 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
568 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
569 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
571 foldEffect.SetTargetImage( image );
572 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
573 Wait( application, TRANSITION_BEFORE_END_DURATION );
574 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
575 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
576 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
577 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
580 foldEffect.SetTargetImage( image );
581 foldEffect.StartTransition(false);
582 Wait( application, TRANSITION_BEFORE_END_DURATION );
583 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
584 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
585 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
586 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(),FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
588 foldEffect.SetTargetImage( image );
589 foldEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
590 Wait( application, TRANSITION_BEFORE_END_DURATION );
591 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
592 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
593 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
594 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
598 int UtcDaliCubeTransitionEffectSignalTransitionCompleted(void)
600 ToolkitTestApplication application;
601 tet_infoline(" UtcDaliCubeTransitionEffectSignalTransitionCompleted ");
603 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
604 Image firstImage = BufferImage::New( 30, 30 );
605 Image secondImage = BufferImage::New( 20, 20 );
606 Image thirdImage = BufferImage::New( 40, 40 );
608 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
609 waveEffect.SetSize( VIEW_AREA_SIZE );
610 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
611 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
612 Stage::GetCurrent().Add( waveEffect );
614 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
615 crossEffect.SetSize( VIEW_AREA_SIZE );
616 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
617 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
618 Stage::GetCurrent().Add( crossEffect );
620 CubeTransitionEffect foldEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
621 foldEffect.SetSize( VIEW_AREA_SIZE );
622 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
623 Stage::GetCurrent().Add( foldEffect );
625 bool signalVerified = false;
626 CubeTransitionEffect currentEffect;
627 Image actorTransitTo;
628 TransitionCompletedCallback callback(signalVerified, currentEffect, actorTransitTo);
629 waveEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
630 crossEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
631 foldEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
633 //check that the wave effect is used to transit to secondImage
634 currentEffect = waveEffect;
635 actorTransitTo = secondImage;
636 waveEffect.SetCurrentImage( firstImage );
637 waveEffect.SetTargetImage( secondImage );
638 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
639 Wait( application, TRANSITION_DURATION );
640 DALI_TEST_CHECK(callback.mSignalVerified);
643 //check that the wave effect is used to transit to thirdImage
644 actorTransitTo = thirdImage;
645 waveEffect.SetTargetImage( thirdImage );
646 waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
647 Wait( application, TRANSITION_DURATION );
648 DALI_TEST_CHECK(callback.mSignalVerified);
651 //check that the cross effect is used to transit to secondImage
652 currentEffect = crossEffect;
653 actorTransitTo = secondImage;
654 crossEffect.SetCurrentImage( thirdImage );
655 crossEffect.SetTargetImage( secondImage );
656 crossEffect.StartTransition(true);
657 Wait( application, TRANSITION_DURATION );
658 DALI_TEST_CHECK(callback.mSignalVerified);
661 //check that the cross effect is used to transit to firstImage
662 actorTransitTo = firstImage;
663 crossEffect.SetTargetImage( firstImage );
664 crossEffect.StartTransition(false);
665 Wait( application, TRANSITION_DURATION );
666 DALI_TEST_CHECK(callback.mSignalVerified);
669 //check that the fold effect is used to transit to secondImage
670 currentEffect = foldEffect;
671 actorTransitTo = secondImage;
672 foldEffect.SetCurrentImage( firstImage );
673 foldEffect.SetTargetImage( secondImage );
674 foldEffect.StartTransition();
675 Wait( application, TRANSITION_DURATION );
676 DALI_TEST_CHECK( callback.mSignalVerified );
679 //check that the fold effect is used to transit to thirdImage
680 actorTransitTo = thirdImage;
681 foldEffect.SetTargetImage( thirdImage );
682 foldEffect.StartTransition( false );
683 Wait( application, TRANSITION_DURATION );
684 DALI_TEST_CHECK( callback.mSignalVerified );
688 int UtcDaliCubeTransitionEffectPauseResumeTransition(void)
690 ToolkitTestApplication application;
691 tet_infoline(" UtcDaliCubeTransitionEffectPauseResumeTransition ");
693 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
694 Image firstImage = BufferImage::New( 30, 30 );
695 Image secondImage = BufferImage::New( 20, 20 );
697 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
698 waveEffect.SetSize( VIEW_AREA_SIZE );
699 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
700 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
701 Stage::GetCurrent().Add( waveEffect );
703 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
704 crossEffect.SetSize( VIEW_AREA_SIZE );
705 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
706 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
707 Stage::GetCurrent().Add( crossEffect );
709 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
710 foldEffect.SetSize( VIEW_AREA_SIZE );
711 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
712 Stage::GetCurrent().Add( foldEffect );
714 bool signalVerified = false;
715 CubeTransitionEffect currentEffect;
716 Image actorTransitTo;
717 TransitionCompletedCallback callback(signalVerified, currentEffect, actorTransitTo);
718 waveEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
719 crossEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
720 foldEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
722 currentEffect = waveEffect;
723 actorTransitTo = secondImage;
724 waveEffect.SetCurrentImage( firstImage );
725 waveEffect.SetTargetImage( secondImage );
726 // start transition; transit for 0.5*duration; pause for 0.5*duration;
727 // resume for 0.25*duration; pause for 0.25*duration; resume for another 0.25*duration;
728 // only until now the transition finished signal can be received
729 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
730 Wait( application, TRANSITION_DURATION*0.5f );
731 DALI_TEST_CHECK(!callback.mSignalVerified);
732 waveEffect.PauseTransition();
733 Wait( application, TRANSITION_DURATION*0.5f );
734 DALI_TEST_CHECK(!callback.mSignalVerified);
735 waveEffect.ResumeTransition();
736 Wait( application, TRANSITION_DURATION*0.25f );
737 DALI_TEST_CHECK(!callback.mSignalVerified);
738 waveEffect.PauseTransition();
739 Wait( application, TRANSITION_DURATION*0.25f );
740 DALI_TEST_CHECK(!callback.mSignalVerified);
741 waveEffect.ResumeTransition();
742 Wait( application, TRANSITION_DURATION*0.25f );
743 DALI_TEST_CHECK(callback.mSignalVerified);
746 currentEffect = crossEffect;
747 actorTransitTo = firstImage;
748 crossEffect.SetCurrentImage( secondImage );
749 crossEffect.SetTargetImage( firstImage );
750 // start transition; transit for 0.25*duration; pause for 0.2*duration;
751 // resume for 0.5*duration; pause for 0.2*duration; resume for another 0.25*duration;
752 // only until now the transition finished signal can be received
753 crossEffect.StartTransition(false);
754 Wait( application, TRANSITION_DURATION*0.25f );
755 DALI_TEST_CHECK(!callback.mSignalVerified);
756 crossEffect.PauseTransition();
757 Wait( application, TRANSITION_DURATION*0.2f );
758 DALI_TEST_CHECK(!callback.mSignalVerified);
759 crossEffect.ResumeTransition();
760 Wait( application, TRANSITION_DURATION*0.5f );
761 DALI_TEST_CHECK(!callback.mSignalVerified);
762 crossEffect.PauseTransition();
763 Wait( application, TRANSITION_DURATION*0.2f );
764 DALI_TEST_CHECK(!callback.mSignalVerified);
765 crossEffect.ResumeTransition();
766 Wait( application, TRANSITION_DURATION*0.25f );
767 DALI_TEST_CHECK(callback.mSignalVerified);
770 currentEffect = foldEffect;
771 actorTransitTo = secondImage;
772 foldEffect.SetCurrentImage( firstImage );
773 foldEffect.SetTargetImage( secondImage );
774 // start transition; transit for 0.5*duration; pause for 0.5*duration;
775 // resume for 0.25*duration; pause for 0.25*duration; resume for another 0.25*duration;
776 // only until now the transition finished signal can be received
777 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
778 Wait( application, TRANSITION_DURATION*0.5f );
779 DALI_TEST_CHECK(!callback.mSignalVerified);
780 foldEffect.PauseTransition();
781 Wait( application, TRANSITION_DURATION*0.5f );
782 DALI_TEST_CHECK(!callback.mSignalVerified);
783 foldEffect.ResumeTransition();
784 Wait( application, TRANSITION_DURATION*0.25f );
785 DALI_TEST_CHECK(!callback.mSignalVerified);
786 foldEffect.PauseTransition();
787 Wait( application, TRANSITION_DURATION*0.25f );
788 DALI_TEST_CHECK(!callback.mSignalVerified);
789 foldEffect.ResumeTransition();
790 Wait( application, TRANSITION_DURATION*0.25f );
791 DALI_TEST_CHECK(callback.mSignalVerified);
795 int UtcDaliCubeTransitionWaveEffectStopTransition(void)
797 ToolkitTestApplication application;
798 tet_infoline(" UtcDaliCubeTransitionWaveEffectStopTransition ");
800 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
801 Image firstImage = BufferImage::New( 30, 30 );
802 Image secondImage = BufferImage::New( 20, 20 );
804 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
805 waveEffect.SetSize( VIEW_AREA_SIZE );
806 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
807 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
808 waveEffect.SetCurrentImage( firstImage );
809 waveEffect.SetTargetImage( secondImage );
811 Stage::GetCurrent().Add( waveEffect );
813 application.SendNotification();
814 application.Render();
816 waveEffect.StartTransition(true);
818 Actor cube = waveEffect.GetChildAt(0).GetChildAt(0);
820 //check the cube rotation value and color values reset after stopping different transitions in the middle
821 Wait( application, TRANSITION_DURATION*0.2f );
822 waveEffect.StopTransition();
823 application.SendNotification();
824 application.Render(RENDER_FRAME_INTERVAL);
825 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
826 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
827 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
829 waveEffect.SetTargetImage( firstImage );
830 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
831 Wait( application, TRANSITION_DURATION*0.4f );
832 waveEffect.StopTransition();
833 application.SendNotification();
834 application.Render(RENDER_FRAME_INTERVAL);
835 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
836 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
837 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
839 waveEffect.SetTargetImage( secondImage );
840 waveEffect.StartTransition(false);
841 Wait( application, TRANSITION_DURATION*0.6f );
842 waveEffect.StopTransition();
843 application.SendNotification();
844 application.Render(RENDER_FRAME_INTERVAL);
845 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
846 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
847 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
849 waveEffect.SetTargetImage( firstImage );
850 waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
851 Wait( application, TRANSITION_DURATION*0.8f );
852 waveEffect.StopTransition();
853 application.SendNotification();
854 application.Render(RENDER_FRAME_INTERVAL);
855 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
856 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
857 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
861 int UtcDaliCubeTransitionCrossEffectStopTransition(void)
863 ToolkitTestApplication application;
864 tet_infoline(" UtcDaliCubeTransitionCrossEffectStopTransition ");
866 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
867 Image firstImage = BufferImage::New( 30, 30 );
868 Image secondImage = BufferImage::New( 20, 20 );
870 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
871 crossEffect.SetSize( VIEW_AREA_SIZE );
872 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
873 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
874 crossEffect.SetCurrentImage( firstImage );
875 crossEffect.SetTargetImage( secondImage );
877 Stage::GetCurrent().Add( crossEffect );
879 application.SendNotification();
880 application.Render();
882 crossEffect.StartTransition(true);
884 Actor cube0 = crossEffect.GetChildAt(0).GetChildAt(0);
885 Actor cube1 = crossEffect.GetChildAt(0).GetChildAt(1);
887 //check the cube rotation values and color values reset after stop the different transitions in the middle
888 Wait( application, TRANSITION_DURATION*0.2f );
889 crossEffect.StopTransition();
890 application.SendNotification();
891 application.Render(RENDER_FRAME_INTERVAL);
892 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
893 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
894 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
895 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
897 crossEffect.SetTargetImage( firstImage );
898 crossEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
899 Wait( application, TRANSITION_DURATION*0.4f );
900 crossEffect.StopTransition();
901 application.SendNotification();
902 application.Render(RENDER_FRAME_INTERVAL);
903 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
904 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
905 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
906 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
908 crossEffect.SetTargetImage( secondImage );
909 crossEffect.StartTransition(false);
910 Wait( application, TRANSITION_DURATION*0.6f );
911 crossEffect.StopTransition();
912 application.SendNotification();
913 application.Render(RENDER_FRAME_INTERVAL);
914 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
915 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
916 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
917 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
919 crossEffect.SetTargetImage( firstImage );
920 crossEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
921 Wait( application, TRANSITION_DURATION*0.8f );
922 crossEffect.StopTransition();
923 application.SendNotification();
924 application.Render(RENDER_FRAME_INTERVAL);
925 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
926 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
927 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
928 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
932 int UtcDaliCubeTransitionFoldEffectStopTransition(void)
934 ToolkitTestApplication application;
935 tet_infoline(" UtcDaliCubeTransitionFoldEffectStopTransition ");
937 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
938 Image firstImage = BufferImage::New( 30, 30 );
939 Image secondImage = BufferImage::New( 20, 20 );
941 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
942 foldEffect.SetSize( VIEW_AREA_SIZE );
943 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
944 foldEffect.SetCurrentImage( firstImage );
945 foldEffect.SetTargetImage( secondImage );
947 Stage::GetCurrent().Add( foldEffect );
949 application.SendNotification();
950 application.Render();
952 foldEffect.StartTransition(true);
954 Actor cube0 = foldEffect.GetChildAt(0).GetChildAt(0);
955 Actor cube1 = foldEffect.GetChildAt(0).GetChildAt(1);
957 //check the cube rotation values and color values after stop the different transitions in the middle
958 Wait( application, TRANSITION_DURATION*0.2f );
959 foldEffect.StopTransition();
960 application.SendNotification();
961 application.Render(RENDER_FRAME_INTERVAL);
963 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
964 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
965 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
966 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
968 foldEffect.SetTargetImage( firstImage );
969 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
970 Wait( application, TRANSITION_DURATION*0.4f );
971 foldEffect.StopTransition();
972 application.SendNotification();
973 application.Render(RENDER_FRAME_INTERVAL);
974 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
975 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
976 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
977 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
979 foldEffect.SetTargetImage( secondImage );
980 foldEffect.StartTransition(false);
981 Wait( application, TRANSITION_DURATION*0.6f );
982 foldEffect.StopTransition();
983 application.SendNotification();
984 application.Render(RENDER_FRAME_INTERVAL);
985 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
986 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
987 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
988 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
990 foldEffect.SetTargetImage( firstImage );
991 foldEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
992 Wait( application, TRANSITION_DURATION*0.8f );
993 foldEffect.StopTransition();
994 application.SendNotification();
995 application.Render(RENDER_FRAME_INTERVAL);
996 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
997 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
998 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
999 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );