[dali_2.3.19] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-PageTurnView.cpp
index c905b71..7415f8a 100644 (file)
@@ -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.
  *
  */
 
-#include <iostream>
+#include <dali-toolkit-test-suite-utils.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>
+#include <dali/integration-api/events/touch-event-integ.h>
 #include <stdlib.h>
 #include <string.h>
+#include <iostream>
 #include <sstream>
-#include <dali-toolkit-test-suite-utils.h>
-#include <dali-toolkit/dali-toolkit.h>
-#include <dali/integration-api/events/pan-gesture-event.h>
 
 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<float>( IMAGE_WIDTH ), static_cast<float>(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<frames;i++)
+  time += Wait(application);
+
+  for(int i = 0; i < frames; i++)
   {
-    pos += direction; // Move in this direction
-    SendPan(application, Gesture::Continuing, pos);
-    Wait(application);
+    pos += direction;
+    TestMovePan(application, pos, time);
+    time += Wait(application);
   }
 
   if(toFinish)
   {
-    pos += direction; // Move in this direction
-    SendPan(application, Gesture::Finished, pos);
-    Wait(application);
+    pos += direction;
+    TestEndPan(application, pos, time);
+    time += Wait(application);
   }
 
   return pos;
 }
 
-
 //Functor to test whether PageTurnSignal / PagePanSignal is emitted
 class PageSignalCallback : public Dali::ConnectionTracker
 {
 public:
-
-  PageSignalCallback( bool& signalReceived, PageTurnView& view, unsigned int& pageIndex, bool& isForwards )
-  : mSignalVerified( signalReceived ),
-    mView( view ),
-    mPageIndex( pageIndex ),
-    mIsTurningForwards( isForwards )
+  PageSignalCallback(bool& signalReceived, PageTurnView& view, unsigned int& pageIndex, bool& isForwards)
+  : mSignalVerified(signalReceived),
+    mView(view),
+    mPageIndex(pageIndex),
+    mIsTurningForwards(isForwards)
   {
   }
 
   // callback to be connected to PageTurnSignal
-  void PageTurnSignalCallback( PageTurnView view, unsigned int pageIndex, bool isTurningForward )
+  void PageTurnSignalCallback(PageTurnView view, unsigned int pageIndex, bool isTurningForward)
   {
-    tet_infoline( "Verifying PageTurnedSignal" );
+    tet_infoline("Verifying PageTurnedSignal");
 
-    if( mView == view && mPageIndex == pageIndex && mIsTurningForwards == isTurningForward )
+    if(mView == view && mPageIndex == pageIndex && mIsTurningForwards == isTurningForward)
     {
       mSignalVerified = true;
     }
   }
 
   // callback to be connected to PagePanSignal
-  void PagePanSignalCallback( PageTurnView view )
+  void PagePanSignalCallback(PageTurnView view)
   {
-    tet_infoline( "Verifying PagePannedSignal" );
+    tet_infoline("Verifying PagePannedSignal");
 
-    if( mView == view )
+    if(mView == view)
     {
       mSignalVerified = true;
     }
@@ -176,19 +138,15 @@ public:
   PageTurnView& mView;
   unsigned int& mPageIndex;
   bool&         mIsTurningForwards;
-
 };
 
-
 //Implementation of PageFactory for providing page actors to PageTurnView
 class TestPageFactory : public PageFactory
 {
 public:
-
-  TestPageFactory(ToolkitTestApplication& application)
-  : mApplication( application )
+  TestPageFactory(bool returnValidTexture = true)
+  : mValidTexture(returnValidTexture)
   {
-    mSourceActors.resize(TOTAL_PAGE_NUMBER);
     mTotalPageNumber = TOTAL_PAGE_NUMBER;
   }
 
@@ -202,41 +160,25 @@ public:
   }
 
   /**
-   * 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 );
-
-      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<Actor>      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 );
-
-  TestPageFactory factory(application);
-  factory.EnableOffscreenRendering( );
+  tet_infoline(" UtcDaliPageTurnLandscapeViewCopyConstructorAndAssignment ");
 
-  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<Vector2>(), 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<Vector2>(), 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<Vector2>(), 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<int>(), 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<int>(TOTAL_PAGE_NUMBER) / 3;
+  landscapeView.SetProperty(PageTurnView::Property::CURRENT_PAGE_ID, pageId);
+  DALI_TEST_EQUALS(landscapeView.GetProperty(PageTurnView::Property::CURRENT_PAGE_ID).Get<int>(), pageId, TEST_LOCATION);
 
-int UtcDaliPageTurnViewRefresh(void)
-{
-  ToolkitTestApplication application;
+  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);
 
-  tet_infoline(" UtcDaliPageTurnViewRefresh ");
+  // 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);
 
-  application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE );
+  landscapeView.SetProperty(PageTurnView::Property::SPINE_SHADOW, SPINE_SHADOW_PARAMETER * 0.75f);
+  DALI_TEST_EQUALS(landscapeView.GetProperty(PageTurnView::Property::SPINE_SHADOW).Get<Vector2>(), SPINE_SHADOW_PARAMETER * 0.75f, 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();
-
-  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] = {false, false, false, false};
+  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<int>(), 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>(), (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>(), (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, 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<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;
+  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<int>(), 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>(), (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;
-  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);
+
+  //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<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, 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<int>(), 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;
 }