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.
22 #include <dali-toolkit-test-suite-utils.h>
23 #include <dali/integration-api/events/pan-gesture-event.h>
24 #include <dali-toolkit/public-api/controls/page-turn-view/page-factory.h>
25 #include <dali-toolkit/public-api/controls/page-turn-view/page-turn-landscape-view.h>
26 #include <dali-toolkit/public-api/controls/page-turn-view/page-turn-portrait-view.h>
27 #include <dali-toolkit/public-api/controls/page-turn-view/page-turn-view.h>
32 using namespace Dali::Toolkit;
36 const int RENDER_FRAME_INTERVAL = 16; ///< Duration of each frame in ms. (at approx 60FPS)
37 const unsigned int TOTAL_PAGE_NUMBER = 20;
38 const Vector2 PAGE_SIZE( 300.f,400.f );
39 const unsigned int IMAGE_WIDTH = 30;
40 const unsigned int IMAGE_HEIGHT = 30;
41 const Vector2 IMAGE_SIZE( static_cast<float>( IMAGE_WIDTH ), static_cast<float>(IMAGE_HEIGHT) );
42 const Vector2 SPINE_SHADOW_PARAMETER( 60.0f, 30.0f );
44 static bool gObjectCreatedCallBackCalled;
45 static void TestCallback(BaseHandle handle)
47 gObjectCreatedCallBackCalled = true;
51 * Simulate time passed by.
53 * @note this will always process at least 1 frame (1/60 sec)
55 * @param application Test application instance
56 * @param duration Time to pass in milliseconds.
58 void Wait(ToolkitTestApplication& application, int duration = 0)
60 for(int i = 0; i <= ( duration / RENDER_FRAME_INTERVAL); i++)
62 application.SendNotification();
63 application.Render(RENDER_FRAME_INTERVAL);
67 // Generate a PanGestureEvent to send to Core
68 Integration::PanGestureEvent GeneratePan(
70 const Vector2& previousPosition,
71 const Vector2& currentPosition,
72 unsigned long timeDelta,
73 unsigned int numberOfTouches = 1)
75 Integration::PanGestureEvent pan(state);
77 pan.previousPosition = previousPosition;
78 pan.currentPosition = currentPosition;
79 pan.timeDelta = timeDelta;
80 pan.numberOfTouches = numberOfTouches;
86 * Helper to generate PanGestureEvent
88 * @param[in] application Application instance
89 * @param[in] state The Gesture State
90 * @param[in] pos The current position of touch.
92 static void SendPan(ToolkitTestApplication& application, Gesture::State state, const Vector2& pos)
96 if( (state == Gesture::Started) ||
97 (state == Gesture::Possible) )
103 application.ProcessEvent(GeneratePan(state, last, pos, RENDER_FRAME_INTERVAL));
109 static Vector2 PerformGestureDiagonalSwipe(ToolkitTestApplication& application, Vector2 start, Vector2 direction, int frames, bool toStart = true, bool toFinish = true)
111 // Now do a pan starting from (start) and heading (direction)
116 SendPan(application, Gesture::Possible, pos);
118 SendPan(application, Gesture::Started, pos);
122 for(int i = 0;i<frames;i++)
124 pos += direction; // Move in this direction
125 SendPan(application, Gesture::Continuing, pos);
131 pos += direction; // Move in this direction
132 SendPan(application, Gesture::Finished, pos);
140 //Functor to test whether PageTurnSignal / PagePanSignal is emitted
141 class PageSignalCallback : public Dali::ConnectionTracker
145 PageSignalCallback( bool& signalReceived, PageTurnView& view, unsigned int& pageIndex, bool& isForwards )
146 : mSignalVerified( signalReceived ),
148 mPageIndex( pageIndex ),
149 mIsTurningForwards( isForwards )
153 // callback to be connected to PageTurnSignal
154 void PageTurnSignalCallback( PageTurnView view, unsigned int pageIndex, bool isTurningForward )
156 tet_infoline( "Verifying PageTurnedSignal" );
158 if( mView == view && mPageIndex == pageIndex && mIsTurningForwards == isTurningForward )
160 mSignalVerified = true;
164 // callback to be connected to PagePanSignal
165 void PagePanSignalCallback( PageTurnView view )
167 tet_infoline( "Verifying PagePannedSignal" );
171 mSignalVerified = true;
177 mSignalVerified = false;
180 bool& mSignalVerified;
182 unsigned int& mPageIndex;
183 bool& mIsTurningForwards;
188 //Implementation of PageFactory for providing page actors to PageTurnView
189 class TestPageFactory : public PageFactory
193 TestPageFactory(ToolkitTestApplication& application)
194 : mApplication( application )
196 mSourceActors.resize(TOTAL_PAGE_NUMBER);
197 mTotalPageNumber = TOTAL_PAGE_NUMBER;
201 * Query the number of pages available from the factory.
202 * The maximum available page has an ID of GetNumberOfPages()-1.
204 virtual unsigned int GetNumberOfPages()
206 return mTotalPageNumber;
210 * Create an image actor to represent a page.
211 * @param[in] pageId The ID of the page to create.
212 * @return An image actor, or an uninitialized pointer if the ID is out of range.
214 virtual Actor NewPage( unsigned int pageId )
216 if(!mSourceActors[pageId])
218 Actor actor = CreateSolidColorImageActor(mApplication, Color::BLUE,IMAGE_WIDTH,IMAGE_HEIGHT);
219 actor.SetName( static_cast<std::ostringstream*>( &(std::ostringstream() << pageId) )->str() );
221 actor.SetParentOrigin( ParentOrigin::CENTER );
222 actor.SetAnchorPoint( AnchorPoint::CENTER );
224 ImageActor backPageActor = CreateSolidColorImageActor(mApplication, Color::BLUE,IMAGE_WIDTH,IMAGE_HEIGHT);
225 backPageActor.SetParentOrigin( ParentOrigin::CENTER );
226 backPageActor.SetAnchorPoint( AnchorPoint::CENTER );
227 actor.Add( backPageActor );
229 mSourceActors[pageId] = actor;
232 return mSourceActors[pageId];
235 void DeletePage( unsigned int pageId )
237 mSourceActors.erase( mSourceActors.begin() + pageId );
242 ToolkitTestApplication& mApplication;
243 std::vector<Actor> mSourceActors;
244 unsigned int mTotalPageNumber;
249 void dali_page_turn_view_startup(void)
251 test_return_value = TET_UNDEF;
254 void dali_page_turn_view_cleanup(void)
256 test_return_value = TET_PASS;
259 int UtcDaliPageTurnPortraitViewNew(void)
261 ToolkitTestApplication application;
263 tet_infoline(" UtcDaliPageTurnViewNew ");
265 // Test default constructor
266 PageTurnView portraitView;
267 DALI_TEST_CHECK( !portraitView );
269 // Test object creation
270 TestPageFactory factory(application);
271 portraitView = PageTurnPortraitView::New( factory, PAGE_SIZE );
272 DALI_TEST_CHECK( portraitView );
274 //Additional check to ensure object is created by checking if it's registered
275 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
276 DALI_TEST_CHECK( registry );
278 gObjectCreatedCallBackCalled = false;
279 registry.ObjectCreatedSignal().Connect( &TestCallback );
281 TestPageFactory factory(application);
282 PageTurnView portraitView = PageTurnPortraitView::New( factory, PAGE_SIZE );
284 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
286 // Test copy constructor
287 PageTurnView viewCopy( portraitView );
288 DALI_TEST_CHECK( viewCopy );
292 handleView = portraitView;
293 PageTurnView downCastView = PageTurnView::DownCast( handleView );
294 DALI_TEST_CHECK( downCastView );
299 int UtcDaliPageTurnLandscapeViewNew(void)
301 ToolkitTestApplication application;
303 tet_infoline(" UtcDaliPageTurnViewNew ");
305 //Test default constructor
306 PageTurnView landscapeView;
307 DALI_TEST_CHECK( !landscapeView );
309 // Test object creation
310 TestPageFactory factory(application);
311 landscapeView = PageTurnLandscapeView::New( factory, PAGE_SIZE );
312 DALI_TEST_CHECK( landscapeView );
314 //Additional check to ensure object is created by checking if it's registered
315 ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
316 DALI_TEST_CHECK( registry );
318 gObjectCreatedCallBackCalled = false;
319 registry.ObjectCreatedSignal().Connect( &TestCallback );
321 TestPageFactory factory(application);
322 PageTurnView landscapeView = PageTurnLandscapeView::New( factory, PAGE_SIZE );
324 DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
326 // Test copy constructor
327 PageTurnView viewCopy( landscapeView );
328 DALI_TEST_CHECK( viewCopy );
332 handleView = landscapeView;
333 PageTurnView downCastView = PageTurnView::DownCast( handleView );
334 DALI_TEST_CHECK( downCastView );
339 int UtcDaliPageTurnPortraitViewCopyConstructorAndAssignment(void)
341 ToolkitTestApplication application;
343 tet_infoline(" UtcDaliPageTurnPortraitViewCopyConstructorAndAssignment ");
345 // Test default constructor
346 PageTurnPortraitView portraitView;
347 DALI_TEST_CHECK( !portraitView );
349 // Test object creation
350 TestPageFactory factory(application);
351 portraitView = PageTurnPortraitView::New( factory, PAGE_SIZE );
352 DALI_TEST_CHECK( portraitView );
354 // Test copy constructor
355 PageTurnPortraitView viewCopy( portraitView );
356 DALI_TEST_CHECK( viewCopy );
359 PageTurnPortraitView portraitView2;
360 portraitView2 = portraitView;
361 DALI_TEST_CHECK( portraitView2 );
362 DALI_TEST_CHECK( portraitView == portraitView2);
366 handleView = portraitView;
367 PageTurnPortraitView downCastView = PageTurnPortraitView::DownCast( handleView );
368 DALI_TEST_CHECK( downCastView );
373 int UtcDaliPageTurnLandscapeViewCopyConstructorAndAssignment(void)
375 ToolkitTestApplication application;
377 tet_infoline(" UtcDaliPageTurnLandscapeViewCopyConstructorAndAssignment ");
379 // Test default constructor
380 PageTurnLandscapeView landscapeView;
381 DALI_TEST_CHECK( !landscapeView );
383 // Test object creation
384 TestPageFactory factory(application);
385 landscapeView = PageTurnLandscapeView::New( factory, PAGE_SIZE );
386 DALI_TEST_CHECK( landscapeView );
388 // Test copy constructor
389 PageTurnLandscapeView viewCopy( landscapeView );
390 DALI_TEST_CHECK( viewCopy );
393 PageTurnLandscapeView landscapeView2;
394 landscapeView2 = landscapeView;
395 DALI_TEST_CHECK( landscapeView2 );
396 DALI_TEST_CHECK( landscapeView == landscapeView2);
400 handleView = landscapeView;
401 PageTurnLandscapeView downCastView = PageTurnLandscapeView::DownCast( handleView );
402 DALI_TEST_CHECK( downCastView );
407 int UtcDaliPageTurnViewSetGetProperty(void)
409 ToolkitTestApplication application;
411 tet_infoline(" UtcDaliPageTurnViewSetGetProperty ");
413 TestPageFactory factory(application);
414 PageTurnView landscapeView = PageTurnLandscapeView::New( factory, PAGE_SIZE );
415 DALI_TEST_CHECK( landscapeView );
417 Stage::GetCurrent().Add( landscapeView );
419 // Test "pageSize" property
420 DALI_TEST_CHECK( landscapeView.GetPropertyIndex("pageSize") == PageTurnView::Property::PAGE_SIZE );
421 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::PAGE_SIZE).Get<Vector2>(), PAGE_SIZE, TEST_LOCATION );
423 Vector2 newSize( PAGE_SIZE.x*0.75, PAGE_SIZE.y*0.5f );
424 landscapeView.SetProperty( PageTurnView::Property::PAGE_SIZE, newSize );
425 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::PAGE_SIZE).Get<Vector2>(), newSize, TEST_LOCATION );
427 DALI_TEST_EQUALS( Vector2(landscapeView.GetTargetSize()), Vector2(newSize.x*2.f, newSize.y), TEST_LOCATION);
429 landscapeView.SetProperty( PageTurnView::Property::PAGE_SIZE,newSize*1.5f);
430 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::PAGE_SIZE).Get<Vector2>(), newSize*1.5f, TEST_LOCATION );
432 DALI_TEST_EQUALS( Vector2(landscapeView.GetTargetSize()), Vector2(newSize.x*3.f, newSize.y*1.5f), TEST_LOCATION);
434 // Test "currentPageId" property
435 DALI_TEST_CHECK( landscapeView.GetPropertyIndex("currentPageId") == PageTurnView::Property::CURRENT_PAGE_ID );
436 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), 0, TEST_LOCATION );
438 int pageId = static_cast<int>(TOTAL_PAGE_NUMBER)/3;
439 landscapeView.SetProperty( PageTurnView::Property::CURRENT_PAGE_ID, pageId );
440 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), pageId, TEST_LOCATION );
442 landscapeView.SetProperty( PageTurnView::Property::CURRENT_PAGE_ID, pageId*2 );
443 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), pageId*2, TEST_LOCATION );
445 // Test "spinShadow" property
446 DALI_TEST_CHECK( landscapeView.GetPropertyIndex( "spineShadow" ) == PageTurnView::Property::SPINE_SHADOW );
447 landscapeView.SetProperty( PageTurnView::Property::SPINE_SHADOW, SPINE_SHADOW_PARAMETER );
448 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::SPINE_SHADOW).Get<Vector2>(), SPINE_SHADOW_PARAMETER, TEST_LOCATION );
450 landscapeView.SetProperty( PageTurnView::Property::SPINE_SHADOW, SPINE_SHADOW_PARAMETER*0.75f );
451 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::SPINE_SHADOW).Get<Vector2>(), SPINE_SHADOW_PARAMETER*0.75f, TEST_LOCATION );
456 int UtcDaliPageTurnPortraitViewSignals(void)
458 ToolkitTestApplication application;
460 tet_infoline(" UtcDaliPageTurnPortraitViewSignals ");
462 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
464 TestPageFactory factory(application);
465 Vector2 size = Stage::GetCurrent().GetSize();
466 PageTurnView portraitView = PageTurnPortraitView::New( factory, size );
467 portraitView.SetPositionInheritanceMode( USE_PARENT_POSITION );
468 Stage::GetCurrent().Add( portraitView );
471 application.SendNotification();
472 application.Render(RENDER_FRAME_INTERVAL);
474 // [0]: testing PageTurnStartedSignal; [1]: testing PageTurnFinishedSignal
475 // [2]: testing PagePanStartedSignal; [3]: testing PagePanFinishedSignal
476 bool signalVerified[4] = {false, false, false, false};
477 PageTurnView currentView;
478 unsigned int pageIndex;
479 bool isTurningForwards;
481 PageSignalCallback callbackTurnStarted( signalVerified[0], currentView, pageIndex, isTurningForwards );
482 portraitView.PageTurnStartedSignal().Connect( &callbackTurnStarted, &PageSignalCallback::PageTurnSignalCallback );
484 PageSignalCallback callbackTurnFinished( signalVerified[1], currentView, pageIndex, isTurningForwards );
485 portraitView.PageTurnFinishedSignal().Connect( &callbackTurnFinished, &PageSignalCallback::PageTurnSignalCallback );
487 PageSignalCallback callbackPanStarted( signalVerified[2], currentView, pageIndex, isTurningForwards );
488 portraitView.PagePanStartedSignal().Connect( &callbackPanStarted, &PageSignalCallback::PagePanSignalCallback );
490 PageSignalCallback callbackPanFinished( signalVerified[3], currentView, pageIndex, isTurningForwards );
491 portraitView.PagePanFinishedSignal().Connect( &callbackPanFinished, &PageSignalCallback::PagePanSignalCallback );
493 DALI_TEST_CHECK( !callbackTurnStarted.mSignalVerified );
494 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
495 DALI_TEST_CHECK( !callbackPanStarted.mSignalVerified );
496 DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified );
498 currentView = portraitView;
500 //-----Test 1: pan 10 frames from position(size * 0.75f) to position(size * 0.25f), page 0 will be turned forward----
502 isTurningForwards = true;
503 // Do a pan moving up diagonally.
504 Vector2 start = size * 0.75f;
505 Vector2 direction = -size*0.05f; //-size*0.5f/10.f;
507 DALI_TEST_EQUALS( portraitView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), 0, TEST_LOCATION );
508 PerformGestureDiagonalSwipe( application, start, direction, 5, true, false);
509 DALI_TEST_CHECK( callbackTurnStarted.mSignalVerified );
510 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
511 DALI_TEST_CHECK( callbackPanStarted.mSignalVerified );
512 DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified );
514 PerformGestureDiagonalSwipe( application, start+direction*5.f, direction, 5, false, true);
515 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
516 DALI_TEST_CHECK( callbackPanFinished.mSignalVerified );
518 Wait(application, 1000);
519 DALI_TEST_CHECK( callbackTurnFinished.mSignalVerified );
520 // the page is turned over
521 DALI_TEST_EQUALS( portraitView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), (int)(pageIndex+1), TEST_LOCATION );
523 //---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---
524 callbackTurnStarted.Reset();
525 callbackTurnFinished.Reset();
526 callbackPanStarted.Reset();
527 callbackPanFinished.Reset();
528 portraitView.SetProperty( PageTurnView::Property::CURRENT_PAGE_ID, 5 );
530 isTurningForwards = true;
532 //pan 10 frames from position( size.width, size.height*0.5f ) to position( size * 0.75f )
533 start = Vector2( size.width, size.height*0.5f );
534 direction = Vector2(-size.width*0.025f, size.height*0.025f);
535 PerformGestureDiagonalSwipe( application, start, direction, 5, true, false);
536 DALI_TEST_CHECK( callbackPanStarted.mSignalVerified );
537 DALI_TEST_CHECK( callbackTurnStarted.mSignalVerified );
538 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
539 DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified );
541 signalVerified[0] = false;
542 isTurningForwards = false;
543 PerformGestureDiagonalSwipe( application, start + direction*2 , direction, 5, false, true);
544 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
545 DALI_TEST_CHECK( callbackPanFinished.mSignalVerified );
546 DALI_TEST_CHECK( callbackTurnStarted.mSignalVerified ); // start the sliding back
548 Wait(application, 1000);
549 DALI_TEST_CHECK( callbackTurnFinished.mSignalVerified );
550 DALI_TEST_EQUALS( portraitView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), (int)pageIndex, TEST_LOCATION ); // the page is not turned over
552 // ----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---
553 callbackTurnStarted.Reset();
554 callbackTurnFinished.Reset();
555 callbackPanStarted.Reset();
556 callbackPanFinished.Reset();
557 portraitView.SetProperty( PageTurnView::Property::CURRENT_PAGE_ID, 10);
558 pageIndex = 9; // will turn the previous page back
559 isTurningForwards = false;
561 direction = Vector2(size.x*0.05f, 0.f);
562 PerformGestureDiagonalSwipe( application, start, direction, 5, true, false);
563 DALI_TEST_CHECK( callbackPanStarted.mSignalVerified );
564 DALI_TEST_CHECK( !callbackTurnStarted.mSignalVerified );
565 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
566 DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified );
568 PerformGestureDiagonalSwipe( application, start+direction*5.f, direction, 5, false, true);
569 DALI_TEST_CHECK( callbackTurnStarted.mSignalVerified );
570 DALI_TEST_CHECK( callbackPanFinished.mSignalVerified );
571 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
573 Wait( application, 1000 );
575 DALI_TEST_CHECK( callbackTurnFinished.mSignalVerified );
576 DALI_TEST_EQUALS( portraitView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), 9, TEST_LOCATION );
580 int UtcDaliPageTurnLanscapeViewSignals(void)
582 ToolkitTestApplication application;
584 tet_infoline(" UtcDaliPageTurnLanscapeViewSignals ");
586 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
602 TestPageFactory factory(application);
603 Vector2 stageSize = Stage::GetCurrent().GetSize();
604 PageTurnView landscapeView = PageTurnLandscapeView::New( factory, Vector2(stageSize.x*0.5f, stageSize.x*0.8f) );
605 landscapeView.SetPositionInheritanceMode( USE_PARENT_POSITION );;
606 Stage::GetCurrent().Add( landscapeView );
609 application.SendNotification();
610 application.Render(RENDER_FRAME_INTERVAL);
612 // [0]: testing PageTurnStartedSignal; [1]: testing PageTurnFinishedSignal
613 // [2]: testing PagePanStartedSignal; [3]: testing PagePanFinishedSignal
614 bool signalVerified[4] = {false, false, false, false};
615 PageTurnView currentView;
616 unsigned int pageIndex;
617 bool isTurningForwards;
619 PageSignalCallback callbackTurnStarted( signalVerified[0], currentView, pageIndex, isTurningForwards );
620 landscapeView.PageTurnStartedSignal().Connect( &callbackTurnStarted, &PageSignalCallback::PageTurnSignalCallback );
622 PageSignalCallback callbackTurnFinished( signalVerified[1], currentView, pageIndex, isTurningForwards );
623 landscapeView.PageTurnFinishedSignal().Connect( &callbackTurnFinished, &PageSignalCallback::PageTurnSignalCallback );
625 PageSignalCallback callbackPanStarted( signalVerified[2], currentView, pageIndex, isTurningForwards );
626 landscapeView.PagePanStartedSignal().Connect( &callbackPanStarted, &PageSignalCallback::PagePanSignalCallback );
628 PageSignalCallback callbackPanFinished( signalVerified[3], currentView, pageIndex, isTurningForwards );
629 landscapeView.PagePanFinishedSignal().Connect( &callbackPanFinished, &PageSignalCallback::PagePanSignalCallback );
631 DALI_TEST_CHECK( !callbackTurnStarted.mSignalVerified );
632 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
633 DALI_TEST_CHECK( !callbackPanStarted.mSignalVerified );
634 DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified );
636 currentView = landscapeView;
638 //-----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----
640 isTurningForwards = true;
641 // Do a pan to the left.
642 Vector2 start = Vector2(stageSize.x * 0.85f, stageSize.y*0.5);
643 Vector2 direction = Vector2(-stageSize.x*0.04f, -stageSize.x*0.03f);
645 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), 0, TEST_LOCATION );
646 PerformGestureDiagonalSwipe( application, start, direction, 5, true, false);
647 DALI_TEST_CHECK( callbackTurnStarted.mSignalVerified );
648 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
649 DALI_TEST_CHECK( callbackPanStarted.mSignalVerified );
650 DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified );
652 PerformGestureDiagonalSwipe( application, start+direction*5.f, direction, 5, false, true);
653 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
654 DALI_TEST_CHECK( callbackPanFinished.mSignalVerified );
656 Wait(application, 1000);
657 DALI_TEST_CHECK( callbackTurnFinished.mSignalVerified );
658 // the page is turned over
659 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), (int)(pageIndex+1), TEST_LOCATION );
661 //---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---
662 callbackTurnStarted.Reset();
663 callbackTurnFinished.Reset();
664 callbackPanStarted.Reset();
665 callbackPanFinished.Reset();
666 isTurningForwards = false;
668 //pan 10 frames from position( size.width, size.height*0.5f ) to position( size * 0.75f )
669 start = Vector2( stageSize.x * 0.15f, stageSize.y*0.5f );
670 direction = Vector2(stageSize.x * 0.03f, 0.f);
671 PerformGestureDiagonalSwipe( application, start, direction, 5, true, false);
672 DALI_TEST_CHECK( callbackPanStarted.mSignalVerified );
673 DALI_TEST_CHECK( callbackTurnStarted.mSignalVerified );
674 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
675 DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified );
677 PerformGestureDiagonalSwipe( application, start + direction*5.f , direction, 5, false, true);
678 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
679 DALI_TEST_CHECK( callbackPanFinished.mSignalVerified );
681 Wait(application, 1000);
682 DALI_TEST_CHECK( callbackTurnFinished.mSignalVerified );
683 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), 0, TEST_LOCATION ); // the first page is turned back
685 // ----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---
686 callbackTurnStarted.Reset();
687 callbackTurnFinished.Reset();
688 callbackPanStarted.Reset();
689 callbackPanFinished.Reset();
690 isTurningForwards = false;
691 start = stageSize*0.55f;
692 direction = Vector2(stageSize.x*0.025f, 0.f);
693 PerformGestureDiagonalSwipe( application, start, direction, 5, true, false);
694 DALI_TEST_CHECK( callbackPanStarted.mSignalVerified );
695 DALI_TEST_CHECK( !callbackTurnStarted.mSignalVerified );
696 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
697 DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified );
699 PerformGestureDiagonalSwipe( application, start+direction*5.f, direction, 5, false, true);
700 DALI_TEST_CHECK( !callbackTurnStarted.mSignalVerified );
701 DALI_TEST_CHECK( callbackPanFinished.mSignalVerified );
702 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
704 Wait( application, 1000 );
706 DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified );
707 DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), 0, TEST_LOCATION );