Revert "Remove ScrollViewCustomEffect"
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-ScrollViewEffect.cpp
index 8e9224c..02d0df1 100644 (file)
@@ -231,6 +231,25 @@ Actor AddActorToPage(Actor page, float x, float y, float cols, float rows)
 } // unnamed namespace
 
 
+int UtcDaliScrollViewCustomEffectSetup(void)
+{
+  tet_infoline(" UtcDaliScrollViewCustomEffectSetup");
+
+  ScrollViewCustomEffect effect;
+
+  DALI_TEST_CHECK( !effect );
+
+  BaseHandle handle = ScrollViewCustomEffect::New();
+
+  DALI_TEST_CHECK( handle );
+
+  effect = ScrollViewCustomEffect::DownCast(handle);
+
+  DALI_TEST_CHECK( effect );
+
+  END_TEST;
+}
+
 int UtcDaliScrollViewCubeEffectSetup(void)
 {
   tet_infoline(" UtcDaliScrollViewCubeEffectSetup");
@@ -402,3 +421,173 @@ int UtcDaliScrollViewSlideEffectTest(void)
   CleanupTest();
   END_TEST;
 }
+
+int UtcDaliScrollViewCustomEffectTest(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliScrollViewCustomEffectTest");
+
+  Vector2 size = Stage::GetCurrent().GetSize();
+  Vector3 pageSize(size.x, size.y, 0.0f);
+
+  ScrollView scrollView = SetupTestScrollView(1, 3, size);
+  Actor testPage = gPages[1];
+  Wait(application, 500);
+  Vector3 pageStartPos, pagePos;
+  pageStartPos = pagePos = testPage.GetCurrentPosition();
+  //scrollView.RemoveConstraintsFromChildren();
+
+  ScrollViewCustomEffect effect = ScrollViewCustomEffect::DownCast(scrollView.ApplyEffect(ScrollView::PageEffectCarousel));
+
+  for(ActorIter pageIter = gPages.begin(); pageIter != gPages.end(); ++pageIter)
+  {
+    Actor page = *pageIter;
+    page.RemoveConstraints();
+    page.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
+    effect.ApplyToPage(page, pageSize);
+  }
+  Wait(application);
+  pagePos = testPage.GetCurrentPosition();
+  DALI_TEST_EQUALS(pagePos, pageStartPos, Math::MACHINE_EPSILON_0, TEST_LOCATION);
+
+  scrollView.ScrollTo(1);
+  while(!gOnScrollCompleteCalled)
+  {
+    Wait(application);
+  }
+  ResetScrollCallbackResults();
+  // test that the first page has reached centre of screen
+  pagePos = testPage.GetCurrentPosition();
+  DALI_TEST_EQUALS(pagePos, Vector3::ZERO, Math::MACHINE_EPSILON_0, TEST_LOCATION);
+
+  // scroll back to page 0
+  scrollView.ScrollTo(0);
+  while(!gOnScrollCompleteCalled)
+  {
+    Wait(application);
+  }
+  ResetScrollCallbackResults();
+  pagePos = testPage.GetCurrentPosition();
+  DALI_TEST_EQUALS(pagePos, pageStartPos, Math::MACHINE_EPSILON_0, TEST_LOCATION);
+
+  scrollView.RemoveEffect(effect);
+
+  effect = ScrollViewCustomEffect::New();
+  effect.SetPageTranslation(Vector3(20.0f, 20.0f, 5.0f));
+  effect.SetPageTranslation(Vector3(20.0f, 20.0f, 5.0f), Vector3(20.0f, 20.0f, -5.0f));
+  effect.SetPageTranslationIn(Vector3(20.0f, 20.0f, 5.0f));
+  effect.SetPageTranslationOut(Vector3(20.0f, 20.0f, -5.0f));
+  effect.SetPageTranslation(Vector3(20.0f, 0.0f, 0.0f));
+  effect.SetSwingAngle(Math::PI, Vector3::YAXIS);
+  effect.SetPageSpacing(Vector2(20.0f, 20.0f));
+  scrollView.ApplyEffect(effect);
+
+  for(ActorIter pageIter = gPages.begin(); pageIter != gPages.end(); ++pageIter)
+  {
+    Actor page = *pageIter;
+    page.RemoveConstraints();
+    page.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
+    effect.ApplyToPage(page, pageSize);
+  }
+  Wait(application);
+  pagePos = testPage.GetCurrentPosition();
+  DALI_TEST_EQUALS(pagePos, pageStartPos, Math::MACHINE_EPSILON_0, TEST_LOCATION);
+
+  scrollView.ScrollTo(1);
+  while(!gOnScrollCompleteCalled)
+  {
+    Wait(application);
+  }
+  ResetScrollCallbackResults();
+  // test that the first page has reached centre of screen
+  pagePos = testPage.GetCurrentPosition();
+  DALI_TEST_EQUALS(pagePos, Vector3::ZERO, Math::MACHINE_EPSILON_0, TEST_LOCATION);
+
+  // scroll back to page 0
+  scrollView.ScrollTo(0);
+  while(!gOnScrollCompleteCalled)
+  {
+    Wait(application);
+  }
+  ResetScrollCallbackResults();
+  pagePos = testPage.GetCurrentPosition();
+  DALI_TEST_EQUALS(pagePos, pageStartPos, Math::MACHINE_EPSILON_0, TEST_LOCATION);
+
+  scrollView.RemoveEffect(effect);
+  effect = ScrollViewCustomEffect::New();
+  effect.SetSwingAngle(Math::PI, Vector3::YAXIS);
+  effect.SetSwingAnchor(AnchorPoint::CENTER_LEFT);
+  effect.SetPageTranslation(Vector3(size.x, size.y, 0));
+  effect.SetOpacityThreshold(0.66f);
+  scrollView.ApplyEffect(effect);
+
+  for(ActorIter pageIter = gPages.begin(); pageIter != gPages.end(); ++pageIter)
+  {
+    Actor page = *pageIter;
+    page.RemoveConstraints();
+    page.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
+    effect.ApplyToPage(page, pageSize);
+  }
+  Wait(application);
+
+  scrollView.ScrollTo(1);
+  while(!gOnScrollCompleteCalled)
+  {
+    Wait(application);
+  }
+  ResetScrollCallbackResults();
+  // test that the first page has reached centre of screen
+  pagePos = testPage.GetCurrentPosition();
+  DALI_TEST_EQUALS(pagePos, Vector3::ZERO, Math::MACHINE_EPSILON_0, TEST_LOCATION);
+
+  // scroll back to page 0
+  scrollView.ScrollTo(0);
+  while(!gOnScrollCompleteCalled)
+  {
+    Wait(application);
+  }
+  ResetScrollCallbackResults();
+  pagePos = testPage.GetCurrentPosition();
+  DALI_TEST_EQUALS(pagePos, pageStartPos, Math::MACHINE_EPSILON_0, TEST_LOCATION);
+  scrollView.RemoveEffect(effect);
+
+
+  effect.SetPageTranslateAlphaFunction(AlphaFunctions::Linear);
+  effect.SetPageTranslateAlphaFunction(AlphaFunctions::Linear, AlphaFunctions::Linear);
+  effect.SetPageTranslateAlphaFunctionIn(AlphaFunctions::Linear);
+  effect.SetPageTranslateAlphaFunctionOut(AlphaFunctions::Linear);
+  effect.SetGlobalPageRotation(Math::PI, Vector3::YAXIS);
+  effect.SetAngledOriginPageRotation(Vector3(Math::PI, Math::PI, 0.0f));
+  effect.SetGlobalPageRotation(Math::PI, Vector3::YAXIS, Math::PI, Vector3::YAXIS);
+  effect.SetGlobalPageRotationIn(Math::PI, Vector3::YAXIS);
+  effect.SetGlobalPageRotationOut(Math::PI, Vector3::YAXIS);
+  effect.SetGlobalPageRotationOrigin(Vector3::ZERO);
+  effect.SetGlobalPageRotationOrigin(Vector3::ZERO, Vector3::ZERO);
+  effect.SetGlobalPageRotationOriginIn(Vector3::ZERO);
+  effect.SetGlobalPageRotationOriginOut(Vector3::ZERO);
+  effect.SetSwingAngle(Math::PI, Vector3::YAXIS);
+  effect.SetSwingAngle(Math::PI, Vector3::YAXIS, Math::PI, Vector3::YAXIS);
+  effect.SetSwingAngleIn(Math::PI, Vector3::YAXIS);
+  effect.SetSwingAngleOut(Math::PI, Vector3::YAXIS);
+  effect.SetSwingAngleAlphaFunction(AlphaFunctions::Linear);
+  effect.SetSwingAngleAlphaFunction(AlphaFunctions::Linear, AlphaFunctions::Linear);
+  effect.SetSwingAngleAlphaFunctionIn(AlphaFunctions::Linear);
+  effect.SetSwingAngleAlphaFunctionOut(AlphaFunctions::Linear);
+  effect.SetSwingAnchor(AnchorPoint::CENTER, AnchorPoint::CENTER_LEFT);
+  effect.SetSwingAnchorIn(AnchorPoint::CENTER);
+  effect.SetSwingAnchorOut(AnchorPoint::CENTER);
+  effect.SetSwingAnchorAlphaFunction(AlphaFunctions::Linear);
+  effect.SetSwingAnchorAlphaFunction(AlphaFunctions::Linear, AlphaFunctions::Linear);
+  effect.SetSwingAnchorAlphaFunctionIn(AlphaFunctions::Linear);
+  effect.SetSwingAnchorAlphaFunctionOut(AlphaFunctions::Linear);
+  effect.SetOpacityThreshold(0.5f);
+  effect.SetOpacityThreshold(0.5f, 0.5f);
+  effect.SetOpacityThresholdIn(0.5f);
+  effect.SetOpacityThresholdOut(0.5f);
+  effect.SetOpacityAlphaFunction(AlphaFunctions::Linear);
+  effect.SetOpacityAlphaFunction(AlphaFunctions::Linear, AlphaFunctions::Linear);
+  effect.SetOpacityAlphaFunctionIn(AlphaFunctions::Linear);
+  effect.SetOpacityAlphaFunctionOut(AlphaFunctions::Linear);
+  CleanupTest();
+  END_TEST;
+}