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>
27 #include <dali/devel-api/adaptor-framework/image-loading.h>
28 #include <dali/devel-api/adaptor-framework/pixel-buffer.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 Devel::PixelBuffer pixelBuffer = LoadImageFromFile(TEST_RESOURCE_DIR "/gallery-small-1.jpg");
435 PixelData pixelData = Devel::PixelBuffer::Convert( pixelBuffer );
436 Texture texture = Texture::New( TextureType::TEXTURE_2D, pixelData.GetPixelFormat(), pixelData.GetWidth(), pixelData.GetHeight() );
437 texture.Upload( pixelData );
439 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
440 waveEffect.SetSize( VIEW_AREA_SIZE );
441 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
442 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
443 waveEffect.SetCurrentTexture( texture );
445 Stage::GetCurrent().Add( waveEffect );
447 application.SendNotification();
448 application.Render();
450 waveEffect.StartTransition( true );
452 Actor cube = waveEffect.GetChildAt(0).GetChildAt(0);
454 //check the cube rotation value and color values just before the end of different transitions
455 waveEffect.SetTargetTexture( texture );
456 Wait( application, TRANSITION_BEFORE_END_DURATION );
457 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
458 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
459 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
461 waveEffect.SetTargetTexture( texture );
462 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
463 Wait( application, TRANSITION_BEFORE_END_DURATION );
464 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
465 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
466 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
468 waveEffect.SetTargetTexture( texture );
469 waveEffect.StartTransition(false);
470 Wait( application, TRANSITION_BEFORE_END_DURATION );
471 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
472 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
473 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
475 waveEffect.SetTargetTexture( texture );
476 waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
477 Wait( application, TRANSITION_BEFORE_END_DURATION );
478 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
479 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
480 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
484 int UtcDaliCubeTransitionCrossEffectStartTransition(void)
486 ToolkitTestApplication application;
487 tet_infoline(" UtcDaliCubeTransitionCrossEffectStartTransition ");
489 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
491 Devel::PixelBuffer pixelBuffer = LoadImageFromFile(TEST_RESOURCE_DIR "/gallery-small-1.jpg");
492 PixelData pixelData = Devel::PixelBuffer::Convert( pixelBuffer );
493 Texture texture = Texture::New( TextureType::TEXTURE_2D, pixelData.GetPixelFormat(), pixelData.GetWidth(), pixelData.GetHeight() );
494 texture.Upload( pixelData );
496 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
497 crossEffect.SetSize( VIEW_AREA_SIZE );
498 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
499 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
500 crossEffect.SetCurrentTexture( texture );
501 crossEffect.SetTargetTexture( texture );
503 Stage::GetCurrent().Add( crossEffect );
505 application.SendNotification();
506 application.Render();
508 crossEffect.StartTransition(true);
510 Actor cube0 = crossEffect.GetChildAt(0).GetChildAt(0);
511 Actor cube1 = crossEffect.GetChildAt(0).GetChildAt(1);
513 //check the cube rotation value and color values just before the end of different transitions
514 Wait( application, TRANSITION_BEFORE_END_DURATION );
515 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
516 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::XAXIS), EPISILON, TEST_LOCATION );
517 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
518 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
521 crossEffect.SetTargetTexture( texture );
522 crossEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
523 Wait( application, TRANSITION_BEFORE_END_DURATION );
524 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
525 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::XAXIS), EPISILON, TEST_LOCATION );
526 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
527 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
530 crossEffect.SetTargetTexture( texture );
531 crossEffect.StartTransition(false);
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 );
538 crossEffect.SetTargetTexture( texture );
539 crossEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
540 Wait( application, TRANSITION_BEFORE_END_DURATION );
541 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
542 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::XAXIS), EPISILON, TEST_LOCATION );
543 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
544 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
548 int UtcDaliCubeTransitionFoldEffectStartTransition(void)
550 ToolkitTestApplication application;
551 tet_infoline(" UtcDaliCubeTransitionFoldEffectStartTransition ");
553 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
554 Texture texture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 40, 40 );
555 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
556 foldEffect.SetSize( VIEW_AREA_SIZE );
557 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
558 foldEffect.SetCurrentTexture( texture );
559 foldEffect.SetTargetTexture( texture );
561 Stage::GetCurrent().Add( foldEffect );
563 application.SendNotification();
564 application.Render();
566 foldEffect.StartTransition(true);
568 Actor cube0 = foldEffect.GetChildAt(0).GetChildAt(0);
569 Actor cube1 = foldEffect.GetChildAt(0).GetChildAt(1);
571 //check the cube rotation value and color values just before the end of different transitions
572 Wait( application, TRANSITION_BEFORE_END_DURATION );
573 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
574 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
575 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
576 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
578 foldEffect.SetTargetTexture( texture );
579 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
580 Wait( application, TRANSITION_BEFORE_END_DURATION );
581 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
582 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
583 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
584 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
587 foldEffect.SetTargetTexture( texture );
588 foldEffect.StartTransition(false);
589 Wait( application, TRANSITION_BEFORE_END_DURATION );
590 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
591 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
592 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
593 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(),FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
595 foldEffect.SetTargetTexture( texture );
596 foldEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
597 Wait( application, TRANSITION_BEFORE_END_DURATION );
598 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
599 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( -Dali::ANGLE_90, Vector3::YAXIS), EPISILON, TEST_LOCATION );
600 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), HALF_BRIGHTNESS, EPISILON, TEST_LOCATION );
601 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), FULL_BRIGHTNESS, EPISILON, TEST_LOCATION );
605 int UtcDaliCubeTransitionEffectSignalTransitionCompleted(void)
607 ToolkitTestApplication application;
608 tet_infoline(" UtcDaliCubeTransitionEffectSignalTransitionCompleted ");
610 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
611 Texture firstTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 30, 30 );
612 Texture secondTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 20, 20 );
613 Texture thirdTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 40, 40 );
615 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
616 waveEffect.SetSize( VIEW_AREA_SIZE );
617 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
618 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
619 Stage::GetCurrent().Add( waveEffect );
621 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
622 crossEffect.SetSize( VIEW_AREA_SIZE );
623 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
624 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
625 Stage::GetCurrent().Add( crossEffect );
627 CubeTransitionEffect foldEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
628 foldEffect.SetSize( VIEW_AREA_SIZE );
629 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
630 Stage::GetCurrent().Add( foldEffect );
632 bool signalVerified = false;
633 CubeTransitionEffect currentEffect;
634 Texture actorTransitTo;
635 TransitionCompletedCallback callback(signalVerified, currentEffect, actorTransitTo);
636 waveEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
637 crossEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
638 foldEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
640 //check that the wave effect is used to transit to secondTexture
641 currentEffect = waveEffect;
642 actorTransitTo = secondTexture;
643 waveEffect.SetCurrentTexture( firstTexture );
644 waveEffect.SetTargetTexture( secondTexture );
645 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
646 Wait( application, TRANSITION_DURATION );
647 DALI_TEST_CHECK(callback.mSignalVerified);
650 //check that the wave effect is used to transit to thirdTexture
651 actorTransitTo = thirdTexture;
652 waveEffect.SetTargetTexture( thirdTexture );
653 waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
654 Wait( application, TRANSITION_DURATION );
655 DALI_TEST_CHECK(callback.mSignalVerified);
658 //check that the cross effect is used to transit to secondTexture
659 currentEffect = crossEffect;
660 actorTransitTo = secondTexture;
661 crossEffect.SetCurrentTexture( thirdTexture );
662 crossEffect.SetTargetTexture( secondTexture );
663 crossEffect.StartTransition(true);
664 Wait( application, TRANSITION_DURATION );
665 DALI_TEST_CHECK(callback.mSignalVerified);
668 //check that the cross effect is used to transit to firstTexture
669 actorTransitTo = firstTexture;
670 crossEffect.SetTargetTexture( firstTexture );
671 crossEffect.StartTransition(false);
672 Wait( application, TRANSITION_DURATION );
673 DALI_TEST_CHECK(callback.mSignalVerified);
676 //check that the fold effect is used to transit to secondTexture
677 currentEffect = foldEffect;
678 actorTransitTo = secondTexture;
679 foldEffect.SetCurrentTexture( firstTexture );
680 foldEffect.SetTargetTexture( secondTexture );
681 foldEffect.StartTransition();
682 Wait( application, TRANSITION_DURATION );
683 DALI_TEST_CHECK( callback.mSignalVerified );
686 //check that the fold effect is used to transit to thirdTexture
687 actorTransitTo = thirdTexture;
688 foldEffect.SetTargetTexture( thirdTexture );
689 foldEffect.StartTransition( false );
690 Wait( application, TRANSITION_DURATION );
691 DALI_TEST_CHECK( callback.mSignalVerified );
695 int UtcDaliCubeTransitionEffectPauseResumeTransition(void)
697 ToolkitTestApplication application;
698 tet_infoline(" UtcDaliCubeTransitionEffectPauseResumeTransition ");
700 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
701 Texture firstTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 30, 30 );
702 Texture secondTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 20, 20 );
704 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
705 waveEffect.SetSize( VIEW_AREA_SIZE );
706 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
707 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
708 Stage::GetCurrent().Add( waveEffect );
710 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
711 crossEffect.SetSize( VIEW_AREA_SIZE );
712 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
713 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
714 Stage::GetCurrent().Add( crossEffect );
716 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
717 foldEffect.SetSize( VIEW_AREA_SIZE );
718 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
719 Stage::GetCurrent().Add( foldEffect );
721 bool signalVerified = false;
722 CubeTransitionEffect currentEffect;
723 Texture actorTransitTo;
724 TransitionCompletedCallback callback(signalVerified, currentEffect, actorTransitTo);
725 waveEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
726 crossEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
727 foldEffect.TransitionCompletedSignal().Connect( &callback, &TransitionCompletedCallback::Callback );
729 currentEffect = waveEffect;
730 actorTransitTo = secondTexture;
731 waveEffect.SetCurrentTexture( firstTexture );
732 waveEffect.SetTargetTexture( secondTexture );
733 // start transition; transit for 0.5*duration; pause for 0.5*duration;
734 // resume for 0.25*duration; pause for 0.25*duration; resume for another 0.25*duration;
735 // only until now the transition finished signal can be received
736 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
737 Wait( application, TRANSITION_DURATION*0.5f );
738 DALI_TEST_CHECK(!callback.mSignalVerified);
739 waveEffect.PauseTransition();
740 Wait( application, TRANSITION_DURATION*0.5f );
741 DALI_TEST_CHECK(!callback.mSignalVerified);
742 waveEffect.ResumeTransition();
743 Wait( application, TRANSITION_DURATION*0.25f );
744 DALI_TEST_CHECK(!callback.mSignalVerified);
745 waveEffect.PauseTransition();
746 Wait( application, TRANSITION_DURATION*0.25f );
747 DALI_TEST_CHECK(!callback.mSignalVerified);
748 waveEffect.ResumeTransition();
749 Wait( application, TRANSITION_DURATION*0.25f );
750 DALI_TEST_CHECK(callback.mSignalVerified);
753 currentEffect = crossEffect;
754 actorTransitTo = firstTexture;
755 crossEffect.SetCurrentTexture( secondTexture );
756 crossEffect.SetTargetTexture( firstTexture );
757 // start transition; transit for 0.25*duration; pause for 0.2*duration;
758 // resume for 0.5*duration; pause for 0.2*duration; resume for another 0.25*duration;
759 // only until now the transition finished signal can be received
760 crossEffect.StartTransition(false);
761 Wait( application, TRANSITION_DURATION*0.25f );
762 DALI_TEST_CHECK(!callback.mSignalVerified);
763 crossEffect.PauseTransition();
764 Wait( application, TRANSITION_DURATION*0.2f );
765 DALI_TEST_CHECK(!callback.mSignalVerified);
766 crossEffect.ResumeTransition();
767 Wait( application, TRANSITION_DURATION*0.5f );
768 DALI_TEST_CHECK(!callback.mSignalVerified);
769 crossEffect.PauseTransition();
770 Wait( application, TRANSITION_DURATION*0.2f );
771 DALI_TEST_CHECK(!callback.mSignalVerified);
772 crossEffect.ResumeTransition();
773 Wait( application, TRANSITION_DURATION*0.25f );
774 DALI_TEST_CHECK(callback.mSignalVerified);
777 currentEffect = foldEffect;
778 actorTransitTo = secondTexture;
779 foldEffect.SetCurrentTexture( firstTexture );
780 foldEffect.SetTargetTexture( secondTexture );
781 // start transition; transit for 0.5*duration; pause for 0.5*duration;
782 // resume for 0.25*duration; pause for 0.25*duration; resume for another 0.25*duration;
783 // only until now the transition finished signal can be received
784 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
785 Wait( application, TRANSITION_DURATION*0.5f );
786 DALI_TEST_CHECK(!callback.mSignalVerified);
787 foldEffect.PauseTransition();
788 Wait( application, TRANSITION_DURATION*0.5f );
789 DALI_TEST_CHECK(!callback.mSignalVerified);
790 foldEffect.ResumeTransition();
791 Wait( application, TRANSITION_DURATION*0.25f );
792 DALI_TEST_CHECK(!callback.mSignalVerified);
793 foldEffect.PauseTransition();
794 Wait( application, TRANSITION_DURATION*0.25f );
795 DALI_TEST_CHECK(!callback.mSignalVerified);
796 foldEffect.ResumeTransition();
797 Wait( application, TRANSITION_DURATION*0.25f );
798 DALI_TEST_CHECK(callback.mSignalVerified);
802 int UtcDaliCubeTransitionWaveEffectStopTransition(void)
804 ToolkitTestApplication application;
805 tet_infoline(" UtcDaliCubeTransitionWaveEffectStopTransition ");
807 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
808 Texture firstTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 30, 30 );
809 Texture secondTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 20, 20 );
811 CubeTransitionEffect waveEffect = CubeTransitionWaveEffect::New( NUM_ROWS, NUM_COLUMNS );
812 waveEffect.SetSize( VIEW_AREA_SIZE );
813 waveEffect.SetTransitionDuration( TRANSITION_DURATION );
814 waveEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
815 waveEffect.SetCurrentTexture( firstTexture );
816 waveEffect.SetTargetTexture( secondTexture );
818 Stage::GetCurrent().Add( waveEffect );
820 application.SendNotification();
821 application.Render();
823 waveEffect.StartTransition(true);
825 Actor cube = waveEffect.GetChildAt(0).GetChildAt(0);
827 //check the cube rotation value and color values reset after stopping different transitions in the middle
828 Wait( application, TRANSITION_DURATION*0.2f );
829 waveEffect.StopTransition();
830 application.SendNotification();
831 application.Render(RENDER_FRAME_INTERVAL);
832 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
833 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
834 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
836 waveEffect.SetTargetTexture( firstTexture );
837 waveEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
838 Wait( application, TRANSITION_DURATION*0.4f );
839 waveEffect.StopTransition();
840 application.SendNotification();
841 application.Render(RENDER_FRAME_INTERVAL);
842 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
843 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
844 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
846 waveEffect.SetTargetTexture( secondTexture );
847 waveEffect.StartTransition(false);
848 Wait( application, TRANSITION_DURATION*0.6f );
849 waveEffect.StopTransition();
850 application.SendNotification();
851 application.Render(RENDER_FRAME_INTERVAL);
852 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
853 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
854 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
856 waveEffect.SetTargetTexture( firstTexture );
857 waveEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
858 Wait( application, TRANSITION_DURATION*0.8f );
859 waveEffect.StopTransition();
860 application.SendNotification();
861 application.Render(RENDER_FRAME_INTERVAL);
862 DALI_TEST_EQUALS( cube.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
863 DALI_TEST_EQUALS( cube.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
864 DALI_TEST_EQUALS( cube.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
868 int UtcDaliCubeTransitionCrossEffectStopTransition(void)
870 ToolkitTestApplication application;
871 tet_infoline(" UtcDaliCubeTransitionCrossEffectStopTransition ");
873 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
874 Texture firstTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 30, 30 );
875 Texture secondTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 20, 20 );
877 CubeTransitionEffect crossEffect = CubeTransitionCrossEffect::New( NUM_ROWS, NUM_COLUMNS );
878 crossEffect.SetSize( VIEW_AREA_SIZE );
879 crossEffect.SetTransitionDuration( TRANSITION_DURATION );
880 crossEffect.SetCubeDisplacement( CUBE_DISPLACEMENT );
881 crossEffect.SetCurrentTexture( firstTexture );
882 crossEffect.SetTargetTexture( secondTexture );
884 Stage::GetCurrent().Add( crossEffect );
886 application.SendNotification();
887 application.Render();
889 crossEffect.StartTransition(true);
891 Actor cube0 = crossEffect.GetChildAt(0).GetChildAt(0);
892 Actor cube1 = crossEffect.GetChildAt(0).GetChildAt(1);
894 //check the cube rotation values and color values reset after stop the different transitions in the middle
895 Wait( application, TRANSITION_DURATION*0.2f );
896 crossEffect.StopTransition();
897 application.SendNotification();
898 application.Render(RENDER_FRAME_INTERVAL);
899 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
900 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
901 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
902 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
904 crossEffect.SetTargetTexture( firstTexture );
905 crossEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
906 Wait( application, TRANSITION_DURATION*0.4f );
907 crossEffect.StopTransition();
908 application.SendNotification();
909 application.Render(RENDER_FRAME_INTERVAL);
910 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
911 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
912 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
913 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
915 crossEffect.SetTargetTexture( secondTexture );
916 crossEffect.StartTransition(false);
917 Wait( application, TRANSITION_DURATION*0.6f );
918 crossEffect.StopTransition();
919 application.SendNotification();
920 application.Render(RENDER_FRAME_INTERVAL);
921 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
922 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::ZERO), FLT_EPISILON, TEST_LOCATION );
923 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
924 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
926 crossEffect.SetTargetTexture( firstTexture );
927 crossEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
928 Wait( application, TRANSITION_DURATION*0.8f );
929 crossEffect.StopTransition();
930 application.SendNotification();
931 application.Render(RENDER_FRAME_INTERVAL);
932 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
933 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
934 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
935 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
939 int UtcDaliCubeTransitionFoldEffectStopTransition(void)
941 ToolkitTestApplication application;
942 tet_infoline(" UtcDaliCubeTransitionFoldEffectStopTransition ");
944 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
945 Texture firstTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 30, 30 );
946 Texture secondTexture = Texture::New( TextureType::TEXTURE_2D, Pixel::RGBA8888, 20, 20 );
948 CubeTransitionEffect foldEffect = CubeTransitionFoldEffect::New( NUM_ROWS, NUM_COLUMNS );
949 foldEffect.SetSize( VIEW_AREA_SIZE );
950 foldEffect.SetTransitionDuration( TRANSITION_DURATION );
951 foldEffect.SetCurrentTexture( firstTexture );
952 foldEffect.SetTargetTexture( secondTexture );
954 Stage::GetCurrent().Add( foldEffect );
956 application.SendNotification();
957 application.Render();
959 foldEffect.StartTransition(true);
961 Actor cube0 = foldEffect.GetChildAt(0).GetChildAt(0);
962 Actor cube1 = foldEffect.GetChildAt(0).GetChildAt(1);
964 //check the cube rotation values and color values after stop the different transitions in the middle
965 Wait( application, TRANSITION_DURATION*0.2f );
966 foldEffect.StopTransition();
967 application.SendNotification();
968 application.Render(RENDER_FRAME_INTERVAL);
970 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
971 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
972 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
973 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
975 foldEffect.SetTargetTexture( firstTexture );
976 foldEffect.StartTransition(PAN_POSITION1, PAN_DISPLACEMENT1);
977 Wait( application, TRANSITION_DURATION*0.4f );
978 foldEffect.StopTransition();
979 application.SendNotification();
980 application.Render(RENDER_FRAME_INTERVAL);
981 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
982 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
983 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
984 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
986 foldEffect.SetTargetTexture( secondTexture );
987 foldEffect.StartTransition(false);
988 Wait( application, TRANSITION_DURATION*0.6f );
989 foldEffect.StopTransition();
990 application.SendNotification();
991 application.Render(RENDER_FRAME_INTERVAL);
992 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
993 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::XAXIS), FLT_EPISILON, TEST_LOCATION );
994 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
995 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
997 foldEffect.SetTargetTexture( firstTexture );
998 foldEffect.StartTransition(PAN_POSITION2, PAN_DISPLACEMENT2);
999 Wait( application, TRANSITION_DURATION*0.8f );
1000 foldEffect.StopTransition();
1001 application.SendNotification();
1002 application.Render(RENDER_FRAME_INTERVAL);
1003 DALI_TEST_EQUALS( cube1.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
1004 DALI_TEST_EQUALS( cube0.GetCurrentOrientation(), Quaternion( Dali::ANGLE_0, Vector3::YAXIS), FLT_EPISILON, TEST_LOCATION );
1005 DALI_TEST_EQUALS( cube0.GetChildAt(0).GetCurrentColor(), FULL_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );
1006 DALI_TEST_EQUALS( cube0.GetChildAt(1).GetCurrentColor(), HALF_BRIGHTNESS, FLT_EPISILON, TEST_LOCATION );