X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-PageTurnView.cpp;h=db1b84531f072081ba098d3efd7e55719298ff99;hp=4b314c08271cd428922675c7dfa5a9d542f54cfa;hb=HEAD;hpb=f4d559ea999cbbc44b1ecd489c4ca3711d37feca diff --git a/automated-tests/src/dali-toolkit/utc-Dali-PageTurnView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-PageTurnView.cpp index 4b314c0..7415f8a 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-PageTurnView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-PageTurnView.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,26 +15,26 @@ * */ -#include +#include +#include +#include +#include +#include +#include #include #include +#include #include -#include -#include - using namespace Dali; using namespace Dali::Toolkit; namespace { -const int RENDER_FRAME_INTERVAL = 16; ///< Duration of each frame in ms. (at approx 60FPS) -const unsigned int TOTAL_PAGE_NUMBER = 20; -const Vector2 PAGE_SIZE( 300.f,400.f ); -const unsigned int IMAGE_WIDTH = 30; -const unsigned int IMAGE_HEIGHT = 30; -const Vector2 IMAGE_SIZE( static_cast( IMAGE_WIDTH ), static_cast(IMAGE_HEIGHT) ); -const Vector2 SPINE_SHADOW_PARAMETER( 60.0f, 30.0f ); +const int RENDER_FRAME_INTERVAL = 16; ///< Duration of each frame in ms. (at approx 60FPS) +const unsigned int TOTAL_PAGE_NUMBER = 20; +const Vector2 VIEW_PAGE_SIZE(300.f, 400.f); +const Vector2 SPINE_SHADOW_PARAMETER(60.0f, 30.0f); static bool gObjectCreatedCallBackCalled; static void TestCallback(BaseHandle handle) @@ -50,118 +50,80 @@ static void TestCallback(BaseHandle handle) * @param application Test application instance * @param duration Time to pass in milliseconds. */ -void Wait(ToolkitTestApplication& application, int duration = 0) +int Wait(ToolkitTestApplication& application, int duration = 0) { - for(int i = 0; i <= ( duration / RENDER_FRAME_INTERVAL); i++) + int time = 0; + + for(int i = 0; i <= (duration / RENDER_FRAME_INTERVAL); i++) { application.SendNotification(); application.Render(RENDER_FRAME_INTERVAL); + time += RENDER_FRAME_INTERVAL; } -} - -// Generate a PanGestureEvent to send to Core -Integration::PanGestureEvent GeneratePan( - Gesture::State state, - const Vector2& previousPosition, - const Vector2& currentPosition, - unsigned long timeDelta, - unsigned int numberOfTouches = 1) -{ - Integration::PanGestureEvent pan(state); - pan.previousPosition = previousPosition; - pan.currentPosition = currentPosition; - pan.timeDelta = timeDelta; - pan.numberOfTouches = numberOfTouches; - - return pan; + return time; } -/** - * Helper to generate PanGestureEvent - * - * @param[in] application Application instance - * @param[in] state The Gesture State - * @param[in] pos The current position of touch. - */ -static void SendPan(ToolkitTestApplication& application, Gesture::State state, const Vector2& pos) +static Vector2 PerformGestureDiagonalSwipe(ToolkitTestApplication& application, Vector2 start, Vector2 direction, int frames, uint32_t& time, bool toStart = true, bool toFinish = true) { - static Vector2 last; - - if( (state == Gesture::Started) || - (state == Gesture::Possible) ) - { - last.x = pos.x; - last.y = pos.y; - } - - application.ProcessEvent(GeneratePan(state, last, pos, RENDER_FRAME_INTERVAL)); - - last.x = pos.x; - last.y = pos.y; -} - -static Vector2 PerformGestureDiagonalSwipe(ToolkitTestApplication& application, Vector2 start, Vector2 direction, int frames, bool toStart = true, bool toFinish = true) -{ - // Now do a pan starting from (start) and heading (direction) Vector2 pos(start); - if( toStart ) + if(toStart) { - SendPan(application, Gesture::Possible, pos); - Wait(application); - SendPan(application, Gesture::Started, pos); - Wait(application); + // Now do a pan starting from (start + 20) and heading (direction) + Vector2 pos_start_jump(start + Vector2(15.0f, 0.0f)); + TestStartPan(application, start, pos_start_jump, time); + pos += direction; } - for(int i = 0;i( &(std::ostringstream() << pageId) )->str() ); - - actor.SetParentOrigin( ParentOrigin::CENTER ); - actor.SetAnchorPoint( AnchorPoint::CENTER ); - - SetActorHittability( actor, true ); - - mSourceActors[pageId] = actor; + return Texture::New(Dali::TextureType::TEXTURE_2D, Pixel::RGB888, 100, 100); } - - return mSourceActors[pageId]; - } - - void DeletePage( unsigned int pageId ) - { - mSourceActors.erase( mSourceActors.begin() + pageId ); - mTotalPageNumber--; + return Texture(); // empty handle } private: - ToolkitTestApplication& mApplication; - std::vector mSourceActors; - unsigned int mTotalPageNumber; + unsigned int mTotalPageNumber; + bool mValidTexture; }; -}// namespace +} // namespace void dali_page_turn_view_startup(void) { @@ -256,34 +198,35 @@ int UtcDaliPageTurnPortraitViewNew(void) // Test default constructor PageTurnView portraitView; - DALI_TEST_CHECK( !portraitView ); + DALI_TEST_CHECK(!portraitView); // Test object creation - TestPageFactory factory(application); - portraitView = PageTurnPortraitView::New( factory, PAGE_SIZE ); - DALI_TEST_CHECK( portraitView ); + TestPageFactory factory; + portraitView = PageTurnPortraitView::New(factory, VIEW_PAGE_SIZE); + DALI_TEST_CHECK(portraitView); //Additional check to ensure object is created by checking if it's registered - ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry(); - DALI_TEST_CHECK( registry ); + ObjectRegistry registry = application.GetCore().GetObjectRegistry(); + DALI_TEST_CHECK(registry); gObjectCreatedCallBackCalled = false; - registry.ObjectCreatedSignal().Connect( &TestCallback ); + registry.ObjectCreatedSignal().Connect(&TestCallback); { - TestPageFactory factory(application); - PageTurnView PortraitView = PageTurnPortraitView::New( factory, PAGE_SIZE ); + TestPageFactory factory; + PageTurnView portraitView = PageTurnPortraitView::New(factory, VIEW_PAGE_SIZE); } - DALI_TEST_CHECK( gObjectCreatedCallBackCalled ); + DALI_TEST_CHECK(gObjectCreatedCallBackCalled); // Test copy constructor - PageTurnView viewCopy( portraitView ); - DALI_TEST_CHECK( viewCopy ); + PageTurnView viewCopy(portraitView); + DALI_TEST_CHECK(viewCopy); // Test down cast Handle handleView; - handleView = portraitView; - PageTurnView downCastView = PageTurnView::DownCast( handleView ); - DALI_TEST_CHECK( downCastView ); + handleView = portraitView; + PageTurnView downCastView = PageTurnView::DownCast(handleView); + DALI_TEST_CHECK(downCastView); + END_TEST; } @@ -295,211 +238,168 @@ int UtcDaliPageTurnLandscapeViewNew(void) //Test default constructor PageTurnView landscapeView; - DALI_TEST_CHECK( !landscapeView ); + DALI_TEST_CHECK(!landscapeView); // Test object creation - TestPageFactory factory(application); - landscapeView = PageTurnLandscapeView::New( factory, PAGE_SIZE ); - DALI_TEST_CHECK( landscapeView ); + TestPageFactory factory; + landscapeView = PageTurnLandscapeView::New(factory, VIEW_PAGE_SIZE); + DALI_TEST_CHECK(landscapeView); //Additional check to ensure object is created by checking if it's registered - ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry(); - DALI_TEST_CHECK( registry ); + ObjectRegistry registry = application.GetCore().GetObjectRegistry(); + DALI_TEST_CHECK(registry); gObjectCreatedCallBackCalled = false; - registry.ObjectCreatedSignal().Connect( &TestCallback ); + registry.ObjectCreatedSignal().Connect(&TestCallback); { - TestPageFactory factory(application); - PageTurnView landscapeView = PageTurnLandscapeView::New( factory, PAGE_SIZE ); + TestPageFactory factory; + PageTurnView landscapeView = PageTurnLandscapeView::New(factory, VIEW_PAGE_SIZE); } - DALI_TEST_CHECK( gObjectCreatedCallBackCalled ); + DALI_TEST_CHECK(gObjectCreatedCallBackCalled); // Test copy constructor - PageTurnView viewCopy( landscapeView ); - DALI_TEST_CHECK( viewCopy ); + PageTurnView viewCopy(landscapeView); + DALI_TEST_CHECK(viewCopy); // Test down cast Handle handleView; - handleView = landscapeView; - PageTurnView downCastView = PageTurnView::DownCast( handleView ); - DALI_TEST_CHECK( downCastView ); + handleView = landscapeView; + PageTurnView downCastView = PageTurnView::DownCast(handleView); + DALI_TEST_CHECK(downCastView); END_TEST; } -int UtcDaliPageTurnViewSetAndGetSpineShadowParameter(void) +int UtcDaliPageTurnPortraitViewCopyConstructorAndAssignment(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliPageTurnViewSetAndGetSpineShadowParameter "); + tet_infoline(" UtcDaliPageTurnPortraitViewCopyConstructorAndAssignment "); - TestPageFactory factory(application); - PageTurnView landscapeView = PageTurnLandscapeView::New( factory, PAGE_SIZE ); - DALI_TEST_CHECK( landscapeView.GetSpineShadowParameter() != SPINE_SHADOW_PARAMETER); - landscapeView.SetSpineShadowParameter(SPINE_SHADOW_PARAMETER); - DALI_TEST_CHECK( landscapeView.GetSpineShadowParameter() == SPINE_SHADOW_PARAMETER); - END_TEST; -} + // Test default constructor + PageTurnPortraitView portraitView; + DALI_TEST_CHECK(!portraitView); -int UtcDaliPageTurnViewGoToPageAndGetCurrentPage(void) -{ - ToolkitTestApplication application; + // Test object creation + TestPageFactory factory; + portraitView = PageTurnPortraitView::New(factory, VIEW_PAGE_SIZE); + DALI_TEST_CHECK(portraitView); - tet_infoline(" UtcDaliPageTurnViewGoToPageAndGetCurrentPage "); + // Test copy constructor + PageTurnPortraitView viewCopy(portraitView); + DALI_TEST_CHECK(viewCopy); - TestPageFactory factory(application); - PageTurnView portraitView = PageTurnPortraitView::New( factory, PAGE_SIZE ); - DALI_TEST_CHECK( portraitView.GetCurrentPage() == 0 ); + // Test assignment + PageTurnPortraitView portraitView2; + portraitView2 = portraitView; + DALI_TEST_CHECK(portraitView2); + DALI_TEST_CHECK(portraitView == portraitView2); - portraitView.GoToPage( 10 ); - DALI_TEST_CHECK( portraitView.GetCurrentPage() == 10 ); + // Test down cast + Handle handleView; + handleView = portraitView; + PageTurnPortraitView downCastView = PageTurnPortraitView::DownCast(handleView); + DALI_TEST_CHECK(downCastView); - portraitView.GoToPage( 5 ); - DALI_TEST_CHECK( portraitView.GetCurrentPage() == 5 ); END_TEST; } -int UtcDaliPageTurnViewEnterLeaveEditMode(void) +int UtcDaliPageTurnLandscapeViewCopyConstructorAndAssignment(void) { ToolkitTestApplication application; - tet_infoline( " UtcDaliPageTurnViewEnterLeaveEditMode " ); - - application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE ); + tet_infoline(" UtcDaliPageTurnLandscapeViewCopyConstructorAndAssignment "); - TestPageFactory factory(application); - factory.EnableOffscreenRendering( ); - - PageTurnView pageTurnView = PageTurnLandscapeView::New( factory, PAGE_SIZE ); - pageTurnView.SetPositionInheritanceMode( USE_PARENT_POSITION ); - Stage::GetCurrent().Add( pageTurnView ); + // Test default constructor + PageTurnLandscapeView landscapeView; + DALI_TEST_CHECK(!landscapeView); - Vector2 size = Stage::GetCurrent().GetSize(); + // Test object creation + TestPageFactory factory; + landscapeView = PageTurnLandscapeView::New(factory, VIEW_PAGE_SIZE); + DALI_TEST_CHECK(landscapeView); - pageTurnView.GoToPage(5); + // Test copy constructor + PageTurnLandscapeView viewCopy(landscapeView); + DALI_TEST_CHECK(viewCopy); - // Render and notify - application.SendNotification(); - application.Render(RENDER_FRAME_INTERVAL); + // Test assignment + PageTurnLandscapeView landscapeView2; + landscapeView2 = landscapeView; + DALI_TEST_CHECK(landscapeView2); + DALI_TEST_CHECK(landscapeView == landscapeView2); - Actor actor = pageTurnView.EnterEditMode(); - // Test that when entering edit mode, current page source actor is returned. - unsigned int pageId; - std::istringstream( actor.GetName() ) >> pageId; - DALI_TEST_CHECK( pageId == 5 ); + // Test down cast + Handle handleView; + handleView = landscapeView; + PageTurnLandscapeView downCastView = PageTurnLandscapeView::DownCast(handleView); + DALI_TEST_CHECK(downCastView); - bool signalVerified; - PageTurnView currentView; - unsigned int pageIndex; - bool isTurningForwards; - PageSignalCallback callbackPanStarted( signalVerified, currentView, pageIndex, isTurningForwards ); - pageTurnView.PagePanStartedSignal().Connect( &callbackPanStarted, &PageSignalCallback::PagePanSignalCallback ); - - currentView = pageTurnView; - pageIndex = 5; - DALI_TEST_CHECK( !callbackPanStarted.mSignalVerified ); - - // Test that the control does not receive pan gesture in edit-mode - PerformGestureDiagonalSwipe( application, Vector2(size*0.75f), Vector2(size*0.01f), 10, true, true); - DALI_TEST_CHECK( !callbackPanStarted.mSignalVerified ); - - pageTurnView.LeaveEditMode(); - // Test that the control receives pan gesture after leaving edit-mode - PerformGestureDiagonalSwipe( application, Vector2(size*0.75f), Vector2(size*0.01f), 10, true, true); - DALI_TEST_CHECK( callbackPanStarted.mSignalVerified ); END_TEST; } -int UtcDaliPageTurnViewGetHitActor(void) +int UtcDaliPageTurnViewSetGetProperty(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliPageTurnViewGetHitActor "); + tet_infoline(" UtcDaliPageTurnViewSetGetProperty "); - application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE ); + TestPageFactory factory; + PageTurnView landscapeView = PageTurnLandscapeView::New(factory, VIEW_PAGE_SIZE); + DALI_TEST_CHECK(landscapeView); - TestPageFactory factory(application); - factory.EnableOffscreenRendering( ); + application.GetScene().Add(landscapeView); - PageTurnView pageTurnView = PageTurnPortraitView::New( factory, PAGE_SIZE ); - pageTurnView.SetParentOrigin( ParentOrigin::TOP_LEFT ); - pageTurnView.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - Stage::GetCurrent().Add( pageTurnView ); + // Test "viewPageSize" property + DALI_TEST_CHECK(landscapeView.GetPropertyIndex("viewPageSize") == PageTurnView::Property::VIEW_PAGE_SIZE); + DALI_TEST_EQUALS(landscapeView.GetProperty(PageTurnView::Property::VIEW_PAGE_SIZE).Get(), VIEW_PAGE_SIZE, TEST_LOCATION); - // Render and notify - application.SendNotification(); - application.Render(RENDER_FRAME_INTERVAL); + Vector2 newSize(VIEW_PAGE_SIZE.x * 0.75, VIEW_PAGE_SIZE.y * 0.5f); + landscapeView.SetProperty(PageTurnView::Property::VIEW_PAGE_SIZE, newSize); + DALI_TEST_EQUALS(landscapeView.GetProperty(PageTurnView::Property::VIEW_PAGE_SIZE).Get(), newSize, TEST_LOCATION); + Wait(application); + DALI_TEST_EQUALS(Vector2(landscapeView.GetTargetSize()), Vector2(newSize.x * 2.f, newSize.y), TEST_LOCATION); - pageTurnView.GoToPage(3); + landscapeView.SetProperty(PageTurnView::Property::VIEW_PAGE_SIZE, newSize * 1.5f); + DALI_TEST_EQUALS(landscapeView.GetProperty(PageTurnView::Property::VIEW_PAGE_SIZE).Get(), newSize * 1.5f, TEST_LOCATION); + Wait(application); + DALI_TEST_EQUALS(Vector2(landscapeView.GetTargetSize()), Vector2(newSize.x * 3.f, newSize.y * 1.5f), TEST_LOCATION); - Vector2 localCoordinate = Vector2(); - Vector2 screenCoordinate = PAGE_SIZE*0.5f+Vector2(7.f,8.f); - Actor hitActor = pageTurnView.GetHitActor( screenCoordinate, localCoordinate ); - DALI_TEST_CHECK( hitActor ); - unsigned int pageId; - std::istringstream( hitActor.GetName() ) >> pageId; - DALI_TEST_CHECK( pageId == 3 ); - DALI_TEST_EQUALS( localCoordinate, IMAGE_SIZE*0.5f+Vector2(7.f,8.f), 0.1f, TEST_LOCATION ); + // Test "currentPageId" property + DALI_TEST_CHECK(landscapeView.GetPropertyIndex("currentPageId") == PageTurnView::Property::CURRENT_PAGE_ID); + DALI_TEST_EQUALS(landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get(), 0, TEST_LOCATION); - screenCoordinate = PAGE_SIZE*0.5f+IMAGE_SIZE; - hitActor = pageTurnView.GetHitActor( screenCoordinate, localCoordinate ); - DALI_TEST_CHECK( !hitActor ); - END_TEST; -} + int pageId = static_cast(TOTAL_PAGE_NUMBER) / 3; + landscapeView.SetProperty(PageTurnView::Property::CURRENT_PAGE_ID, pageId); + DALI_TEST_EQUALS(landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get(), pageId, TEST_LOCATION); -int UtcDaliPageTurnViewRefresh(void) -{ - ToolkitTestApplication application; - - tet_infoline(" UtcDaliPageTurnViewRefresh "); + landscapeView.SetProperty(PageTurnView::Property::CURRENT_PAGE_ID, pageId * 2); + DALI_TEST_EQUALS(landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get(), pageId * 2, TEST_LOCATION); - application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE ); + // Test "spinShadow" property + DALI_TEST_CHECK(landscapeView.GetPropertyIndex("spineShadow") == PageTurnView::Property::SPINE_SHADOW); + landscapeView.SetProperty(PageTurnView::Property::SPINE_SHADOW, SPINE_SHADOW_PARAMETER); + DALI_TEST_EQUALS(landscapeView.GetProperty(PageTurnView::Property::SPINE_SHADOW).Get(), SPINE_SHADOW_PARAMETER, TEST_LOCATION); - TestPageFactory factory(application); - factory.EnableOffscreenRendering( ); - PageTurnView pageTurnView = PageTurnPortraitView::New( factory, PAGE_SIZE ); - pageTurnView.SetParentOrigin( ParentOrigin::TOP_LEFT ); - pageTurnView.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - Stage::GetCurrent().Add( pageTurnView ); - - // Render and notify - application.SendNotification(); - application.Render(RENDER_FRAME_INTERVAL); - application.Render(RENDER_FRAME_INTERVAL); - application.SendNotification(); + landscapeView.SetProperty(PageTurnView::Property::SPINE_SHADOW, SPINE_SHADOW_PARAMETER * 0.75f); + DALI_TEST_EQUALS(landscapeView.GetProperty(PageTurnView::Property::SPINE_SHADOW).Get(), SPINE_SHADOW_PARAMETER * 0.75f, TEST_LOCATION); - factory.DeletePage( 0 ); - - pageTurnView.RefreshCurrentPage(); - // simply calls the certain off screen render task to refresh - Vector2 localCoordinate = Vector2(); - Vector2 screenCoordinate = PAGE_SIZE*0.5f; - Actor hitActor = pageTurnView.GetHitActor( screenCoordinate, localCoordinate ); - unsigned int pageId; - std::istringstream( hitActor.GetName() ) >> pageId; - DALI_TEST_CHECK( pageId == 0 ); - - pageTurnView.RefreshAll(); - // re-parent all the source actors and refresh - hitActor = pageTurnView.GetHitActor( screenCoordinate, localCoordinate ); - std::istringstream( hitActor.GetName() ) >> pageId; - DALI_TEST_CHECK( pageId == 1 ); END_TEST; } -int UtcDaliPageTurnViewSignals(void) +int UtcDaliPageTurnPortraitViewSignals(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliPageTurnViewSignals "); + tet_infoline(" UtcDaliPageTurnPortraitViewSignals "); - application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE ); + application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE); - TestPageFactory factory(application); - Vector2 size = Stage::GetCurrent().GetSize(); - PageTurnView portraitView = PageTurnPortraitView::New( factory, size ); - portraitView.SetPositionInheritanceMode( USE_PARENT_POSITION ); - Stage::GetCurrent().Add( portraitView ); + TestPageFactory factory; + Vector2 size = application.GetScene().GetSize(); + PageTurnView portraitView = PageTurnPortraitView::New(factory, size); + portraitView.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + application.GetScene().Add(portraitView); // Render and notify application.SendNotification(); @@ -507,105 +407,276 @@ int UtcDaliPageTurnViewSignals(void) // [0]: testing PageTurnStartedSignal; [1]: testing PageTurnFinishedSignal // [2]: testing PagePanStartedSignal; [3]: testing PagePanFinishedSignal - bool signalVerified[4]; + bool signalVerified[4] = {false, false, false, false}; PageTurnView currentView; unsigned int pageIndex; - bool isTurningForwards; + bool isTurningForwards; - PageSignalCallback callbackTurnStarted( signalVerified[0], currentView, pageIndex, isTurningForwards ); - portraitView.PageTurnStartedSignal().Connect( &callbackTurnStarted, &PageSignalCallback::PageTurnSignalCallback ); + PageSignalCallback callbackTurnStarted(signalVerified[0], currentView, pageIndex, isTurningForwards); + portraitView.PageTurnStartedSignal().Connect(&callbackTurnStarted, &PageSignalCallback::PageTurnSignalCallback); - PageSignalCallback callbackTurnFinished( signalVerified[1], currentView, pageIndex, isTurningForwards ); - portraitView.PageTurnFinishedSignal().Connect( &callbackTurnFinished, &PageSignalCallback::PageTurnSignalCallback ); + PageSignalCallback callbackTurnFinished(signalVerified[1], currentView, pageIndex, isTurningForwards); + portraitView.PageTurnFinishedSignal().Connect(&callbackTurnFinished, &PageSignalCallback::PageTurnSignalCallback); - PageSignalCallback callbackPanStarted( signalVerified[2], currentView, pageIndex, isTurningForwards ); - portraitView.PagePanStartedSignal().Connect( &callbackPanStarted, &PageSignalCallback::PagePanSignalCallback ); + PageSignalCallback callbackPanStarted(signalVerified[2], currentView, pageIndex, isTurningForwards); + portraitView.PagePanStartedSignal().Connect(&callbackPanStarted, &PageSignalCallback::PagePanSignalCallback); - PageSignalCallback callbackPanFinished( signalVerified[3], currentView, pageIndex, isTurningForwards ); - portraitView.PagePanFinishedSignal().Connect( &callbackPanFinished, &PageSignalCallback::PagePanSignalCallback ); + PageSignalCallback callbackPanFinished(signalVerified[3], currentView, pageIndex, isTurningForwards); + portraitView.PagePanFinishedSignal().Connect(&callbackPanFinished, &PageSignalCallback::PagePanSignalCallback); - DALI_TEST_CHECK( !callbackTurnStarted.mSignalVerified ); - DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified ); - DALI_TEST_CHECK( !callbackPanStarted.mSignalVerified ); - DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified ); + DALI_TEST_CHECK(!callbackTurnStarted.mSignalVerified); + DALI_TEST_CHECK(!callbackTurnFinished.mSignalVerified); + DALI_TEST_CHECK(!callbackPanStarted.mSignalVerified); + DALI_TEST_CHECK(!callbackPanFinished.mSignalVerified); currentView = portraitView; //-----Test 1: pan 10 frames from position(size * 0.75f) to position(size * 0.25f), page 0 will be turned forward---- - pageIndex = 0; + pageIndex = 0; isTurningForwards = true; - // Do a pan moving up diagonally. - Vector2 start = size * 0.75f; - Vector2 direction = -size*0.05f; //-size*0.5f/10.f; - - DALI_TEST_CHECK( portraitView.GetCurrentPage() == 0); - PerformGestureDiagonalSwipe( application, start, direction, 5, true, false); - DALI_TEST_CHECK( callbackTurnStarted.mSignalVerified ); - DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified ); - DALI_TEST_CHECK( callbackPanStarted.mSignalVerified ); - DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified ); - - PerformGestureDiagonalSwipe( application, start+direction*5.f, direction, 5, false, true); - DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified ); - DALI_TEST_CHECK( callbackPanFinished.mSignalVerified ); - - Wait(application, 1000); - DALI_TEST_CHECK( callbackTurnFinished.mSignalVerified ); - DALI_TEST_CHECK( portraitView.GetCurrentPage() == pageIndex+1); // the page is turn over + // Do a pan moving up diagonally + uint32_t time = 0; + Vector2 start = size * 0.75f; + Vector2 direction = -size * 0.05f; //-size*0.5f/10.f; + + DALI_TEST_EQUALS(portraitView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get(), 0, TEST_LOCATION); + PerformGestureDiagonalSwipe(application, start, direction, 5, time, true, false); + DALI_TEST_CHECK(callbackTurnStarted.mSignalVerified); + DALI_TEST_CHECK(!callbackTurnFinished.mSignalVerified); + DALI_TEST_CHECK(callbackPanStarted.mSignalVerified); + DALI_TEST_CHECK(!callbackPanFinished.mSignalVerified); + + PerformGestureDiagonalSwipe(application, start + direction * 5.f, direction, 5, time, false, true); + DALI_TEST_CHECK(!callbackTurnFinished.mSignalVerified); + DALI_TEST_CHECK(callbackPanFinished.mSignalVerified); + + time += Wait(application, 1000); + DALI_TEST_CHECK(callbackTurnFinished.mSignalVerified); + // the page is turned over + DALI_TEST_EQUALS(portraitView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get(), (int)(pageIndex + 1), TEST_LOCATION); //---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--- callbackTurnStarted.Reset(); callbackTurnFinished.Reset(); callbackPanStarted.Reset(); callbackPanFinished.Reset(); - portraitView.GoToPage(5); - pageIndex = 5; + portraitView.SetProperty(PageTurnView::Property::CURRENT_PAGE_ID, 5); + pageIndex = 5; isTurningForwards = true; //pan 10 frames from position( size.width, size.height*0.5f ) to position( size * 0.75f ) - start = Vector2( size.width, size.height*0.5f ); - direction = Vector2(-size.width*0.025f, size.height*0.025f); - PerformGestureDiagonalSwipe( application, start, direction, 5, true, false); - DALI_TEST_CHECK( callbackPanStarted.mSignalVerified ); - DALI_TEST_CHECK( callbackTurnStarted.mSignalVerified ); - DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified ); - DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified ); + start = Vector2(size.width, size.height * 0.5f); + direction = Vector2(-size.width * 0.025f, size.height * 0.025f); + PerformGestureDiagonalSwipe(application, start, direction, 5, time, true, false); + DALI_TEST_CHECK(callbackPanStarted.mSignalVerified); + DALI_TEST_CHECK(callbackTurnStarted.mSignalVerified); + DALI_TEST_CHECK(!callbackTurnFinished.mSignalVerified); + DALI_TEST_CHECK(!callbackPanFinished.mSignalVerified); signalVerified[0] = false; isTurningForwards = false; - PerformGestureDiagonalSwipe( application, start + direction*2 , direction, 5, false, true); - DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified ); - DALI_TEST_CHECK( callbackPanFinished.mSignalVerified ); - DALI_TEST_CHECK( callbackTurnStarted.mSignalVerified ); // start the sliding back + PerformGestureDiagonalSwipe(application, start + direction * 2, direction, 5, time, false, true); + DALI_TEST_CHECK(!callbackTurnFinished.mSignalVerified); + DALI_TEST_CHECK(callbackPanFinished.mSignalVerified); + DALI_TEST_CHECK(callbackTurnStarted.mSignalVerified); // start the sliding back - Wait(application, 1000); - DALI_TEST_CHECK( callbackTurnFinished.mSignalVerified ); - DALI_TEST_CHECK( portraitView.GetCurrentPage() == pageIndex); // the page is not turned over + time += Wait(application, 1000); + DALI_TEST_CHECK(callbackTurnFinished.mSignalVerified); + DALI_TEST_EQUALS(portraitView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get(), (int)pageIndex, TEST_LOCATION); // the page is not turned over // ----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--- callbackTurnStarted.Reset(); callbackTurnFinished.Reset(); callbackPanStarted.Reset(); callbackPanFinished.Reset(); - portraitView.GoToPage(10); - pageIndex = 9; // will turn the previous page back + portraitView.SetProperty(PageTurnView::Property::CURRENT_PAGE_ID, 10); + pageIndex = 9; // will turn the previous page back isTurningForwards = false; - start = size*0.25f; - direction = Vector2(size.x*0.05f, 0.f); - PerformGestureDiagonalSwipe( application, start, direction, 5, true, false); - DALI_TEST_CHECK( callbackPanStarted.mSignalVerified ); - DALI_TEST_CHECK( !callbackTurnStarted.mSignalVerified ); - DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified ); - DALI_TEST_CHECK( !callbackPanFinished.mSignalVerified ); - - PerformGestureDiagonalSwipe( application, start+direction*5.f, direction, 5, false, true); - DALI_TEST_CHECK( callbackTurnStarted.mSignalVerified ); - DALI_TEST_CHECK( callbackPanFinished.mSignalVerified ); - DALI_TEST_CHECK( !callbackTurnFinished.mSignalVerified ); - - Wait( application, 1000 ); - - DALI_TEST_CHECK( callbackTurnFinished.mSignalVerified ); - DALI_TEST_CHECK( portraitView.GetCurrentPage() == 9); + start = size * 0.25f; + direction = Vector2(size.x * 0.05f, 0.f); + PerformGestureDiagonalSwipe(application, start, direction, 4, time, true, false); + DALI_TEST_CHECK(callbackPanStarted.mSignalVerified); + DALI_TEST_CHECK(!callbackTurnStarted.mSignalVerified); + DALI_TEST_CHECK(!callbackTurnFinished.mSignalVerified); + DALI_TEST_CHECK(!callbackPanFinished.mSignalVerified); + + PerformGestureDiagonalSwipe(application, start + direction * 5.f, direction, 5, time, false, true); + DALI_TEST_CHECK(callbackTurnStarted.mSignalVerified); + DALI_TEST_CHECK(callbackPanFinished.mSignalVerified); + DALI_TEST_CHECK(!callbackTurnFinished.mSignalVerified); + + Wait(application, 1000); + + DALI_TEST_CHECK(callbackTurnFinished.mSignalVerified); + DALI_TEST_EQUALS(portraitView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get(), 9, TEST_LOCATION); + END_TEST; +} + +int UtcDaliPageTurnLanscapeViewSignals(void) +{ + ToolkitTestApplication application; + + tet_infoline(" UtcDaliPageTurnLanscapeViewSignals "); + + application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE); + /*** + * ----------------- + * | | + * |---------------| + * |bookboo|bookboo| + * |kbookbo|kbookbo| + * |okbookb|okbookb| + * |ookbook|ookbook| + * |bookboo|bookboo| + * |---------------| + * | | + * ---------------- + */ + + TestPageFactory factory; + Vector2 stageSize = application.GetScene().GetSize(); + PageTurnView landscapeView = PageTurnLandscapeView::New(factory, Vector2(stageSize.x * 0.5f, stageSize.x * 0.8f)); + landscapeView.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + application.GetScene().Add(landscapeView); + + // Render and notify + application.SendNotification(); + application.Render(RENDER_FRAME_INTERVAL); + + // [0]: testing PageTurnStartedSignal; [1]: testing PageTurnFinishedSignal + // [2]: testing PagePanStartedSignal; [3]: testing PagePanFinishedSignal + bool signalVerified[4] = {false, false, false, false}; + PageTurnView currentView; + unsigned int pageIndex; + bool isTurningForwards; + + PageSignalCallback callbackTurnStarted(signalVerified[0], currentView, pageIndex, isTurningForwards); + landscapeView.PageTurnStartedSignal().Connect(&callbackTurnStarted, &PageSignalCallback::PageTurnSignalCallback); + + PageSignalCallback callbackTurnFinished(signalVerified[1], currentView, pageIndex, isTurningForwards); + landscapeView.PageTurnFinishedSignal().Connect(&callbackTurnFinished, &PageSignalCallback::PageTurnSignalCallback); + + PageSignalCallback callbackPanStarted(signalVerified[2], currentView, pageIndex, isTurningForwards); + landscapeView.PagePanStartedSignal().Connect(&callbackPanStarted, &PageSignalCallback::PagePanSignalCallback); + + PageSignalCallback callbackPanFinished(signalVerified[3], currentView, pageIndex, isTurningForwards); + landscapeView.PagePanFinishedSignal().Connect(&callbackPanFinished, &PageSignalCallback::PagePanSignalCallback); + + DALI_TEST_CHECK(!callbackTurnStarted.mSignalVerified); + DALI_TEST_CHECK(!callbackTurnFinished.mSignalVerified); + DALI_TEST_CHECK(!callbackPanStarted.mSignalVerified); + DALI_TEST_CHECK(!callbackPanFinished.mSignalVerified); + + currentView = landscapeView; + + //-----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---- + pageIndex = 0; + isTurningForwards = true; + // Do a pan to the left. + uint32_t time = 0; + Vector2 start = Vector2(stageSize.x * 0.85f, stageSize.y * 0.5); + Vector2 direction = Vector2(-stageSize.x * 0.04f, -stageSize.x * 0.03f); + + DALI_TEST_EQUALS(landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get(), 0, TEST_LOCATION); + PerformGestureDiagonalSwipe(application, start, direction, 5, time, true, false); + DALI_TEST_CHECK(callbackTurnStarted.mSignalVerified); + DALI_TEST_CHECK(!callbackTurnFinished.mSignalVerified); + DALI_TEST_CHECK(callbackPanStarted.mSignalVerified); + DALI_TEST_CHECK(!callbackPanFinished.mSignalVerified); + + PerformGestureDiagonalSwipe(application, start + direction * 5.f, direction, 5, time, false, true); + DALI_TEST_CHECK(!callbackTurnFinished.mSignalVerified); + DALI_TEST_CHECK(callbackPanFinished.mSignalVerified); + + time += Wait(application, 1000); + DALI_TEST_CHECK(callbackTurnFinished.mSignalVerified); + // the page is turned over + DALI_TEST_EQUALS(landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get(), (int)(pageIndex + 1), TEST_LOCATION); + + //---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--- + callbackTurnStarted.Reset(); + callbackTurnFinished.Reset(); + callbackPanStarted.Reset(); + callbackPanFinished.Reset(); + isTurningForwards = false; + + //pan 10 frames from position( size.width, size.height*0.5f ) to position( size * 0.75f ) + start = Vector2(stageSize.x * 0.15f, stageSize.y * 0.5f); + direction = Vector2(stageSize.x * 0.03f, 0.f); + PerformGestureDiagonalSwipe(application, start, direction, 5, time, true, false); + DALI_TEST_CHECK(callbackPanStarted.mSignalVerified); + DALI_TEST_CHECK(callbackTurnStarted.mSignalVerified); + DALI_TEST_CHECK(!callbackTurnFinished.mSignalVerified); + DALI_TEST_CHECK(!callbackPanFinished.mSignalVerified); + + PerformGestureDiagonalSwipe(application, start + direction * 5.f, direction, 5, time, false, true); + DALI_TEST_CHECK(!callbackTurnFinished.mSignalVerified); + DALI_TEST_CHECK(callbackPanFinished.mSignalVerified); + + time += Wait(application, 1000); + DALI_TEST_CHECK(callbackTurnFinished.mSignalVerified); + DALI_TEST_EQUALS(landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get(), 0, TEST_LOCATION); // the first page is turned back + + // ----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--- + callbackTurnStarted.Reset(); + callbackTurnFinished.Reset(); + callbackPanStarted.Reset(); + callbackPanFinished.Reset(); + isTurningForwards = false; + start = stageSize * 0.55f; + direction = Vector2(stageSize.x * 0.025f, 0.f); + PerformGestureDiagonalSwipe(application, start, direction, 5, time, true, false); + DALI_TEST_CHECK(callbackPanStarted.mSignalVerified); + DALI_TEST_CHECK(!callbackTurnStarted.mSignalVerified); + DALI_TEST_CHECK(!callbackTurnFinished.mSignalVerified); + DALI_TEST_CHECK(!callbackPanFinished.mSignalVerified); + + PerformGestureDiagonalSwipe(application, start + direction * 5.f, direction, 5, time, false, true); + DALI_TEST_CHECK(!callbackTurnStarted.mSignalVerified); + DALI_TEST_CHECK(callbackPanFinished.mSignalVerified); + DALI_TEST_CHECK(!callbackTurnFinished.mSignalVerified); + + Wait(application, 1000); + + DALI_TEST_CHECK(!callbackTurnFinished.mSignalVerified); + DALI_TEST_EQUALS(landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get(), 0, TEST_LOCATION); + END_TEST; +} + +int UtcDaliPageImageFactoryGetExtention(void) +{ + ToolkitTestApplication application; + TestPageFactory factory; + DALI_TEST_CHECK(factory.GetExtension() == NULL); + END_TEST; +} + +int UtcDaliPageTurnEmptyTextureHandle(void) +{ + ToolkitTestApplication application; + + tet_infoline(" UtcDaliPageTurnEmptyTextureHandle "); + + application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE); + + TestPageFactory factory(false /* returns empty handles */); + Vector2 size = application.GetScene().GetSize(); + try + { + PageTurnView portraitView = PageTurnPortraitView::New(factory, size); + portraitView.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + application.GetScene().Add(portraitView); + + tet_result(TET_FAIL); + } + catch(DaliException& e) + { + DALI_TEST_ASSERT(e, "must pass in valid texture", TEST_LOCATION); + } + catch(...) + { + tet_result(TET_FAIL); + } + END_TEST; }