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/devel-api/adaptor-framework/bitmap-loader.h>
27 #include <dali/public-api/images/buffer-image.h>
32 using namespace Dali::Toolkit;
37 const unsigned int NUM_ROWS = 16;
38 const unsigned int NUM_COLUMNS = 10;
39 const Vector2 VIEW_AREA_SIZE( 480.0f, 800.0f );
40 const float TRANSITION_DURATION = 0.5f;
41 const float CUBE_DISPLACEMENT = 55.f;
42 const Vector2 PAN_POSITION1( VIEW_AREA_SIZE.x * 0.75f, VIEW_AREA_SIZE.y * 0.25f );
43 const Vector2 PAN_DISPLACEMENT1( -5.f, 5.f );
44 const Vector2 PAN_POSITION2( VIEW_AREA_SIZE.x * 0.25f, VIEW_AREA_SIZE.y * 0.75f );
45 const Vector2 PAN_DISPLACEMENT2( 5.f, 5.f );
46 const Vector4 FULL_BRIGHTNESS(1.f,1.f,1.f,1.f);
47 const Vector4 HALF_BRIGHTNESS(0.5f, 0.5f, 0.5f, 1.f);
48 const int RENDER_FRAME_INTERVAL = 16;
49 static const float FLT_EPISILON = 0.0001f;
50 static const float EPISILON = 0.05f;
51 const float TRANSITION_BEFORE_END_DURATION = TRANSITION_DURATION - 0.05f;
53 static bool gObjectCreatedCallBackCalled;
54 static void TestCallback(BaseHandle handle)
56 gObjectCreatedCallBackCalled = true;
60 * Simulate time passed by, waiting for certain process to finish
61 * @param[in] application Test application instance
62 * @param[in] durationToPass Time to pass in milliseconds.
64 void Wait(ToolkitTestApplication& application, float durationToPass)
66 int duration = static_cast<int>(durationToPass*1000.f);
67 // wait 2 more frames to compensate the two frames used by the image waiting for the loading succeeded signal
68 for(int i = 0; i <= duration/RENDER_FRAME_INTERVAL+2 ; i++)
70 application.SendNotification();
71 application.Render(RENDER_FRAME_INTERVAL);
77 //Callback class to test whether transition completed signal is emitted when the transition animation is finished
78 class TransitionCompletedCallback : public Dali::ConnectionTracker
81 TransitionCompletedCallback( bool& signalReceived, CubeTransitionEffect& effect, Texture& image )
82 : mSignalVerified( signalReceived ),
83 mCurrentEffect( effect ),
84 mActorTransitTo( image )
88 void Callback( CubeTransitionEffect effect, Texture image )
90 tet_infoline( "Verifying TransitionCompletedSignal" );
92 if( mCurrentEffect == effect && mActorTransitTo == image )
94 mSignalVerified = true;
100 mSignalVerified = false;
103 bool& mSignalVerified;
104 CubeTransitionEffect& mCurrentEffect;
105 Texture& mActorTransitTo;
112 void cube_transition_effect_startup(void)
114 test_return_value = TET_UNDEF;
117 void cube_transition_effect_cleanup(void)
119 test_return_value = TET_PASS;
122 int UtcDaliCubeTransitionWaveEffectNew(void)
124 ToolkitTestApplication application;
125 tet_infoline(" UtcDaliCubeTransitionWaveEffectNew ");
127 CubeTransitionEffect waveEffect;
129 DALI_TEST_CHECK( !waveEffect );
131 waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
132 waveEffect.SetSize( VIEW_AREA_SIZE );
134 DALI_TEST_CHECK( waveEffect );
138 //Additional check to ensure object is created by checking if it's registered
139 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
140 DALI_TEST_CHECK( registry );
142 gObjectCreatedCallBackCalled = false;
143 registry.ObjectCreatedSignal().Connect( &TestCallback );
145 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
146 waveEffect.SetSize( VIEW_AREA_SIZE );
148 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
152 int UtcDaliCubeTransitionCrossEffectNew(void)
154 ToolkitTestApplication application;
155 tet_infoline(" UtcDaliCubeTransitionCrossEffectNew ");
157 CubeTransitionEffect crossEffect;
159 DALI_TEST_CHECK( !crossEffect );
161 crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
162 crossEffect.SetSize( VIEW_AREA_SIZE );
164 DALI_TEST_CHECK( crossEffect );
168 //Additional check to ensure object is created by checking if it's registered
169 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
170 DALI_TEST_CHECK( registry );
172 gObjectCreatedCallBackCalled = false;
173 registry.ObjectCreatedSignal().Connect( &TestCallback );
175 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
176 crossEffect.SetSize( VIEW_AREA_SIZE );
178 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
182 int UtcDaliCubeTransitionFoldEffectNew(void)
184 ToolkitTestApplication application;
185 tet_infoline( " UtcDaliCubeTransitionFoldEffectNew " );
187 CubeTransitionEffect foldEffect;
189 DALI_TEST_CHECK( !foldEffect );
191 foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
192 foldEffect.SetSize( VIEW_AREA_SIZE );
194 DALI_TEST_CHECK( foldEffect );
198 //Additional check to ensure object is created by checking if it is registered
199 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
200 DALI_TEST_CHECK( registry );
202 gObjectCreatedCallBackCalled = false;
203 registry.ObjectCreatedSignal().Connect( &TestCallback );
205 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
206 foldEffect.SetSize( VIEW_AREA_SIZE );
208 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
212 int UtcDaliCubeTransitionEffectSetGetTransitionDuration(void)
214 ToolkitTestApplication application;
215 tet_infoline(" UtcDaliCubeTransitionEffectSetGetTransitionDuration ");
217 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
218 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
219 waveEffect.SetSize( VIEW_AREA_SIZE );
220 DALI_TEST_EQUALS( TRANSITION_DURATION, waveEffect.GetTransitionDuration(), TEST_LOCATION );
222 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
223 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
224 crossEffect.SetSize( VIEW_AREA_SIZE );
225 DALI_TEST_EQUALS( TRANSITION_DURATION, crossEffect.GetTransitionDuration(), TEST_LOCATION );
227 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
228 foldEffect.SetSize( VIEW_AREA_SIZE );
229 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
230 DALI_TEST_EQUALS( TRANSITION_DURATION, foldEffect.GetTransitionDuration(), TEST_LOCATION );
234 int UtcDaliCubeTransitionEffectSetGetCubeDisplacement(void)
236 ToolkitTestApplication application;
237 tet_infoline(" UtcDaliCubeTransitionEffectSetGetTransitionDuration ");
239 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS);
240 waveEffect.SetSize( VIEW_AREA_SIZE );
241 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
242 DALI_TEST_EQUALS( CUBE_DISPLACEMENT, waveEffect.GetCubeDisplacement(), TEST_LOCATION );
244 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
245 crossEffect.SetSize( VIEW_AREA_SIZE );
246 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
247 DALI_TEST_EQUALS( CUBE_DISPLACEMENT, crossEffect.GetCubeDisplacement(), TEST_LOCATION );
249 //Cube displacement is not used in CubeTransitionFoldEffect
253 //Test common codes in base class
254 int UtcDaliCubeTransitionEffectGetRoot(void)
256 ToolkitTestApplication application;
257 tet_infoline(" UtcDaliCubeTransitionEffectGetRoot ");
259 unsigned int totalNum = NUM_ROWS*NUM_COLUMNS;
261 Texture texture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 40, 40 );
263 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
264 waveEffect.SetSize( VIEW_AREA_SIZE );
265 Stage::GetCurrent().Add( waveEffect );
266 waveEffect.SetCurrentTexture( texture );
267 waveEffect.SetTargetTexture( texture );
269 application.SendNotification();
270 application.Render();
272 waveEffect.StartTransition();
274 Wait( application, TRANSITION_DURATION * 0.5f );
276 // check that we have a total of NUM_ROWS*NUM_COLUMNS cubes;
277 Actor boxesRoot = waveEffect.GetChildAt(0);
278 DALI_TEST_CHECK( totalNum == boxesRoot.GetChildCount() );
280 // check that every cube has two children
281 DALI_TEST_CHECK( 2 == boxesRoot.GetChildAt(0).GetChildCount() );
282 DALI_TEST_CHECK( 2 == boxesRoot.GetChildAt(totalNum/2).GetChildCount() );
283 DALI_TEST_CHECK( 2 == boxesRoot.GetChildAt(totalNum-1).GetChildCount() );
287 int UtcDaliCubeTransitionEffectIsTransitioning(void)
289 ToolkitTestApplication application;
290 tet_infoline(" UtcDaliCubeTransitionEffectIsTransiting ");
292 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
293 Texture texture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 40, 40 );
295 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
296 waveEffect.SetSize( VIEW_AREA_SIZE );
297 Stage::GetCurrent().Add( waveEffect );
299 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
300 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
301 DALI_TEST_CHECK( !waveEffect.IsTransitioning() );
303 waveEffect.SetCurrentTexture( texture );
304 waveEffect.SetTargetTexture( texture );
305 //transition is started
306 waveEffect.StartTransition();
307 DALI_TEST_CHECK( waveEffect.IsTransitioning() );
308 //transition is finished
309 Wait( application, TRANSITION_DURATION );
310 DALI_TEST_CHECK( !waveEffect.IsTransitioning() );
312 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
313 crossEffect.SetSize( VIEW_AREA_SIZE );
314 Stage::GetCurrent().Add( crossEffect );
316 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
317 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
318 DALI_TEST_CHECK( !crossEffect.IsTransitioning() );
320 crossEffect.SetCurrentTexture( texture );
321 crossEffect.SetTargetTexture( texture );
322 //transition is started
323 crossEffect.StartTransition(false);
324 DALI_TEST_CHECK( crossEffect.IsTransitioning() );
325 //transition is finished
326 Wait( application, TRANSITION_DURATION );
327 DALI_TEST_CHECK( !crossEffect.IsTransitioning() );
329 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
330 foldEffect.SetSize( VIEW_AREA_SIZE );
331 Stage::GetCurrent().Add( foldEffect );
333 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
334 DALI_TEST_CHECK( !foldEffect.IsTransitioning() );
336 foldEffect.SetCurrentTexture( texture );
337 foldEffect.SetTargetTexture( texture );
338 //transition is started
339 foldEffect.StartTransition(true);
340 DALI_TEST_CHECK(foldEffect.IsTransitioning() );
341 //transition is finished
342 Wait( application, TRANSITION_DURATION );
343 DALI_TEST_CHECK( !foldEffect.IsTransitioning() );
348 //Test common codes in base class
349 int UtcDaliCubeTransitionEffectSetCurrentTexture(void)
351 ToolkitTestApplication application;
352 tet_infoline(" UtcDaliCubeTransitionEffectSetCurrentTexture ");
354 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
355 Texture texture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 40, 40 );
357 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
358 waveEffect.SetSize( VIEW_AREA_SIZE );
359 waveEffect.SetCurrentTexture( texture );
361 Stage::GetCurrent().Add( waveEffect );
363 application.SendNotification();
364 application.Render();
366 waveEffect.StartTransition();
368 // the current image content is set to the tiles facing the camera
369 Actor currentTile = waveEffect.GetChildAt(0).GetChildAt(0).GetChildAt(0);
370 Actor targetTile = waveEffect.GetChildAt(0).GetChildAt(0).GetChildAt(1);
372 //check the pixel area set to the cube
373 Vector4 pixelAreaDef( 0.f, 0.f, 1.f / NUM_COLUMNS, 1.f / NUM_ROWS);
375 Property::Index textureRectIndex = currentTile.GetPropertyIndex( "uTextureRect" );
376 DALI_TEST_CHECK( textureRectIndex != Property::INVALID_INDEX );
377 Property::Value textureRectValue = currentTile.GetProperty( textureRectIndex );
378 DALI_TEST_CHECK( textureRectValue.GetType() == Property::VECTOR4 );
380 DALI_TEST_CHECK( textureRectValue.Get( pixelArea ) );
382 DALI_TEST_EQUALS( pixelAreaDef, pixelArea, FLT_EPISILON, TEST_LOCATION );
387 //Test common codes in base class
388 int UtcDaliCubeTransitionEffectSetTargetTexture(void)
390 ToolkitTestApplication application;
391 tet_infoline(" UtcDaliCubeTransitionEffectSetTargetTexture ");
393 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
394 Texture texture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 40, 40 );
395 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
396 waveEffect.SetSize( VIEW_AREA_SIZE );
397 Stage::GetCurrent().Add( waveEffect );
399 waveEffect.SetCurrentTexture( texture );
400 waveEffect.SetTargetTexture( texture );
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 );
434 BitmapLoader loader = BitmapLoader::New( "Image.jpg" );
436 PixelData pixelData = loader.GetPixelData();
437 Texture texture = Texture::New( TextureType::TEXTURE_2D, pixelData.GetPixelFormat(), pixelData.GetWidth(), pixelData.GetHeight() );
438 texture.Upload( pixelData );
440 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
441 waveEffect.SetSize( VIEW_AREA_SIZE );
442 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
443 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
444 waveEffect.SetCurrentTexture( texture );
446 Stage::GetCurrent().Add( waveEffect );
448 application.SendNotification();
449 application.Render();
451 waveEffect.StartTransition( true );
453 Actor cube = waveEffect.GetChildAt(0).GetChildAt(0);
455 //check the cube rotation value and color values just before the end of different transitions
456 waveEffect.SetTargetTexture( texture );
457 Wait( application, TRANSITION_BEFORE_END_DURATION );
458 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
459 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
460 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
462 waveEffect.SetTargetTexture( texture );
463 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
464 Wait( application, TRANSITION_BEFORE_END_DURATION );
465 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
466 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
467 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
469 waveEffect.SetTargetTexture( texture );
470 waveEffect.StartTransition(false);
471 Wait( application, TRANSITION_BEFORE_END_DURATION );
472 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
473 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
474 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
476 waveEffect.SetTargetTexture( texture );
477 waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
478 Wait( application, TRANSITION_BEFORE_END_DURATION );
479 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
480 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
481 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
485 int UtcDaliCubeTransitionCrossEffectStartTransition(void)
487 ToolkitTestApplication application;
488 tet_infoline(" UtcDaliCubeTransitionCrossEffectStartTransition ");
490 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
492 BitmapLoader loader = BitmapLoader::New( "Image.jpg" );
494 PixelData pixelData = loader.GetPixelData();
495 Texture texture = Texture::New( TextureType::TEXTURE_2D, pixelData.GetPixelFormat(), pixelData.GetWidth(), pixelData.GetHeight() );
496 texture.Upload( pixelData );
498 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
499 crossEffect.SetSize( VIEW_AREA_SIZE );
500 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
501 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
502 crossEffect.SetCurrentTexture( texture );
503 crossEffect.SetTargetTexture( texture );
505 Stage::GetCurrent().Add( crossEffect );
507 application.SendNotification();
508 application.Render();
510 crossEffect.StartTransition(true);
512 Actor cube0 = crossEffect.GetChildAt(0).GetChildAt(0);
513 Actor cube1 = crossEffect.GetChildAt(0).GetChildAt(1);
515 //check the cube rotation value and color values just before the end of different transitions
516 Wait( application, TRANSITION_BEFORE_END_DURATION );
517 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
518 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::XAXIS), EPISILON, TEST_LOCATION );
519 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
520 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
523 crossEffect.SetTargetTexture( texture );
524 crossEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
525 Wait( application, TRANSITION_BEFORE_END_DURATION );
526 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
527 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::XAXIS), EPISILON, TEST_LOCATION );
528 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
529 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
532 crossEffect.SetTargetTexture( texture );
533 crossEffect.StartTransition(false);
534 Wait( application, TRANSITION_BEFORE_END_DURATION );
535 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
536 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::XAXIS), EPISILON, TEST_LOCATION );
537 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
538 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
540 crossEffect.SetTargetTexture( texture );
541 crossEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
542 Wait( application, TRANSITION_BEFORE_END_DURATION );
543 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
544 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::XAXIS), EPISILON, TEST_LOCATION );
545 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
546 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
550 int UtcDaliCubeTransitionFoldEffectStartTransition(void)
552 ToolkitTestApplication application;
553 tet_infoline(" UtcDaliCubeTransitionFoldEffectStartTransition ");
555 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
556 Texture texture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 40, 40 );
557 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
558 foldEffect.SetSize( VIEW_AREA_SIZE );
559 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
560 foldEffect.SetCurrentTexture( texture );
561 foldEffect.SetTargetTexture( texture );
563 Stage::GetCurrent().Add( foldEffect );
565 application.SendNotification();
566 application.Render();
568 foldEffect.StartTransition(true);
570 Actor cube0 = foldEffect.GetChildAt(0).GetChildAt(0);
571 Actor cube1 = foldEffect.GetChildAt(0).GetChildAt(1);
573 //check the cube rotation value and color values just before the end of different transitions
574 Wait( application, TRANSITION_BEFORE_END_DURATION );
575 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
576 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
577 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
578 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
580 foldEffect.SetTargetTexture( texture );
581 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
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 );
589 foldEffect.SetTargetTexture( texture );
590 foldEffect.StartTransition(false);
591 Wait( application, TRANSITION_BEFORE_END_DURATION );
592 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
593 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
594 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
595 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(),FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
597 foldEffect.SetTargetTexture( texture );
598 foldEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
599 Wait( application, TRANSITION_BEFORE_END_DURATION );
600 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
601 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
602 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
603 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
607 int UtcDaliCubeTransitionEffectSignalTransitionCompleted(void)
609 ToolkitTestApplication application;
610 tet_infoline(" UtcDaliCubeTransitionEffectSignalTransitionCompleted ");
612 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
613 Texture firstTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 30, 30 );
614 Texture secondTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 20, 20 );
615 Texture thirdTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 40, 40 );
617 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
618 waveEffect.SetSize( VIEW_AREA_SIZE );
619 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
620 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
621 Stage::GetCurrent().Add( waveEffect );
623 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
624 crossEffect.SetSize( VIEW_AREA_SIZE );
625 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
626 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
627 Stage::GetCurrent().Add( crossEffect );
629 CubeTransitionEffect foldEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
630 foldEffect.SetSize( VIEW_AREA_SIZE );
631 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
632 Stage::GetCurrent().Add( foldEffect );
634 bool signalVerified = false;
635 CubeTransitionEffect currentEffect;
636 Texture actorTransitTo;
637 TransitionCompletedCallback callback(signalVerified, currentEffect, actorTransitTo);
638 waveEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
639 crossEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
640 foldEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
642 //check that the wave effect is used to transit to secondTexture
643 currentEffect = waveEffect;
644 actorTransitTo = secondTexture;
645 waveEffect.SetCurrentTexture( firstTexture );
646 waveEffect.SetTargetTexture( secondTexture );
647 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
648 Wait( application, TRANSITION_DURATION );
649 DALI_TEST_CHECK(callback.mSignalVerified);
652 //check that the wave effect is used to transit to thirdTexture
653 actorTransitTo = thirdTexture;
654 waveEffect.SetTargetTexture( thirdTexture );
655 waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
656 Wait( application, TRANSITION_DURATION );
657 DALI_TEST_CHECK(callback.mSignalVerified);
660 //check that the cross effect is used to transit to secondTexture
661 currentEffect = crossEffect;
662 actorTransitTo = secondTexture;
663 crossEffect.SetCurrentTexture( thirdTexture );
664 crossEffect.SetTargetTexture( secondTexture );
665 crossEffect.StartTransition(true);
666 Wait( application, TRANSITION_DURATION );
667 DALI_TEST_CHECK(callback.mSignalVerified);
670 //check that the cross effect is used to transit to firstTexture
671 actorTransitTo = firstTexture;
672 crossEffect.SetTargetTexture( firstTexture );
673 crossEffect.StartTransition(false);
674 Wait( application, TRANSITION_DURATION );
675 DALI_TEST_CHECK(callback.mSignalVerified);
678 //check that the fold effect is used to transit to secondTexture
679 currentEffect = foldEffect;
680 actorTransitTo = secondTexture;
681 foldEffect.SetCurrentTexture( firstTexture );
682 foldEffect.SetTargetTexture( secondTexture );
683 foldEffect.StartTransition();
684 Wait( application, TRANSITION_DURATION );
685 DALI_TEST_CHECK( callback.mSignalVerified );
688 //check that the fold effect is used to transit to thirdTexture
689 actorTransitTo = thirdTexture;
690 foldEffect.SetTargetTexture( thirdTexture );
691 foldEffect.StartTransition( false );
692 Wait( application, TRANSITION_DURATION );
693 DALI_TEST_CHECK( callback.mSignalVerified );
697 int UtcDaliCubeTransitionEffectPauseResumeTransition(void)
699 ToolkitTestApplication application;
700 tet_infoline(" UtcDaliCubeTransitionEffectPauseResumeTransition ");
702 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
703 Texture firstTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 30, 30 );
704 Texture secondTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 20, 20 );
706 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
707 waveEffect.SetSize( VIEW_AREA_SIZE );
708 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
709 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
710 Stage::GetCurrent().Add( waveEffect );
712 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
713 crossEffect.SetSize( VIEW_AREA_SIZE );
714 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
715 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
716 Stage::GetCurrent().Add( crossEffect );
718 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
719 foldEffect.SetSize( VIEW_AREA_SIZE );
720 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
721 Stage::GetCurrent().Add( foldEffect );
723 bool signalVerified = false;
724 CubeTransitionEffect currentEffect;
725 Texture actorTransitTo;
726 TransitionCompletedCallback callback(signalVerified, currentEffect, actorTransitTo);
727 waveEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
728 crossEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
729 foldEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
731 currentEffect = waveEffect;
732 actorTransitTo = secondTexture;
733 waveEffect.SetCurrentTexture( firstTexture );
734 waveEffect.SetTargetTexture( secondTexture );
735 // start transition; transit for 0.5*duration; pause for 0.5*duration;
736 // resume for 0.25*duration; pause for 0.25*duration; resume for another 0.25*duration;
737 // only until now the transition finished signal can be received
738 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
739 Wait( application, TRANSITION_DURATION*0.5f );
740 DALI_TEST_CHECK(!callback.mSignalVerified);
741 waveEffect.PauseTransition();
742 Wait( application, TRANSITION_DURATION*0.5f );
743 DALI_TEST_CHECK(!callback.mSignalVerified);
744 waveEffect.ResumeTransition();
745 Wait( application, TRANSITION_DURATION*0.25f );
746 DALI_TEST_CHECK(!callback.mSignalVerified);
747 waveEffect.PauseTransition();
748 Wait( application, TRANSITION_DURATION*0.25f );
749 DALI_TEST_CHECK(!callback.mSignalVerified);
750 waveEffect.ResumeTransition();
751 Wait( application, TRANSITION_DURATION*0.25f );
752 DALI_TEST_CHECK(callback.mSignalVerified);
755 currentEffect = crossEffect;
756 actorTransitTo = firstTexture;
757 crossEffect.SetCurrentTexture( secondTexture );
758 crossEffect.SetTargetTexture( firstTexture );
759 // start transition; transit for 0.25*duration; pause for 0.2*duration;
760 // resume for 0.5*duration; pause for 0.2*duration; resume for another 0.25*duration;
761 // only until now the transition finished signal can be received
762 crossEffect.StartTransition(false);
763 Wait( application, TRANSITION_DURATION*0.25f );
764 DALI_TEST_CHECK(!callback.mSignalVerified);
765 crossEffect.PauseTransition();
766 Wait( application, TRANSITION_DURATION*0.2f );
767 DALI_TEST_CHECK(!callback.mSignalVerified);
768 crossEffect.ResumeTransition();
769 Wait( application, TRANSITION_DURATION*0.5f );
770 DALI_TEST_CHECK(!callback.mSignalVerified);
771 crossEffect.PauseTransition();
772 Wait( application, TRANSITION_DURATION*0.2f );
773 DALI_TEST_CHECK(!callback.mSignalVerified);
774 crossEffect.ResumeTransition();
775 Wait( application, TRANSITION_DURATION*0.25f );
776 DALI_TEST_CHECK(callback.mSignalVerified);
779 currentEffect = foldEffect;
780 actorTransitTo = secondTexture;
781 foldEffect.SetCurrentTexture( firstTexture );
782 foldEffect.SetTargetTexture( secondTexture );
783 // start transition; transit for 0.5*duration; pause for 0.5*duration;
784 // resume for 0.25*duration; pause for 0.25*duration; resume for another 0.25*duration;
785 // only until now the transition finished signal can be received
786 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
787 Wait( application, TRANSITION_DURATION*0.5f );
788 DALI_TEST_CHECK(!callback.mSignalVerified);
789 foldEffect.PauseTransition();
790 Wait( application, TRANSITION_DURATION*0.5f );
791 DALI_TEST_CHECK(!callback.mSignalVerified);
792 foldEffect.ResumeTransition();
793 Wait( application, TRANSITION_DURATION*0.25f );
794 DALI_TEST_CHECK(!callback.mSignalVerified);
795 foldEffect.PauseTransition();
796 Wait( application, TRANSITION_DURATION*0.25f );
797 DALI_TEST_CHECK(!callback.mSignalVerified);
798 foldEffect.ResumeTransition();
799 Wait( application, TRANSITION_DURATION*0.25f );
800 DALI_TEST_CHECK(callback.mSignalVerified);
804 int UtcDaliCubeTransitionWaveEffectStopTransition(void)
806 ToolkitTestApplication application;
807 tet_infoline(" UtcDaliCubeTransitionWaveEffectStopTransition ");
809 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
810 Texture firstTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 30, 30 );
811 Texture secondTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 20, 20 );
813 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
814 waveEffect.SetSize( VIEW_AREA_SIZE );
815 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
816 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
817 waveEffect.SetCurrentTexture( firstTexture );
818 waveEffect.SetTargetTexture( secondTexture );
820 Stage::GetCurrent().Add( waveEffect );
822 application.SendNotification();
823 application.Render();
825 waveEffect.StartTransition(true);
827 Actor cube = waveEffect.GetChildAt(0).GetChildAt(0);
829 //check the cube rotation value and color values reset after stopping different transitions in the middle
830 Wait( application, TRANSITION_DURATION*0.2f );
831 waveEffect.StopTransition();
832 application.SendNotification();
833 application.Render(RENDER_FRAME_INTERVAL);
834 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
835 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
836 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
838 waveEffect.SetTargetTexture( firstTexture );
839 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
840 Wait( application, TRANSITION_DURATION*0.4f );
841 waveEffect.StopTransition();
842 application.SendNotification();
843 application.Render(RENDER_FRAME_INTERVAL);
844 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
845 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
846 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
848 waveEffect.SetTargetTexture( secondTexture );
849 waveEffect.StartTransition(false);
850 Wait( application, TRANSITION_DURATION*0.6f );
851 waveEffect.StopTransition();
852 application.SendNotification();
853 application.Render(RENDER_FRAME_INTERVAL);
854 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
855 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
856 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
858 waveEffect.SetTargetTexture( firstTexture );
859 waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
860 Wait( application, TRANSITION_DURATION*0.8f );
861 waveEffect.StopTransition();
862 application.SendNotification();
863 application.Render(RENDER_FRAME_INTERVAL);
864 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
865 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
866 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
870 int UtcDaliCubeTransitionCrossEffectStopTransition(void)
872 ToolkitTestApplication application;
873 tet_infoline(" UtcDaliCubeTransitionCrossEffectStopTransition ");
875 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
876 Texture firstTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 30, 30 );
877 Texture secondTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 20, 20 );
879 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
880 crossEffect.SetSize( VIEW_AREA_SIZE );
881 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
882 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
883 crossEffect.SetCurrentTexture( firstTexture );
884 crossEffect.SetTargetTexture( secondTexture );
886 Stage::GetCurrent().Add( crossEffect );
888 application.SendNotification();
889 application.Render();
891 crossEffect.StartTransition(true);
893 Actor cube0 = crossEffect.GetChildAt(0).GetChildAt(0);
894 Actor cube1 = crossEffect.GetChildAt(0).GetChildAt(1);
896 //check the cube rotation values and color values reset after stop the different transitions in the middle
897 Wait( application, TRANSITION_DURATION*0.2f );
898 crossEffect.StopTransition();
899 application.SendNotification();
900 application.Render(RENDER_FRAME_INTERVAL);
901 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
902 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
903 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
904 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
906 crossEffect.SetTargetTexture( firstTexture );
907 crossEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
908 Wait( application, TRANSITION_DURATION*0.4f );
909 crossEffect.StopTransition();
910 application.SendNotification();
911 application.Render(RENDER_FRAME_INTERVAL);
912 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
913 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
914 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
915 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
917 crossEffect.SetTargetTexture( secondTexture );
918 crossEffect.StartTransition(false);
919 Wait( application, TRANSITION_DURATION*0.6f );
920 crossEffect.StopTransition();
921 application.SendNotification();
922 application.Render(RENDER_FRAME_INTERVAL);
923 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
924 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
925 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
926 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
928 crossEffect.SetTargetTexture( firstTexture );
929 crossEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
930 Wait( application, TRANSITION_DURATION*0.8f );
931 crossEffect.StopTransition();
932 application.SendNotification();
933 application.Render(RENDER_FRAME_INTERVAL);
934 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
935 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
936 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
937 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
941 int UtcDaliCubeTransitionFoldEffectStopTransition(void)
943 ToolkitTestApplication application;
944 tet_infoline(" UtcDaliCubeTransitionFoldEffectStopTransition ");
946 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
947 Texture firstTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 30, 30 );
948 Texture secondTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 20, 20 );
950 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
951 foldEffect.SetSize( VIEW_AREA_SIZE );
952 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
953 foldEffect.SetCurrentTexture( firstTexture );
954 foldEffect.SetTargetTexture( secondTexture );
956 Stage::GetCurrent().Add( foldEffect );
958 application.SendNotification();
959 application.Render();
961 foldEffect.StartTransition(true);
963 Actor cube0 = foldEffect.GetChildAt(0).GetChildAt(0);
964 Actor cube1 = foldEffect.GetChildAt(0).GetChildAt(1);
966 //check the cube rotation values and color values after stop the different transitions in the middle
967 Wait( application, TRANSITION_DURATION*0.2f );
968 foldEffect.StopTransition();
969 application.SendNotification();
970 application.Render(RENDER_FRAME_INTERVAL);
972 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
973 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
974 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
975 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
977 foldEffect.SetTargetTexture( firstTexture );
978 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
979 Wait( application, TRANSITION_DURATION*0.4f );
980 foldEffect.StopTransition();
981 application.SendNotification();
982 application.Render(RENDER_FRAME_INTERVAL);
983 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
984 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
985 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
986 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
988 foldEffect.SetTargetTexture( secondTexture );
989 foldEffect.StartTransition(false);
990 Wait( application, TRANSITION_DURATION*0.6f );
991 foldEffect.StopTransition();
992 application.SendNotification();
993 application.Render(RENDER_FRAME_INTERVAL);
994 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
995 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
996 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
997 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
999 foldEffect.SetTargetTexture( firstTexture );
1000 foldEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
1001 Wait( application, TRANSITION_DURATION*0.8f );
1002 foldEffect.StopTransition();
1003 application.SendNotification();
1004 application.Render(RENDER_FRAME_INTERVAL);
1005 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
1006 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
1007 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
1008 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );