2 * Copyright (c) 2019 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.
22 #include <dali-toolkit-test-suite-utils.h>
23 #include <dali/integration-api/events/pan-gesture-event.h>
24 #include <dali-toolkit/devel-api/controls/page-turn-view/page-factory.h>
25 #include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-landscape-view.h>
26 #include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-portrait-view.h>
27 #include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-view.h>
30 using namespace Dali::Toolkit;
34 const int RENDER_FRAME_INTERVAL = 16; ///< Duration of each frame in ms. (at approx 60FPS)
35 const unsigned int TOTAL_PAGE_NUMBER = 20;
36 const Vector2 PAGE_SIZE( 300.f,400.f );
37 const Vector2 SPINE_SHADOW_PARAMETER( 60.0f, 30.0f );
39 static bool gObjectCreatedCallBackCalled;
40 static void TestCallback(BaseHandle handle)
42 gObjectCreatedCallBackCalled = true;
46 * Simulate time passed by.
48 * @note this will always process at least 1 frame (1/60 sec)
50 * @param application Test application instance
51 * @param duration Time to pass in milliseconds.
53 void Wait(ToolkitTestApplication& application, int duration = 0)
55 for(int i = 0; i <= ( duration / RENDER_FRAME_INTERVAL); i++)
57 application.SendNotification();
58 application.Render(RENDER_FRAME_INTERVAL);
62 // Generate a PanGestureEvent to send to Core
63 Integration::PanGestureEvent GeneratePan(
65 const Vector2& previousPosition,
66 const Vector2& currentPosition,
67 unsigned long timeDelta,
68 unsigned int numberOfTouches = 1)
70 Integration::PanGestureEvent pan(state);
72 pan.previousPosition = previousPosition;
73 pan.currentPosition = currentPosition;
74 pan.timeDelta = timeDelta;
75 pan.numberOfTouches = numberOfTouches;
81 * Helper to generate PanGestureEvent
83 * @param[in] application Application instance
84 * @param[in] state The Gesture State
85 * @param[in] pos The current position of touch.
87 static void SendPan(ToolkitTestApplication& application, Gesture::State state, const Vector2& pos)
91 if( (state == Gesture::Started) ||
92 (state == Gesture::Possible) )
98 application.ProcessEvent(GeneratePan(state, last, pos, RENDER_FRAME_INTERVAL));
104 static Vector2 PerformGestureDiagonalSwipe(ToolkitTestApplication& application, Vector2 start, Vector2 direction, int frames, bool toStart = true, bool toFinish = true)
106 // Now do a pan starting from (start) and heading (direction)
111 SendPan(application, Gesture::Possible, pos);
113 SendPan(application, Gesture::Started, pos);
117 for(int i = 0;i<frames;i++)
119 pos += direction; // Move in this direction
120 SendPan(application, Gesture::Continuing, pos);
126 pos += direction; // Move in this direction
127 SendPan(application, Gesture::Finished, pos);
135 //Functor to test whether PageTurnSignal / PagePanSignal is emitted
136 class PageSignalCallback : public Dali::ConnectionTracker
140 PageSignalCallback( bool& signalReceived, PageTurnView& view, unsigned int& pageIndex, bool& isForwards )
141 : mSignalVerified( signalReceived ),
143 mPageIndex( pageIndex ),
144 mIsTurningForwards( isForwards )
148 // callback to be connected to PageTurnSignal
149 void PageTurnSignalCallback( PageTurnView view, unsigned int pageIndex, bool isTurningForward )
151 tet_infoline( "Verifying PageTurnedSignal" );
153 if( mView == view && mPageIndex == pageIndex && mIsTurningForwards == isTurningForward )
155 mSignalVerified = true;
159 // callback to be connected to PagePanSignal
160 void PagePanSignalCallback( PageTurnView view )
162 tet_infoline( "Verifying PagePannedSignal" );
166 mSignalVerified = true;
172 mSignalVerified = false;
175 bool& mSignalVerified;
177 unsigned int& mPageIndex;
178 bool& mIsTurningForwards;
183 //Implementation of PageFactory for providing page actors to PageTurnView
184 class TestPageFactory : public PageFactory
188 TestPageFactory( bool returnValidTexture = true )
189 : mValidTexture( returnValidTexture )
191 mTotalPageNumber = TOTAL_PAGE_NUMBER;
195 * Query the number of pages available from the factory.
196 * The maximum available page has an ID of GetNumberOfPages()-1.
198 virtual unsigned int GetNumberOfPages()
200 return mTotalPageNumber;
204 * Create an texture to represent a page content.
205 * @param[in] pageId The ID of the page to create.
206 * @return An image, or an empty handle if the ID is out of range.
208 virtual Texture NewPage( unsigned int pageId )
212 return Texture::New( Dali::TextureType::TEXTURE_2D, Pixel::RGB888, 100, 100 );
214 return Texture(); // empty handle
218 unsigned int mTotalPageNumber;
224 void dali_page_turn_view_startup(void)
226 test_return_value = TET_UNDEF;
229 void dali_page_turn_view_cleanup(void)
231 test_return_value = TET_PASS;
234 int UtcDaliPageTurnPortraitViewNew(void)
236 ToolkitTestApplication application;
238 tet_infoline(" UtcDaliPageTurnViewNew ");
240 // Test default constructor
241 PageTurnView portraitView;
242 DALI_TEST_CHECK( !portraitView );
244 // Test object creation
245 TestPageFactory factory;
246 portraitView = PageTurnPortraitView::New( factory, PAGE_SIZE );
247 DALI_TEST_CHECK( portraitView );
249 //Additional check to ensure object is created by checking if it's registered
250 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
251 DALI_TEST_CHECK( registry );
253 gObjectCreatedCallBackCalled = false;
254 registry.ObjectCreatedSignal().Connect( &TestCallback );
256 TestPageFactory factory;
257 PageTurnView portraitView = PageTurnPortraitView::New( factory, PAGE_SIZE );
259 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
261 // Test copy constructor
262 PageTurnView viewCopy( portraitView );
263 DALI_TEST_CHECK( viewCopy );
267 handleView = portraitView;
268 PageTurnView downCastView = PageTurnView::DownCast( handleView );
269 DALI_TEST_CHECK( downCastView );
274 int UtcDaliPageTurnLandscapeViewNew(void)
276 ToolkitTestApplication application;
278 tet_infoline(" UtcDaliPageTurnViewNew ");
280 //Test default constructor
281 PageTurnView landscapeView;
282 DALI_TEST_CHECK( !landscapeView );
284 // Test object creation
285 TestPageFactory factory;
286 landscapeView = PageTurnLandscapeView::New( factory, PAGE_SIZE );
287 DALI_TEST_CHECK( landscapeView );
289 //Additional check to ensure object is created by checking if it's registered
290 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
291 DALI_TEST_CHECK( registry );
293 gObjectCreatedCallBackCalled = false;
294 registry.ObjectCreatedSignal().Connect( &TestCallback );
296 TestPageFactory factory;
297 PageTurnView landscapeView = PageTurnLandscapeView::New( factory, PAGE_SIZE );
299 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
301 // Test copy constructor
302 PageTurnView viewCopy( landscapeView );
303 DALI_TEST_CHECK( viewCopy );
307 handleView = landscapeView;
308 PageTurnView downCastView = PageTurnView::DownCast( handleView );
309 DALI_TEST_CHECK( downCastView );
314 int UtcDaliPageTurnPortraitViewCopyConstructorAndAssignment(void)
316 ToolkitTestApplication application;
318 tet_infoline(" UtcDaliPageTurnPortraitViewCopyConstructorAndAssignment ");
320 // Test default constructor
321 PageTurnPortraitView portraitView;
322 DALI_TEST_CHECK( !portraitView );
324 // Test object creation
325 TestPageFactory factory;
326 portraitView = PageTurnPortraitView::New( factory, PAGE_SIZE );
327 DALI_TEST_CHECK( portraitView );
329 // Test copy constructor
330 PageTurnPortraitView viewCopy( portraitView );
331 DALI_TEST_CHECK( viewCopy );
334 PageTurnPortraitView portraitView2;
335 portraitView2 = portraitView;
336 DALI_TEST_CHECK( portraitView2 );
337 DALI_TEST_CHECK( portraitView == portraitView2);
341 handleView = portraitView;
342 PageTurnPortraitView downCastView = PageTurnPortraitView::DownCast( handleView );
343 DALI_TEST_CHECK( downCastView );
348 int UtcDaliPageTurnLandscapeViewCopyConstructorAndAssignment(void)
350 ToolkitTestApplication application;
352 tet_infoline(" UtcDaliPageTurnLandscapeViewCopyConstructorAndAssignment ");
354 // Test default constructor
355 PageTurnLandscapeView landscapeView;
356 DALI_TEST_CHECK( !landscapeView );
358 // Test object creation
359 TestPageFactory factory;
360 landscapeView = PageTurnLandscapeView::New( factory, PAGE_SIZE );
361 DALI_TEST_CHECK( landscapeView );
363 // Test copy constructor
364 PageTurnLandscapeView viewCopy( landscapeView );
365 DALI_TEST_CHECK( viewCopy );
368 PageTurnLandscapeView landscapeView2;
369 landscapeView2 = landscapeView;
370 DALI_TEST_CHECK( landscapeView2 );
371 DALI_TEST_CHECK( landscapeView == landscapeView2);
375 handleView = landscapeView;
376 PageTurnLandscapeView downCastView = PageTurnLandscapeView::DownCast( handleView );
377 DALI_TEST_CHECK( downCastView );
382 int UtcDaliPageTurnViewSetGetProperty(void)
384 ToolkitTestApplication application;
386 tet_infoline(" UtcDaliPageTurnViewSetGetProperty ");
388 TestPageFactory factory;
389 PageTurnView landscapeView = PageTurnLandscapeView::New( factory, PAGE_SIZE );
390 DALI_TEST_CHECK( landscapeView );
392 Stage::GetCurrent().Add( landscapeView );
394 // Test "pageSize" property
395 DALI_TEST_CHECK( landscapeView.GetPropertyIndex("pageSize") == PageTurnView::Property::PAGE_SIZE );
396 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::PAGE_SIZE).Get<Vector2>(), PAGE_SIZE, TEST_LOCATION );
398 Vector2 newSize( PAGE_SIZE.x*0.75, PAGE_SIZE.y*0.5f );
399 landscapeView.SetProperty( PageTurnView::Property::PAGE_SIZE, newSize );
400 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::PAGE_SIZE).Get<Vector2>(), newSize, TEST_LOCATION );
402 DALI_TEST_EQUALS( Vector2(landscapeView.GetTargetSize()), Vector2(newSize.x*2.f, newSize.y), TEST_LOCATION);
404 landscapeView.SetProperty( PageTurnView::Property::PAGE_SIZE,newSize*1.5f);
405 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::PAGE_SIZE).Get<Vector2>(), newSize*1.5f, TEST_LOCATION );
407 DALI_TEST_EQUALS( Vector2(landscapeView.GetTargetSize()), Vector2(newSize.x*3.f, newSize.y*1.5f), TEST_LOCATION);
409 // Test "currentPageId" property
410 DALI_TEST_CHECK( landscapeView.GetPropertyIndex("currentPageId") == PageTurnView::Property::CURRENT_PAGE_ID );
411 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), 0, TEST_LOCATION );
413 int pageId = static_cast<int>(TOTAL_PAGE_NUMBER)/3;
414 landscapeView.SetProperty( PageTurnView::Property::CURRENT_PAGE_ID, pageId );
415 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), pageId, TEST_LOCATION );
417 landscapeView.SetProperty( PageTurnView::Property::CURRENT_PAGE_ID, pageId*2 );
418 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), pageId*2, TEST_LOCATION );
420 // Test "spinShadow" property
421 DALI_TEST_CHECK( landscapeView.GetPropertyIndex( "spineShadow" ) == PageTurnView::Property::SPINE_SHADOW );
422 landscapeView.SetProperty( PageTurnView::Property::SPINE_SHADOW, SPINE_SHADOW_PARAMETER );
423 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::SPINE_SHADOW).Get<Vector2>(), SPINE_SHADOW_PARAMETER, TEST_LOCATION );
425 landscapeView.SetProperty( PageTurnView::Property::SPINE_SHADOW, SPINE_SHADOW_PARAMETER*0.75f );
426 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::SPINE_SHADOW).Get<Vector2>(), SPINE_SHADOW_PARAMETER*0.75f, TEST_LOCATION );
431 int UtcDaliPageTurnPortraitViewSignals(void)
433 ToolkitTestApplication application;
435 tet_infoline(" UtcDaliPageTurnPortraitViewSignals ");
437 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
439 TestPageFactory factory;
440 Vector2 size = Stage::GetCurrent().GetSize();
441 PageTurnView portraitView = PageTurnPortraitView::New( factory, size );
442 portraitView.SetParentOrigin( ParentOrigin::CENTER );
443 Stage::GetCurrent().Add( portraitView );
446 application.SendNotification();
447 application.Render(RENDER_FRAME_INTERVAL);
449 // [0]: testing PageTurnStartedSignal; [1]: testing PageTurnFinishedSignal
450 // [2]: testing PagePanStartedSignal; [3]: testing PagePanFinishedSignal
451 bool signalVerified[4] = {false, false, false, false};
452 PageTurnView currentView;
453 unsigned int pageIndex;
454 bool isTurningForwards;
456 PageSignalCallback callbackTurnStarted( signalVerified[0], currentView, pageIndex, isTurningForwards );
457 portraitView.PageTurnStartedSignal().Connect( &callbackTurnStarted, &PageSignalCallback::PageTurnSignalCallback );
459 PageSignalCallback callbackTurnFinished( signalVerified[1], currentView, pageIndex, isTurningForwards );
460 portraitView.PageTurnFinishedSignal().Connect( &callbackTurnFinished, &PageSignalCallback::PageTurnSignalCallback );
462 PageSignalCallback callbackPanStarted( signalVerified[2], currentView, pageIndex, isTurningForwards );
463 portraitView.PagePanStartedSignal().Connect( &callbackPanStarted, &PageSignalCallback::PagePanSignalCallback );
465 PageSignalCallback callbackPanFinished( signalVerified[3], currentView, pageIndex, isTurningForwards );
466 portraitView.PagePanFinishedSignal().Connect( &callbackPanFinished, &PageSignalCallback::PagePanSignalCallback );
468 DALI_TEST_CHECK( !callbackTurnStarted.mSignalVerified );
469 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
470 DALI_TEST_CHECK( !callbackPanStarted.mSignalVerified );
471 DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified );
473 currentView = portraitView;
475 //-----Test 1: pan 10 frames from position(size * 0.75f) to position(size * 0.25f), page 0 will be turned forward----
477 isTurningForwards = true;
478 // Do a pan moving up diagonally.
479 Vector2 start = size * 0.75f;
480 Vector2 direction = -size*0.05f; //-size*0.5f/10.f;
482 DALI_TEST_EQUALS( portraitView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), 0, TEST_LOCATION );
483 PerformGestureDiagonalSwipe( application, start, direction, 5, true, false);
484 DALI_TEST_CHECK( callbackTurnStarted.mSignalVerified );
485 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
486 DALI_TEST_CHECK( callbackPanStarted.mSignalVerified );
487 DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified );
489 PerformGestureDiagonalSwipe( application, start+direction*5.f, direction, 5, false, true);
490 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
491 DALI_TEST_CHECK( callbackPanFinished.mSignalVerified );
493 Wait(application, 1000);
494 DALI_TEST_CHECK( callbackTurnFinished.mSignalVerified );
495 // the page is turned over
496 DALI_TEST_EQUALS( portraitView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), (int)(pageIndex+1), TEST_LOCATION );
498 //---Test 2: pan from position( size*0.5f ) to position( size.width, size.height*0.5f ) to position( size * 0.75f ), page 1 will bent then slid back---
499 callbackTurnStarted.Reset();
500 callbackTurnFinished.Reset();
501 callbackPanStarted.Reset();
502 callbackPanFinished.Reset();
503 portraitView.SetProperty( PageTurnView::Property::CURRENT_PAGE_ID, 5 );
505 isTurningForwards = true;
507 //pan 10 frames from position( size.width, size.height*0.5f ) to position( size * 0.75f )
508 start = Vector2( size.width, size.height*0.5f );
509 direction = Vector2(-size.width*0.025f, size.height*0.025f);
510 PerformGestureDiagonalSwipe( application, start, direction, 5, true, false);
511 DALI_TEST_CHECK( callbackPanStarted.mSignalVerified );
512 DALI_TEST_CHECK( callbackTurnStarted.mSignalVerified );
513 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
514 DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified );
516 signalVerified[0] = false;
517 isTurningForwards = false;
518 PerformGestureDiagonalSwipe( application, start + direction*2 , direction, 5, false, true);
519 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
520 DALI_TEST_CHECK( callbackPanFinished.mSignalVerified );
521 DALI_TEST_CHECK( callbackTurnStarted.mSignalVerified ); // start the sliding back
523 Wait(application, 1000);
524 DALI_TEST_CHECK( callbackTurnFinished.mSignalVerified );
525 DALI_TEST_EQUALS( portraitView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), (int)pageIndex, TEST_LOCATION ); // the page is not turned over
527 // ----Test 3: pan 10 frames from position( size*0.25f ) to position( size.width*0.75f, size.height*0.25f ), the previous page will be turned backwards---
528 callbackTurnStarted.Reset();
529 callbackTurnFinished.Reset();
530 callbackPanStarted.Reset();
531 callbackPanFinished.Reset();
532 portraitView.SetProperty( PageTurnView::Property::CURRENT_PAGE_ID, 10);
533 pageIndex = 9; // will turn the previous page back
534 isTurningForwards = false;
536 direction = Vector2(size.x*0.05f, 0.f);
537 PerformGestureDiagonalSwipe( application, start, direction, 5, true, false);
538 DALI_TEST_CHECK( callbackPanStarted.mSignalVerified );
539 DALI_TEST_CHECK( !callbackTurnStarted.mSignalVerified );
540 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
541 DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified );
543 PerformGestureDiagonalSwipe( application, start+direction*5.f, direction, 5, false, true);
544 DALI_TEST_CHECK( callbackTurnStarted.mSignalVerified );
545 DALI_TEST_CHECK( callbackPanFinished.mSignalVerified );
546 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
548 Wait( application, 1000 );
550 DALI_TEST_CHECK( callbackTurnFinished.mSignalVerified );
551 DALI_TEST_EQUALS( portraitView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), 9, TEST_LOCATION );
555 int UtcDaliPageTurnLanscapeViewSignals(void)
557 ToolkitTestApplication application;
559 tet_infoline(" UtcDaliPageTurnLanscapeViewSignals ");
561 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
576 TestPageFactory factory;
577 Vector2 stageSize = Stage::GetCurrent().GetSize();
578 PageTurnView landscapeView = PageTurnLandscapeView::New( factory, Vector2(stageSize.x*0.5f, stageSize.x*0.8f) );
579 landscapeView.SetParentOrigin( ParentOrigin::CENTER );
580 Stage::GetCurrent().Add( landscapeView );
583 application.SendNotification();
584 application.Render(RENDER_FRAME_INTERVAL);
586 // [0]: testing PageTurnStartedSignal; [1]: testing PageTurnFinishedSignal
587 // [2]: testing PagePanStartedSignal; [3]: testing PagePanFinishedSignal
588 bool signalVerified[4] = {false, false, false, false};
589 PageTurnView currentView;
590 unsigned int pageIndex;
591 bool isTurningForwards;
593 PageSignalCallback callbackTurnStarted( signalVerified[0], currentView, pageIndex, isTurningForwards );
594 landscapeView.PageTurnStartedSignal().Connect( &callbackTurnStarted, &PageSignalCallback::PageTurnSignalCallback );
596 PageSignalCallback callbackTurnFinished( signalVerified[1], currentView, pageIndex, isTurningForwards );
597 landscapeView.PageTurnFinishedSignal().Connect( &callbackTurnFinished, &PageSignalCallback::PageTurnSignalCallback );
599 PageSignalCallback callbackPanStarted( signalVerified[2], currentView, pageIndex, isTurningForwards );
600 landscapeView.PagePanStartedSignal().Connect( &callbackPanStarted, &PageSignalCallback::PagePanSignalCallback );
602 PageSignalCallback callbackPanFinished( signalVerified[3], currentView, pageIndex, isTurningForwards );
603 landscapeView.PagePanFinishedSignal().Connect( &callbackPanFinished, &PageSignalCallback::PagePanSignalCallback );
605 DALI_TEST_CHECK( !callbackTurnStarted.mSignalVerified );
606 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
607 DALI_TEST_CHECK( !callbackPanStarted.mSignalVerified );
608 DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified );
610 currentView = landscapeView;
612 //-----Test 1: pan 10 frames from position(stageSize.x * 0.85f, stageSize.y*0.5) to position(stageSize.x * 0.45f, stageSize.y*0.5-stageSize.x * 0.3f), page 0 will be turned forward----
614 isTurningForwards = true;
615 // Do a pan to the left.
616 Vector2 start = Vector2(stageSize.x * 0.85f, stageSize.y*0.5);
617 Vector2 direction = Vector2(-stageSize.x*0.04f, -stageSize.x*0.03f);
619 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), 0, TEST_LOCATION );
620 PerformGestureDiagonalSwipe( application, start, direction, 5, true, false);
621 DALI_TEST_CHECK( callbackTurnStarted.mSignalVerified );
622 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
623 DALI_TEST_CHECK( callbackPanStarted.mSignalVerified );
624 DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified );
626 PerformGestureDiagonalSwipe( application, start+direction*5.f, direction, 5, false, true);
627 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
628 DALI_TEST_CHECK( callbackPanFinished.mSignalVerified );
630 Wait(application, 1000);
631 DALI_TEST_CHECK( callbackTurnFinished.mSignalVerified );
632 // the page is turned over
633 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), (int)(pageIndex+1), TEST_LOCATION );
635 //---Test 2: pan from position(stageSize.x * 0.15f, stageSize.y*0.5) to position(stageSize.x * 0.45f, stageSize.y*0.5) page 4 will be turned back---
636 callbackTurnStarted.Reset();
637 callbackTurnFinished.Reset();
638 callbackPanStarted.Reset();
639 callbackPanFinished.Reset();
640 isTurningForwards = false;
642 //pan 10 frames from position( size.width, size.height*0.5f ) to position( size * 0.75f )
643 start = Vector2( stageSize.x * 0.15f, stageSize.y*0.5f );
644 direction = Vector2(stageSize.x * 0.03f, 0.f);
645 PerformGestureDiagonalSwipe( application, start, direction, 5, true, false);
646 DALI_TEST_CHECK( callbackPanStarted.mSignalVerified );
647 DALI_TEST_CHECK( callbackTurnStarted.mSignalVerified );
648 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
649 DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified );
651 PerformGestureDiagonalSwipe( application, start + direction*5.f , direction, 5, false, true);
652 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
653 DALI_TEST_CHECK( callbackPanFinished.mSignalVerified );
655 Wait(application, 1000);
656 DALI_TEST_CHECK( callbackTurnFinished.mSignalVerified );
657 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), 0, TEST_LOCATION ); // the first page is turned back
659 // ----Test 3: pan 10 frames from position( size*0.55f ) to position( size.width*0.8f, size.height*0.5f ), no page turn will be started---
660 callbackTurnStarted.Reset();
661 callbackTurnFinished.Reset();
662 callbackPanStarted.Reset();
663 callbackPanFinished.Reset();
664 isTurningForwards = false;
665 start = stageSize*0.55f;
666 direction = Vector2(stageSize.x*0.025f, 0.f);
667 PerformGestureDiagonalSwipe( application, start, direction, 5, true, false);
668 DALI_TEST_CHECK( callbackPanStarted.mSignalVerified );
669 DALI_TEST_CHECK( !callbackTurnStarted.mSignalVerified );
670 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
671 DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified );
673 PerformGestureDiagonalSwipe( application, start+direction*5.f, direction, 5, false, true);
674 DALI_TEST_CHECK( !callbackTurnStarted.mSignalVerified );
675 DALI_TEST_CHECK( callbackPanFinished.mSignalVerified );
676 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
678 Wait( application, 1000 );
680 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
681 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), 0, TEST_LOCATION );
685 int UtcDaliPageImageFactoryGetExtention(void)
687 ToolkitTestApplication application;
688 TestPageFactory factory;
689 DALI_TEST_CHECK( factory.GetExtension() == NULL );
693 int UtcDaliPageTurnEmptyTextureHandle(void)
695 ToolkitTestApplication application;
697 tet_infoline(" UtcDaliPageTurnEmptyTextureHandle ");
699 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
701 TestPageFactory factory( false /* returns empty handles */ );
702 Vector2 size = Stage::GetCurrent().GetSize();
705 PageTurnView portraitView = PageTurnPortraitView::New( factory, size );
706 portraitView.SetParentOrigin( ParentOrigin::CENTER );
707 Stage::GetCurrent().Add( portraitView );
709 tet_result(TET_FAIL);
711 catch (DaliException& e)
713 DALI_TEST_ASSERT(e, "must pass in valid texture", TEST_LOCATION );
717 tet_result(TET_FAIL);