/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2016 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.
#include <sstream>
#include <dali-toolkit-test-suite-utils.h>
#include <dali/integration-api/events/pan-gesture-event.h>
-#include <dali-toolkit/public-api/controls/page-turn-view/page-factory.h>
-#include <dali-toolkit/public-api/controls/page-turn-view/page-turn-landscape-view.h>
-#include <dali-toolkit/public-api/controls/page-turn-view/page-turn-portrait-view.h>
-#include <dali-toolkit/public-api/controls/page-turn-view/page-turn-view.h>
-
-
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-factory.h>
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-landscape-view.h>
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-portrait-view.h>
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-view.h>
using namespace Dali;
using namespace Dali::Toolkit;
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<float>( IMAGE_WIDTH ), static_cast<float>(IMAGE_HEIGHT) );
const Vector2 SPINE_SHADOW_PARAMETER( 60.0f, 30.0f );
static bool gObjectCreatedCallBackCalled;
{
public:
- TestPageFactory(ToolkitTestApplication& application)
- : mApplication( application )
+ TestPageFactory(ToolkitTestApplication& application, bool returnValidTexture = true )
+ : mApplication( application ),
+ mValidTexture( returnValidTexture )
{
- mSourceActors.resize(TOTAL_PAGE_NUMBER);
mTotalPageNumber = TOTAL_PAGE_NUMBER;
}
}
/**
- * Create an image actor to represent a page.
+ * Create an texture to represent a page content.
* @param[in] pageId The ID of the page to create.
- * @return An image actor, or an uninitialized pointer if the ID is out of range.
+ * @return An image, or an empty handle if the ID is out of range.
*/
- virtual Actor NewPage( unsigned int pageId )
+ virtual Texture NewPage( unsigned int pageId )
{
- if(!mSourceActors[pageId])
+ if( mValidTexture )
{
- Actor actor = CreateSolidColorImageActor(mApplication, Color::BLUE,IMAGE_WIDTH,IMAGE_HEIGHT);
- actor.SetName( static_cast<std::ostringstream*>( &(std::ostringstream() << pageId) )->str() );
-
- actor.SetParentOrigin( ParentOrigin::CENTER );
- actor.SetAnchorPoint( AnchorPoint::CENTER );
-
- 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<Actor> mSourceActors;
unsigned int mTotalPageNumber;
+ bool mValidTexture;
};
}// namespace
registry.ObjectCreatedSignal().Connect( &TestCallback );
{
TestPageFactory factory(application);
- PageTurnView PortraitView = PageTurnPortraitView::New( factory, PAGE_SIZE );
+ PageTurnView portraitView = PageTurnPortraitView::New( factory, PAGE_SIZE );
}
DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
handleView = portraitView;
PageTurnView downCastView = PageTurnView::DownCast( handleView );
DALI_TEST_CHECK( downCastView );
+
END_TEST;
}
END_TEST;
}
+int UtcDaliPageTurnPortraitViewCopyConstructorAndAssignment(void)
+{
+ ToolkitTestApplication application;
+
+ tet_infoline(" UtcDaliPageTurnPortraitViewCopyConstructorAndAssignment ");
+
+ // Test default constructor
+ PageTurnPortraitView portraitView;
+ DALI_TEST_CHECK( !portraitView );
+
+ // Test object creation
+ TestPageFactory factory(application);
+ portraitView = PageTurnPortraitView::New( factory, PAGE_SIZE );
+ DALI_TEST_CHECK( portraitView );
+
+ // Test copy constructor
+ PageTurnPortraitView viewCopy( portraitView );
+ DALI_TEST_CHECK( viewCopy );
+
+ // Test assignment
+ PageTurnPortraitView portraitView2;
+ portraitView2 = portraitView;
+ DALI_TEST_CHECK( portraitView2 );
+ DALI_TEST_CHECK( portraitView == portraitView2);
+
+ // Test down cast
+ Handle handleView;
+ handleView = portraitView;
+ PageTurnPortraitView downCastView = PageTurnPortraitView::DownCast( handleView );
+ DALI_TEST_CHECK( downCastView );
+
+ END_TEST;
+}
+
+int UtcDaliPageTurnLandscapeViewCopyConstructorAndAssignment(void)
+{
+ ToolkitTestApplication application;
+
+ tet_infoline(" UtcDaliPageTurnLandscapeViewCopyConstructorAndAssignment ");
+
+ // Test default constructor
+ PageTurnLandscapeView landscapeView;
+ DALI_TEST_CHECK( !landscapeView );
+
+ // Test object creation
+ TestPageFactory factory(application);
+ landscapeView = PageTurnLandscapeView::New( factory, PAGE_SIZE );
+ DALI_TEST_CHECK( landscapeView );
+
+ // Test copy constructor
+ PageTurnLandscapeView viewCopy( landscapeView );
+ DALI_TEST_CHECK( viewCopy );
+
+ // Test assignment
+ PageTurnLandscapeView landscapeView2;
+ landscapeView2 = landscapeView;
+ DALI_TEST_CHECK( landscapeView2 );
+ DALI_TEST_CHECK( landscapeView == landscapeView2);
+
+ // Test down cast
+ Handle handleView;
+ handleView = landscapeView;
+ PageTurnLandscapeView downCastView = PageTurnLandscapeView::DownCast( handleView );
+ DALI_TEST_CHECK( downCastView );
+
+ END_TEST;
+}
+
int UtcDaliPageTurnViewSetGetProperty(void)
{
ToolkitTestApplication application;
Stage::GetCurrent().Add( landscapeView );
- // Test "page-size" property
- DALI_TEST_CHECK( landscapeView.GetPropertyIndex("page-size") == PageTurnView::Property::PAGE_SIZE );
+ // Test "pageSize" property
+ DALI_TEST_CHECK( landscapeView.GetPropertyIndex("pageSize") == PageTurnView::Property::PAGE_SIZE );
DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::PAGE_SIZE).Get<Vector2>(), PAGE_SIZE, TEST_LOCATION );
Vector2 newSize( PAGE_SIZE.x*0.75, PAGE_SIZE.y*0.5f );
Wait( application);
DALI_TEST_EQUALS( Vector2(landscapeView.GetTargetSize()), Vector2(newSize.x*3.f, newSize.y*1.5f), TEST_LOCATION);
- // Test "current-page-id" property
- DALI_TEST_CHECK( landscapeView.GetPropertyIndex("current-page-id") == PageTurnView::Property::CURRENT_PAGE_ID );
+ // 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<int>(), 0, TEST_LOCATION );
int pageId = static_cast<int>(TOTAL_PAGE_NUMBER)/3;
landscapeView.SetProperty( PageTurnView::Property::CURRENT_PAGE_ID, pageId*2 );
DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), pageId*2, TEST_LOCATION );
- // Test "spin-shadow" property
- DALI_TEST_CHECK( landscapeView.GetPropertyIndex( "spine-shadow" ) == PageTurnView::Property::SPINE_SHADOW );
+ // 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<Vector2>(), SPINE_SHADOW_PARAMETER, TEST_LOCATION );
END_TEST;
}
-int UtcDaliPageTurnViewSignals(void)
+int UtcDaliPageTurnPortraitViewSignals(void)
{
ToolkitTestApplication application;
- tet_infoline(" UtcDaliPageTurnViewSignals ");
+ tet_infoline(" UtcDaliPageTurnPortraitViewSignals ");
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 );
+ portraitView.SetParentOrigin( ParentOrigin::CENTER );
Stage::GetCurrent().Add( portraitView );
// Render and notify
Wait(application, 1000);
DALI_TEST_CHECK( callbackTurnFinished.mSignalVerified );
- // the page is turn over
- DALI_TEST_EQUALS( portraitView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), pageIndex+1, TEST_LOCATION );
+ // the page is turned over
+ DALI_TEST_EQUALS( portraitView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), (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();
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
+ DALI_TEST_EQUALS( portraitView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), (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();
DALI_TEST_EQUALS( portraitView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), 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(application);
+ Vector2 stageSize = Stage::GetCurrent().GetSize();
+ PageTurnView landscapeView = PageTurnLandscapeView::New( factory, Vector2(stageSize.x*0.5f, stageSize.x*0.8f) );
+ landscapeView.SetParentOrigin( ParentOrigin::CENTER );
+ Stage::GetCurrent().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.
+ 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<int>(), 0, TEST_LOCATION );
+ 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 );
+ // the page is turned over
+ DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), (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, 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( !callbackTurnFinished.mSignalVerified );
+ DALI_TEST_CHECK( callbackPanFinished.mSignalVerified );
+
+ Wait(application, 1000);
+ DALI_TEST_CHECK( callbackTurnFinished.mSignalVerified );
+ DALI_TEST_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), 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, 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_EQUALS( landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), 0, TEST_LOCATION );
+ END_TEST;
+}
+
+int UtcDaliPageImageFactoryGetExtention(void)
+{
+ ToolkitTestApplication application;
+ TestPageFactory factory(application);
+ DALI_TEST_CHECK( factory.GetExtension() == NULL );
+ END_TEST;
+}
+
+int UtcDaliPageTurnEmptyTextureHandle(void)
+{
+ ToolkitTestApplication application;
+
+ tet_infoline(" UtcDaliPageTurnEmptyTextureHandle ");
+
+ application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
+
+ TestPageFactory factory(application, false); // returns empty handles
+ Vector2 size = Stage::GetCurrent().GetSize();
+ try
+ {
+ PageTurnView portraitView = PageTurnPortraitView::New( factory, size );
+ portraitView.SetParentOrigin( ParentOrigin::CENTER );
+ Stage::GetCurrent().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;
+}
+