X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit-internal%2Futc-Dali-Accessibility-Controls-BridgeUp.cpp;h=567ba6113604a414cc079bdd67728350afce9a9c;hp=fdd8f102507ba2bfe7877f7c52e8e977a4fb479e;hb=22e4cff18fd079527c93d76f1d4f784b25731e12;hpb=dacbd89dae18b6e32bf97f3d26d379eee2c9013b diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp index fdd8f10..567ba61 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp @@ -712,7 +712,7 @@ int UtcDaliAccessibilityGetExtents(void) auto a = Dali::Accessibility::Accessible::Get( control ); auto a_component = dynamic_cast( a ); - auto extents = a_component->GetExtents(Dali::Accessibility::CoordType::SCREEN); + auto extents = a_component->GetExtents(Dali::Accessibility::CoordinateType::SCREEN); DALI_TEST_EQUALS( extents.x, 5.0f, TEST_LOCATION ); DALI_TEST_EQUALS( extents.y, 5.0f, TEST_LOCATION ); DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION ); @@ -728,7 +728,7 @@ int UtcDaliAccessibilityGetExtents(void) application.SendNotification(); application.Render( 1 ); - extents = a_component->GetExtents(Dali::Accessibility::CoordType::SCREEN); + extents = a_component->GetExtents(Dali::Accessibility::CoordinateType::SCREEN); DALI_TEST_EQUALS( extents.x, 10.0f, TEST_LOCATION ); DALI_TEST_EQUALS( extents.y, 10.0f, TEST_LOCATION ); DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION ); @@ -937,3 +937,229 @@ int UtcDaliAccessibilitySignals(void) END_TEST; } + +static void Wait(ToolkitTestApplication& application) +{ + application.SendNotification(); + application.Render(16); +} + +int UtcDaliAccessibilityScrollToChildScrollView(void) +{ + ToolkitTestApplication application; + Dali::Accessibility::TestEnableSC( true ); + + ScrollView scrollView = ScrollView::New(); + application.GetScene().Add( scrollView ); + + PushButton actorA = PushButton::New(); + const Dali::Vector3 positionA = Vector3(100.0f, 400.0f, 0.0f); + actorA.SetProperty( Dali::Actor::Property::POSITION, positionA ); + scrollView.Add(actorA); + + PushButton actorB = PushButton::New(); + const Dali::Vector3 positionB = Vector3(500.0f, 200.0f, 0.0f); + actorB.SetProperty( Dali::Actor::Property::POSITION, positionB ); + scrollView.Add(actorB); + + Wait(application); + + auto* accessibleParent = dynamic_cast(Dali::Accessibility::Accessible::Get(scrollView)); + DALI_TEST_CHECK(accessibleParent); + auto* accessibleA = dynamic_cast(Dali::Accessibility::Accessible::Get(actorA)); + DALI_TEST_CHECK(accessibleA); + auto* accessibleB = dynamic_cast(Dali::Accessibility::Accessible::Get(actorB)); + DALI_TEST_CHECK(accessibleB); + + accessibleA->GrabHighlight(); // == scrollView.ScrollTo(actorA) + Wait(application); + accessibleB->GrabHighlight(); // == scrollView.ScrollTo(actorB) + Wait(application); + + Dali::Accessibility::TestEnableSC( false ); + END_TEST; +} + +namespace { + class TestItemFactory : public ItemFactory + { + public: + TestItemFactory() + { + } + + unsigned int GetNumberOfItems() override + { + return 2; + } + + Dali::Actor NewItem(unsigned int itemId) override + { + return TextLabel::New(std::to_string(itemId)); + } + }; +} + +int UtcDaliAccessibilityScrollToChildItemView(void) +{ + ToolkitTestApplication application; + Dali::Accessibility::TestEnableSC( true ); + + TestItemFactory factory; + ItemView view = ItemView::New(factory); + Dali::Vector3 vec(480.0f, 800.0f, 0.0f); + ItemLayoutPtr layout = DefaultItemLayout::New( DefaultItemLayout::DEPTH ); + + view.AddLayout(*layout); + view.SetProperty( Actor::Property::SIZE, vec ); + + application.GetScene().Add(view); + layout->SetOrientation(ControlOrientation::Down); + view.ActivateLayout(0, vec, 0.0f); + + Wait(application); + + auto* accessibleParent = dynamic_cast(Dali::Accessibility::Accessible::Get(view)); + DALI_TEST_CHECK(accessibleParent); + auto* accessibleA = dynamic_cast(Dali::Accessibility::Accessible::Get(view.GetItem(0))); + DALI_TEST_CHECK(accessibleA); + auto* accessibleB = dynamic_cast(Dali::Accessibility::Accessible::Get(view.GetItem(1))); + DALI_TEST_CHECK(accessibleB); + + accessibleA->GrabHighlight(); // == view.ScrollToItem(view.GetItemId(actorA)) + Wait(application); + accessibleB->GrabHighlight(); // == view.ScrollToItem(view.GetItemId(actorB)) + Wait(application); + + Dali::Accessibility::TestEnableSC( false ); + END_TEST; +} + +int UtcDaliAccessibilityScrollToChildNonScrollable(void) +{ + ToolkitTestApplication application; + Dali::Accessibility::TestEnableSC( true ); + + TextLabel label = TextLabel::New("123"); + + auto* accessible = dynamic_cast(Dali::Accessibility::Accessible::Get(label)); + DALI_TEST_CHECK(accessible); + + DALI_TEST_EQUALS(accessible->IsScrollable(), false, TEST_LOCATION); + DALI_TEST_EQUALS(accessible->ScrollToChild({}), false, TEST_LOCATION); + + Dali::Accessibility::TestEnableSC( false ); + END_TEST; +} + +int UtcDaliAccessibilityCheckHighlight(void) +{ + ToolkitTestApplication application; + Dali::Accessibility::TestEnableSC( true ); + Dali::Accessibility::TestResetMoveOutedCalled(); + + // Make precondition two children exist in parent area + PushButton parentButton = PushButton::New(); + parentButton.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_TO_BOUNDING_BOX); + parentButton.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT); + parentButton.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + parentButton.SetProperty(Actor::Property::POSITION, Dali::Vector2(0.0f, 0.0f)); + parentButton.SetProperty(Actor::Property::SIZE, Dali::Vector2(100.0f, 200.0f)); + application.GetScene().Add( parentButton ); + + PushButton buttonA = PushButton::New(); + buttonA.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT); + buttonA.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + buttonA.SetProperty(Actor::Property::POSITION, Dali::Vector2(0.0f, 0.0f)); + buttonA.SetProperty(Actor::Property::SIZE, Dali::Vector2(100.0f, 100.0f)); + parentButton.Add(buttonA); + + PushButton buttonB = PushButton::New(); + buttonB.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT); + buttonB.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + buttonB.SetProperty(Actor::Property::POSITION, Dali::Vector2(0.0f, 100.0f)); + buttonB.SetProperty(Actor::Property::SIZE, Dali::Vector2(100.0f, 100.0f)); + parentButton.Add(buttonB); + Wait(application); + + // Set highlight to first child (A) to enable movement tracking + auto* accessible = dynamic_cast(Dali::Accessibility::Accessible::Get(buttonA)); + DALI_TEST_CHECK(accessible); + accessible->GrabHighlight(); + Wait(application); + + // Move first child (A) out of parent area through the parent's area top edge - single move outed event expected for A object and OUTGOING_TOP_LEFT direction + buttonA.SetProperty(Actor::Property::POSITION, Dali::Vector2(0.0f, -200.0f)); + Wait(application); + // Need one more notificaiton to get correct updated position + application.SendNotification(); + DALI_TEST_EQUALS( true, Dali::Accessibility::TestGetMoveOutedCalled(), TEST_LOCATION ); + + // Reset verdict data + Dali::Accessibility::TestResetMoveOutedCalled(); + + // Move first child (A) outside of parent area (both start and end position are outside of parent area) - no move outed event expected for A object + buttonA.SetProperty( Dali::Actor::Property::POSITION, Dali::Vector2(0.0f, -300.0f) ); + Wait(application); + // Need one more notificaiton to get correct updated position + application.SendNotification(); + DALI_TEST_EQUALS( false, Dali::Accessibility::TestGetMoveOutedCalled(), TEST_LOCATION ); + + // Reset verdict data + Dali::Accessibility::TestResetMoveOutedCalled(); + + // Set highlight to second child (B) to enable movement tracking + accessible = dynamic_cast(Dali::Accessibility::Accessible::Get(buttonB)); + DALI_TEST_CHECK(accessible); + accessible->GrabHighlight(); + Wait(application); + + // Move second child (B) inside of parent area (both start and end position are inside of parent area) - no move outed event expected for B object + // B: (0,100) --> (0, 50) + buttonB.SetProperty( Dali::Actor::Property::POSITION, Dali::Vector2(0.0f, 50.0f) ); + Wait(application); + // Need one more notificaiton to get correct updated position + application.SendNotification(); + DALI_TEST_EQUALS( false, Dali::Accessibility::TestGetMoveOutedCalled(), TEST_LOCATION ); + + // Reset verdict data + Dali::Accessibility::TestResetMoveOutedCalled(); + + // Move second child (B) out of parent area through the parent's area right edge - single move outed event expected for B object and OUTGOING_BOTTOM_RIGHT direction + buttonB.SetProperty(Actor::Property::POSITION, Dali::Vector2(300.0f, 100.0f)); + Wait(application); + // Need one more notificaiton to get correct updated position + application.SendNotification(); + DALI_TEST_EQUALS( true, Dali::Accessibility::TestGetMoveOutedCalled(), TEST_LOCATION ); + + // Reset verdict data + Dali::Accessibility::TestResetMoveOutedCalled(); + + // Move second child (B) back into parent area (start position is outside but end position is inside of parent area) - no move outed event expected for B object + // B: (300,100) --> (0, 100) + buttonB.SetProperty( Dali::Actor::Property::POSITION, Dali::Vector2(0.0f, 100.0f) ); + Wait(application); + // Need one more seding notificaiton to get correct updated position + application.SendNotification(); + DALI_TEST_EQUALS( false, Dali::Accessibility::TestGetMoveOutedCalled(), TEST_LOCATION ); + + // Reset verdict data + Dali::Accessibility::TestResetMoveOutedCalled(); + + // Disable movement tracking on B by giving highlight to A + accessible = dynamic_cast(Dali::Accessibility::Accessible::Get(buttonA)); + DALI_TEST_CHECK(accessible); + accessible->GrabHighlight(); + Wait(application); + + // Move B (untracked) out of parent area through the parent's area right edge - no move outed event expected for B object + // B: (0,100) --> (300, 100) + buttonB.SetProperty( Dali::Actor::Property::POSITION, Dali::Vector2(300.0f, 100.0f) ); + Wait(application); + // Need one more seding notificaiton to get correct updated position + application.SendNotification(); + DALI_TEST_EQUALS( false, Dali::Accessibility::TestGetMoveOutedCalled(), TEST_LOCATION ); + + Dali::Accessibility::TestEnableSC( false ); + END_TEST; +}