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-ScrollViewEffect.cpp;h=fa269404a045aad63f0209ab42d6e510f0ae4b7f;hp=1b6f1c6a1f7b7b2bf5efb847be298963ab170273;hb=HEAD;hpb=0a2f5e1551be90466c7b64173bd750c4009c744e diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ScrollViewEffect.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ScrollViewEffect.cpp index 1b6f1c6..147df63 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ScrollViewEffect.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ScrollViewEffect.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,17 +15,16 @@ * */ -#include #include +#include // Need to override adaptor classes for toolkit test harness, so include // test harness headers before dali headers. #include -#include #include +#include #include -#include using namespace Dali; using namespace Toolkit; @@ -42,11 +41,7 @@ void utc_dali_toolkit_scroll_view_effect_cleanup(void) namespace { - -const int MILLISECONDS_PER_SECOND = 1000; -const int RENDER_FRAME_INTERVAL = 16; ///< Duration of each frame in ms. (at approx 60FPS) -const int RENDER_ANIMATION_TEST_DURATION_MS = 1000; ///< 1000ms to test animation -const int RENDER_DELAY_SCROLL = 1000; ///< duration to wait for any scroll to complete. +const int RENDER_FRAME_INTERVAL = 16; ///< Duration of each frame in ms. (at approx 60FPS) /* * Simulate time passed by. @@ -61,7 +56,7 @@ int Wait(ToolkitTestApplication& application, int duration = 0) { int time = 0; - for(int i = 0; i <= ( duration / RENDER_FRAME_INTERVAL); i++) + for(int i = 0; i <= (duration / RENDER_FRAME_INTERVAL); i++) { application.SendNotification(); application.Render(RENDER_FRAME_INTERVAL); @@ -84,24 +79,25 @@ RulerPtr CreateRuler(float gridSize = 0.0f) { if(gridSize <= Math::MACHINE_EPSILON_0) { - return new DefaultRuler(); + return new DefaultRuler(); } return new FixedRuler(gridSize); } // Callback probes. -static bool gOnScrollStartCalled; ///< Whether the OnScrollStart signal was invoked. -static bool gOnScrollUpdateCalled; ///< Whether the OnScrollUpdate signal was invoked. -static bool gOnScrollCompleteCalled; ///< Whether the OnScrollComplete signal was invoked. -static Vector3 gConstraintResult; ///< Result from constraint. +static bool gOnScrollStartCalled; ///< Whether the OnScrollStart signal was invoked. +static bool gOnScrollUpdateCalled; ///< Whether the OnScrollUpdate signal was invoked. +static bool gOnScrollCompleteCalled; ///< Whether the OnScrollComplete signal was invoked. +static Vector3 gConstraintResult; ///< Result from constraint. -static ActorContainer gPages; ///< Keeps track of all the pages for applying effects. +static std::vector gPages; ///< Keeps track of all the pages for applying effects. +typedef std::vector::iterator ActorIter; static void ResetScrollCallbackResults() { - gOnScrollStartCalled = false; - gOnScrollUpdateCalled = false; + gOnScrollStartCalled = false; + gOnScrollUpdateCalled = false; gOnScrollCompleteCalled = false; } @@ -110,7 +106,7 @@ static void ResetScrollCallbackResults() * * @param[in] position The current scroll position. */ -static void OnScrollStart( const Vector3& position ) +static void OnScrollStart(const Vector2& position) { gOnScrollStartCalled = true; } @@ -120,7 +116,7 @@ static void OnScrollStart( const Vector3& position ) * * @param[in] position The current scroll position. */ -static void OnScrollUpdate( const Vector3& position ) +static void OnScrollUpdate(const Vector2& position) { gOnScrollUpdateCalled = true; } @@ -130,29 +126,29 @@ static void OnScrollUpdate( const Vector3& position ) * * @param[in] position The current scroll position. */ -static void OnScrollComplete( const Vector3& position ) +static void OnScrollComplete(const Vector2& position) { gOnScrollCompleteCalled = true; } -ScrollView SetupTestScrollView(int rows, int columns, Vector2 size) +ScrollView SetupTestScrollView(Integration::Scene scene, int rows, int columns, Vector2 size) { Constraint constraint; ScrollView scrollView = ScrollView::New(); - scrollView.SetSize(size); - scrollView.SetAnchorPoint(AnchorPoint::CENTER); - scrollView.SetParentOrigin(ParentOrigin::CENTER); + scrollView.SetProperty(Actor::Property::SIZE, size); + scrollView.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); + scrollView.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); - constraint = Constraint::New( scrollView, Dali::Actor::Property::SIZE, Dali::EqualToConstraint() ); - constraint.AddSource( Dali::ParentSource( Dali::Actor::Property::SIZE ) ); + constraint = Constraint::New(scrollView, Dali::Actor::Property::SIZE, Dali::EqualToConstraint()); + constraint.AddSource(Dali::ParentSource(Dali::Actor::Property::SIZE)); constraint.Apply(); scrollView.SetWrapMode(false); - scrollView.ScrollStartedSignal().Connect( &OnScrollStart ); - scrollView.ScrollUpdatedSignal().Connect( &OnScrollUpdate ); - scrollView.ScrollCompletedSignal().Connect( &OnScrollComplete ); - Stage::GetCurrent().Add( scrollView ); + scrollView.ScrollStartedSignal().Connect(&OnScrollStart); + scrollView.ScrollUpdatedSignal().Connect(&OnScrollUpdate); + scrollView.ScrollCompletedSignal().Connect(&OnScrollComplete); + scene.Add(scrollView); RulerPtr rulerX = CreateRuler(size.width); RulerPtr rulerY = CreateRuler(size.height); if(columns > 1) @@ -172,33 +168,33 @@ ScrollView SetupTestScrollView(int rows, int columns, Vector2 size) rulerY->Disable(); } - scrollView.SetRulerX( rulerX ); - scrollView.SetRulerY( rulerY ); - Stage::GetCurrent().Add( scrollView ); + scrollView.SetRulerX(rulerX); + scrollView.SetRulerY(rulerY); + scene.Add(scrollView); Actor container = Actor::New(); - container.SetParentOrigin(ParentOrigin::CENTER); - container.SetAnchorPoint(AnchorPoint::CENTER); - container.SetSize( size ); - scrollView.Add( container ); + container.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + container.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); + container.SetProperty(Actor::Property::SIZE, size); + scrollView.Add(container); - constraint = Constraint::New( container, Actor::Property::SIZE, EqualToConstraint() ); - constraint.AddSource( Dali::ParentSource( Dali::Actor::Property::SIZE ) ); + constraint = Constraint::New(container, Actor::Property::SIZE, EqualToConstraint()); + constraint.AddSource(Dali::ParentSource(Dali::Actor::Property::SIZE)); constraint.Apply(); gPages.clear(); - for(int row = 0;row( page, Actor::Property::SIZE, EqualToConstraint() ); - constraint.AddSource( Dali::ParentSource( Dali::Actor::Property::SIZE ) ); + constraint = Constraint::New(page, Actor::Property::SIZE, EqualToConstraint()); + constraint.AddSource(Dali::ParentSource(Dali::Actor::Property::SIZE)); constraint.Apply(); - page.SetParentOrigin( ParentOrigin::CENTER ); - page.SetAnchorPoint( AnchorPoint::CENTER ); - page.SetPosition( column * size.x, row * size.y ); + page.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + page.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER); + page.SetProperty(Actor::Property::POSITION, Vector2(column * size.x, row * size.y)); container.Add(page); gPages.push_back(page); @@ -215,241 +211,73 @@ void CleanupTest() ResetScrollCallbackResults(); } -Actor AddActorToPage(Actor page, float x, float y, float cols, float rows) -{ - Stage stage = Stage::GetCurrent(); - Vector2 stageSize = stage.GetSize(); - - const float margin = 10.0f; - const Vector2 actorSize((stageSize.x / cols) - margin, (stageSize.y / rows) - margin); - - Actor actor = Actor::New(); - actor.SetParentOrigin( ParentOrigin::CENTER ); - actor.SetAnchorPoint( AnchorPoint::CENTER ); - - Vector3 position( margin * 0.5f + (actorSize.x + margin) * x - stageSize.width * 0.5f, - margin * 0.5f + (actorSize.y + margin) * y - stageSize.height * 0.5f, - 0.0f); - Vector3 positionEnd( margin * 0.5f + (actorSize.x + margin) * (x + cols) - stageSize.width * 0.5f - margin, - margin * 0.5f + (actorSize.y + margin) * (y + rows) - stageSize.height * 0.5f - margin, - 0.0f); - Vector3 size(positionEnd - position); - actor.SetPosition( position + size * 0.5f); - actor.SetSize( positionEnd - position ); - page.Add(actor); - return actor; -} - } // unnamed namespace - -int UtcDaliScrollViewCubeEffectSetup(void) -{ - tet_infoline(" UtcDaliScrollViewCubeEffectSetup"); - - ScrollViewCubeEffect effect; - - DALI_TEST_CHECK( !effect ); - - BaseHandle handle = ScrollViewCubeEffect::New(); - - DALI_TEST_CHECK( handle ); - - effect = ScrollViewCubeEffect::DownCast(handle); - - DALI_TEST_CHECK( effect ); - END_TEST; -} - -int UtcDaliScrollViewSpiralEffectSetup(void) -{ - tet_infoline(" UtcDaliScrollViewSpiralEffectSetup"); - - ScrollViewPageSpiralEffect effect; - - DALI_TEST_CHECK( !effect ); - - BaseHandle handle = ScrollViewPageSpiralEffect::New(); - - DALI_TEST_CHECK( handle ); - - effect = ScrollViewPageSpiralEffect::DownCast(handle); - - DALI_TEST_CHECK( effect ); - END_TEST; -} - -int UtcDaliScrollViewCubeEffectTest(void) -{ - ToolkitTestApplication application; - tet_infoline(" UtcDaliScrollViewCubeEffectTest"); - - Vector2 size = Stage::GetCurrent().GetSize(); - - ScrollView scrollView = SetupTestScrollView(1, 3, size); - Actor page = gPages[1]; - Wait(application, 500); - - ScrollViewCubeEffect effect = ScrollViewCubeEffect::New(); - scrollView.ApplyEffect(effect); - - Actor actor = AddActorToPage(page, 0.5f, 0.5f, 3, 3); - Wait(application); - Vector3 actorPrePosition = actor.GetCurrentPosition(); - - effect.ApplyToActor(actor, page, Vector3(-105.0f, 30.0f, -240.0f), Vector2(Math::PI * 0.5f, Math::PI * 0.5f), Vector2(0.25f, 0.25f) * size); - - Actor actor2 = AddActorToPage(page, 0.5f, 0.5f, 3, 3); - effect.ApplyToActor(actor2, Vector3(-105.0f, 30.0f, -240.0f), Vector2(Math::PI * 0.5f, Math::PI * 0.5f), Vector2(0.25f, 0.25f) * size); - - scrollView.ScrollTo(1); - while(!gOnScrollCompleteCalled) - { - Wait(application); - } - // test that the first page has reached centre of screen - Vector3 actorPostPosition = actor.GetCurrentPosition(); - // just check the actor has moved - DALI_TEST_CHECK((actorPostPosition - actorPrePosition).Length() > Math::MACHINE_EPSILON_1); - CleanupTest(); - END_TEST; -} - - -int UtcDaliScrollViewSpiralEffectTest(void) +int UtcDaliScrollViewPagePathEffectSetup(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliScrollViewSpiralEffectTest"); - - Vector2 size = Stage::GetCurrent().GetSize(); - - ScrollView scrollView = SetupTestScrollView(1, 3, size); - Actor testPage = gPages[1]; - Wait(application, 500); - - ScrollViewPageSpiralEffect effect = ScrollViewPageSpiralEffect::New(); - scrollView.ApplyEffect(effect); - - for(ActorIter pageIter = gPages.begin(); pageIter != gPages.end(); ++pageIter) - { - Actor page = *pageIter; - page.RemoveConstraints(); - - Constraint constraint = Constraint::New( page, Actor::Property::SIZE, EqualToConstraint() ); - constraint.AddSource( ParentSource( Actor::Property::SIZE ) ); - constraint.Apply(); - effect.ApplyToPage(page, Vector2(Math::PI_2, 0.0f)); - } - Wait(application); - - scrollView.ScrollTo(1); - while(!gOnScrollCompleteCalled) - { - Wait(application); - } - // test that the first page has reached centre of screen - Vector3 pagePos = testPage.GetCurrentPosition(); - DALI_TEST_EQUALS(pagePos, Vector3::ZERO, Math::MACHINE_EPSILON_0, TEST_LOCATION); - CleanupTest(); - END_TEST; -} - -int UtcDaliScrollViewPageCubeEffectSetup(void) -{ - tet_infoline(" UtcDaliScrollViewPageCubeEffectSetup"); - - ScrollViewPageCubeEffect effect; - - DALI_TEST_CHECK( !effect ); - - BaseHandle handle = ScrollViewPageCubeEffect::New(); - - DALI_TEST_CHECK( handle ); - - effect = ScrollViewPageCubeEffect::DownCast(handle); - - DALI_TEST_CHECK( effect ); - END_TEST; -} - + tet_infoline(" UtcDaliScrollViewPagePathEffectSetup"); -int UtcDaliScrollViewPageCarouselEffectSetup(void) -{ - tet_infoline(" UtcDaliScrollViewCarouselEffectSetup"); - - ScrollViewPageCarouselEffect effect; - - DALI_TEST_CHECK( !effect ); - - BaseHandle handle = ScrollViewPageCarouselEffect::New(); - - DALI_TEST_CHECK( handle ); - - effect = ScrollViewPageCarouselEffect::DownCast(handle); - - DALI_TEST_CHECK( effect ); - END_TEST; -} - -int UtcDaliScrollViewCarouselEffectSetup(void) -{ - tet_infoline(" UtcDaliScrollViewCarouselEffectSetup"); + ScrollViewPagePathEffect effect; - ScrollViewCarouselEffect effect; + DALI_TEST_CHECK(!effect); - DALI_TEST_CHECK( !effect ); + BaseHandle handle = ScrollViewPagePathEffect::New(Dali::Path::New(), Vector3::ZERO, Toolkit::ScrollView::Property::SCROLL_FINAL_X, Vector3::ZERO, 0); - BaseHandle handle = ScrollViewCarouselEffect::New(); + DALI_TEST_CHECK(handle); - DALI_TEST_CHECK( handle ); + effect = ScrollViewPagePathEffect::DownCast(handle); - effect = ScrollViewCarouselEffect::DownCast(handle); - - DALI_TEST_CHECK( effect ); + DALI_TEST_CHECK(effect); END_TEST; } -int UtcDaliScrollViewDepthEffectSetup(void) -{ - tet_infoline(" UtcDaliScrollViewDepthEffectSetup"); - - ScrollViewDepthEffect effect; - - DALI_TEST_CHECK( !effect ); - - BaseHandle handle = ScrollViewDepthEffect::New(); - - DALI_TEST_CHECK( handle ); - - effect = ScrollViewDepthEffect::DownCast(handle); - - DALI_TEST_CHECK( effect ); - END_TEST; -} - - -int UtcDaliScrollViewPageCubeEffectTest(void) +int UtcDaliScrollViewPagePathEffectTest(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliScrollViewPageCubeEffectTest"); + tet_infoline(" UtcDaliScrollViewPagePathEffectTest"); - Vector2 size = Stage::GetCurrent().GetSize(); + Vector2 size = application.GetScene().GetSize(); - ScrollView scrollView = SetupTestScrollView(1, 3, size); - Actor testPage = gPages[1]; + ScrollView scrollView = SetupTestScrollView(application.GetScene(), 1, 3, size); + Actor testPage = gPages[2]; Wait(application, 500); - ScrollViewPageCubeEffect effect = ScrollViewPageCubeEffect::New(); + //Create path + float xHalfSize(size.x * 0.5f); + + Dali::Path path = Dali::Path::New(); + Dali::Property::Array points; + points.Resize(3); + points[0] = Vector3(xHalfSize, 0.0f, -xHalfSize); + points[1] = Vector3(0.0f, 0.0f, 0.0f); + points[2] = Vector3(-xHalfSize, 0.0f, -xHalfSize); + path.SetProperty(Path::Property::POINTS, points); + + Dali::Property::Array controlPoints; + controlPoints.Resize(4); + controlPoints[0] = Vector3(xHalfSize, 0.0f, 0.0f); + controlPoints[1] = Vector3(xHalfSize, 0.0f, 0.0f); + controlPoints[2] = Vector3(-xHalfSize, 0.0f, 0.0f); + controlPoints[3] = Vector3(-xHalfSize, 0.0f, 0.0f); + path.SetProperty(Path::Property::CONTROL_POINTS, controlPoints); + + ScrollViewPagePathEffect effect = ScrollViewPagePathEffect::New(path, + Vector3::ZERO, + Toolkit::ScrollView::Property::SCROLL_FINAL_X, + Vector3(size.x, size.y, 0.0f), + 3); scrollView.ApplyEffect(effect); + unsigned int pageCounter(0); for(ActorIter pageIter = gPages.begin(); pageIter != gPages.end(); ++pageIter) { Actor page = *pageIter; page.RemoveConstraints(); - Constraint constraint = Constraint::New( page, Actor::Property::SIZE, EqualToConstraint() ); - constraint.AddSource( ParentSource( Actor::Property::SIZE ) ); + Constraint constraint = Constraint::New(page, Actor::Property::SIZE, EqualToConstraint()); + constraint.AddSource(ParentSource(Actor::Property::SIZE)); constraint.Apply(); - effect.ApplyToPage(page, Vector2(Math::PI_2, 0.0f)); + effect.ApplyToPage(page, pageCounter++); } Wait(application); @@ -458,117 +286,11 @@ int UtcDaliScrollViewPageCubeEffectTest(void) { Wait(application); } - // test that the first page has reached centre of screen - Vector3 pagePos = testPage.GetCurrentPosition(); - DALI_TEST_EQUALS(pagePos, Vector3::ZERO, Math::MACHINE_EPSILON_0, TEST_LOCATION); - CleanupTest(); - END_TEST; -} - -int UtcDaliScrollViewPageCarouselEffectTest(void) -{ - ToolkitTestApplication application; - tet_infoline(" UtcDaliScrollViewPageCarouselEffectTest"); - - Vector2 size = Stage::GetCurrent().GetSize(); - - ScrollView scrollView = SetupTestScrollView(1, 3, size); - Actor testPage = gPages[1]; - Wait(application, 500); - - ScrollViewPageCarouselEffect effect = ScrollViewPageCarouselEffect::New(); - scrollView.ApplyEffect(effect); - - for(ActorIter pageIter = gPages.begin(); pageIter != gPages.end(); ++pageIter) - { - Actor page = *pageIter; - page.RemoveConstraints(); - Constraint constraint = Constraint::New( page, Actor::Property::SIZE, EqualToConstraint() ); - constraint.AddSource( ParentSource( Actor::Property::SIZE ) ); - constraint.Apply(); - effect.ApplyToPage(page); - } - Wait(application); - scrollView.ScrollTo(1, 0.5f, DirectionBiasNone); - while(!gOnScrollCompleteCalled) - { - Wait(application); - } - // test that the first page has reached centre of screen - Vector3 pagePos = testPage.GetCurrentPosition(); + // test that the test page has reached centre of screen + Vector3 pagePos = testPage.GetCurrentProperty(Actor::Property::POSITION); DALI_TEST_EQUALS(pagePos, Vector3::ZERO, Math::MACHINE_EPSILON_0, TEST_LOCATION); - CleanupTest(); - END_TEST; -} - -int UtcDaliScrollViewCarouselEffectTest(void) -{ - ToolkitTestApplication application; - tet_infoline(" UtcDaliScrollViewCarouselEffectTest"); - - Vector2 size = Stage::GetCurrent().GetSize(); - ScrollView scrollView = SetupTestScrollView(1, 3, size); - Actor testPage = gPages[1]; - Wait(application, 500); - - ScrollViewCarouselEffect effect = ScrollViewCarouselEffect::New(); - scrollView.ApplyEffect(effect); - - Actor actor = AddActorToPage(testPage, 0.5f, 0.5f, 3, 3); - Wait(application); - Vector3 actorPrePosition = actor.GetCurrentPosition(); - - effect.ApplyToActor( actor, Vector2(1.2f, 1.2f) ); - - scrollView.ScrollTo(Vector3(size.x, 0.0f, 0.0f), 0.5f, DirectionBiasNone, DirectionBiasNone); - while(!gOnScrollCompleteCalled) - { - Wait(application); - } - // test that the first page has reached centre of screen - Vector3 actorPostPosition = actor.GetCurrentPosition(); - // just check the actor has moved - DALI_TEST_CHECK((actorPostPosition - actorPrePosition).Length() > Math::MACHINE_EPSILON_1); - CleanupTest(); - END_TEST; -} - -int UtcDaliScrollViewDepthEffectTest(void) -{ - ToolkitTestApplication application; - tet_infoline(" UtcDaliScrollViewDepthEffectTest"); - - Vector2 size = Stage::GetCurrent().GetSize(); - - ScrollView scrollView = SetupTestScrollView(1, 3, size); - Actor testPage = gPages[1]; - Wait(application, 500); - - ScrollViewDepthEffect effect = ScrollViewDepthEffect::New(); - scrollView.ApplyEffect(effect); - - Actor actor = AddActorToPage(testPage, 0.5f, 0.5f, 3, 3); - Wait(application); - Vector3 actorPrePosition = actor.GetCurrentPosition(); - - const Vector2 positionExtent(0.5f, 2.5f); - const Vector2 offsetExtent(1.0f, 1.0f); - const float positionScale(1.5f); - const float scaleExtent(0.5f); - - effect.ApplyToActor( actor, positionExtent, offsetExtent, positionScale, scaleExtent ); - - scrollView.ScrollTo(1); - while(!gOnScrollCompleteCalled) - { - Wait(application); - } - // test that the first page has reached centre of screen - Vector3 actorPostPosition = actor.GetCurrentPosition(); - // just check the actor has moved - DALI_TEST_CHECK((actorPostPosition - actorPrePosition).Length() > Math::MACHINE_EPSILON_1); CleanupTest(); END_TEST; }