X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-KeyboardFocusManager.cpp;h=becbaaa764a60b930a450fb31d58e64b7df60d95;hb=539ba0fddbfafdeb2022bb3c508db05e9b92825c;hp=465834a08030bf1e5af24eb8001895169891cc0b;hpb=8227ebfa90be89b333e0a7950995ea156a454bdb;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp b/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp index 465834a..becbaaa 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp @@ -46,7 +46,6 @@ namespace const std::string DEFAULT_DEVICE_NAME("hwKeyboard"); - // Functors to test whether GetNextFocusableActor() method of CustomAlgorithmInterface is called when the keyboard focus is about to change class CustomAlgorithm : public Dali::Toolkit::DevelKeyboardFocusManager::CustomAlgorithmInterface { @@ -866,7 +865,7 @@ int UtcDaliKeyboardFocusManagerSignalFocusedActorActivated(void) FocusedActorActivatedCallback focusedActorActivatedCallback(focusedActorActivatedSignalVerified); manager.FocusedActorEnterKeySignal().Connect( &focusedActorActivatedCallback, &FocusedActorActivatedCallback::Callback ); - Integration::KeyEvent returnEvent("Return", "", 0, 0, 0, Integration::KeyEvent::Up, DEFAULT_DEVICE_NAME ); + Integration::KeyEvent returnEvent( "Return", "", 0, 0, 0, Integration::KeyEvent::Up, DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); // Press Any key to notice physical keyboard event is comming to KeyboardFocusManager // It makes mIsFocusIndicatorEnabled true @@ -924,8 +923,8 @@ int UtcDaliKeyboardFocusManagerSignalFocusGroupChanged(void) FocusGroupChangedCallback focusGroupChangedCallback(focusGroupChangedSignalVerified); manager.FocusGroupChangedSignal().Connect( &focusGroupChangedCallback, &FocusGroupChangedCallback::Callback ); - Integration::KeyEvent tabEvent("Tab", "", 0, 0, 0, Integration::KeyEvent::Down, DEFAULT_DEVICE_NAME ); - Integration::KeyEvent shiftTabEvent("Tab", "", 0, 1, 0, Integration::KeyEvent::Down, DEFAULT_DEVICE_NAME); + Integration::KeyEvent tabEvent( "Tab", "", 0, 0, 0, Integration::KeyEvent::Down, DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent shiftTabEvent( "Tab", "", 0, 1, 0, Integration::KeyEvent::Down, DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); // Press Any key to notice physical keyboard event is comming to KeyboardFocusManager // It makes mIsFocusIndicatorEnabled true @@ -972,15 +971,6 @@ int UtcDaliKeyboardFocusManagerMoveFocusBackward(void) KeyboardFocusManager manager = KeyboardFocusManager::Get(); DALI_TEST_CHECK(manager); - // Make history stack full - for(int i = 0 ; i < 31 ; i ++) - { - Actor actor = Actor::New(); - actor.SetKeyboardFocusable(true); - Stage::GetCurrent().Add(actor); - manager.SetCurrentFocusActor(actor); - } - // Create the first actor and add it to the stage Actor first = Actor::New(); first.SetKeyboardFocusable(true); @@ -991,11 +981,16 @@ int UtcDaliKeyboardFocusManagerMoveFocusBackward(void) second.SetKeyboardFocusable(true); Stage::GetCurrent().Add(second); - // Create the second actor and add it to the stage + // Create the third actor and add it to the stage Actor third = Actor::New(); third.SetKeyboardFocusable(true); Stage::GetCurrent().Add(third); + // Create the fourth actor and add it to the stage + Actor fourth = Actor::New(); + fourth.SetKeyboardFocusable(true); + Stage::GetCurrent().Add(fourth); + // Check that the focus is set on the second actor DALI_TEST_CHECK(manager.SetCurrentFocusActor(first) == true); DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first); @@ -1008,24 +1003,45 @@ int UtcDaliKeyboardFocusManagerMoveFocusBackward(void) DALI_TEST_CHECK(manager.SetCurrentFocusActor(third) == true); DALI_TEST_CHECK(manager.GetCurrentFocusActor() == third); + // Check that the focus is set on the third actor + DALI_TEST_CHECK(manager.SetCurrentFocusActor(fourth) == true); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == fourth); + // Move the focus backward manager.MoveFocusBackward(); - // Check that it current focused actor is second actor - DALI_TEST_CHECK(manager.GetCurrentFocusActor() == second); - - // Check that the focus is set on the third actor - DALI_TEST_CHECK(manager.SetCurrentFocusActor(third) == true); + // Check that it current focused actor is third actor DALI_TEST_CHECK(manager.GetCurrentFocusActor() == third); // Remove the second actor on stage second.Unparent(); + // Reset the first actor + first.Unparent(); + first.Reset(); + // Move the focus backward manager.MoveFocusBackward(); - // Check that it current focused actor is first actor - DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first); + // Check that it current focused actor is third actor + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == third); + + // Make history stack full + for(int i = 0 ; i < 31 ; i ++) + { + Actor actor = Actor::New(); + actor.SetKeyboardFocusable(true); + Stage::GetCurrent().Add(actor); + manager.SetCurrentFocusActor(actor); + } + + for(int i = 0 ; i < 31 ; i ++) + { + manager.MoveFocusBackward(); + } + + // Check that it current focused actor is not second actor + DALI_TEST_CHECK(manager.GetCurrentFocusActor() != second); END_TEST; } @@ -1047,12 +1063,12 @@ int UtcDaliKeyboardFocusManagerChangeFocusDirectionByKeyEvents(void) FocusChangedCallback focusChangedCallback(focusChangedSignalVerified); manager.FocusChangedSignal().Connect( &focusChangedCallback, &FocusChangedCallback::Callback ); - Integration::KeyEvent leftEvent("Left", "", 0, 0, 0, Integration::KeyEvent::Down, DEFAULT_DEVICE_NAME); - Integration::KeyEvent rightEvent("Right", "", 0, 0, 0, Integration::KeyEvent::Down, DEFAULT_DEVICE_NAME ); - Integration::KeyEvent upEvent("Up", "", 0, 0, 0, Integration::KeyEvent::Down, DEFAULT_DEVICE_NAME ); - Integration::KeyEvent downEvent("Down", "", 0, 0, 0, Integration::KeyEvent::Down, DEFAULT_DEVICE_NAME ); - Integration::KeyEvent pageUpEvent("Prior", "", 0, 0, 0, Integration::KeyEvent::Down, DEFAULT_DEVICE_NAME ); - Integration::KeyEvent pageDownEvent("Next", "", 0, 0, 0, Integration::KeyEvent::Down, DEFAULT_DEVICE_NAME ); + Integration::KeyEvent leftEvent( "Left", "", 0, 0, 0, Integration::KeyEvent::Down, DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent rightEvent( "Right", "", 0, 0, 0, Integration::KeyEvent::Down, DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent upEvent( "Up", "", 0, 0, 0, Integration::KeyEvent::Down, DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent downEvent( "Down", "", 0, 0, 0, Integration::KeyEvent::Down, DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent pageUpEvent( "Prior", "", 0, 0, 0, Integration::KeyEvent::Down, DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); + Integration::KeyEvent pageDownEvent( "Next", "", 0, 0, 0, Integration::KeyEvent::Down, DEFAULT_DEVICE_NAME, Device::Class::NONE, Device::Subclass::NONE ); // Press Any key to notice physical keyboard event is comming to KeyboardFocusManager // It makes mIsFocusIndicatorEnabled true @@ -1381,3 +1397,31 @@ int UtcDaliKeyboardFocusManagerMoveFocusTestStateChange(void) END_TEST; } + +int UtcDaliKeyboardFocusManagerFocusedActorUnstaged(void) +{ + ToolkitTestApplication application; + + tet_infoline( "Ensure we cannot set an actor to be focused if it is not staged and that we do not retrieve an actor if it has been unstaged" ); + + KeyboardFocusManager manager = KeyboardFocusManager::Get(); + DALI_TEST_CHECK( ! manager.GetCurrentFocusActor() ); + + Actor actor = Actor::New(); + actor.SetKeyboardFocusable( true ); + + tet_infoline( "Attempt to set unstaged actor, no actor should be returned from KeyboardFocusManager" ); + manager.SetCurrentFocusActor( actor ); + DALI_TEST_CHECK( ! manager.GetCurrentFocusActor() ); + + tet_infoline( "Add actor to stage and attempt to set, our actor should be returned from KeyboardFocusManager" ); + Stage::GetCurrent().Add( actor ); + manager.SetCurrentFocusActor( actor ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor() == actor ); + + tet_infoline( "Remove actor from stage and attempt to retrieve, no actor should be returned from KeyboardFocusManager" ); + actor.Unparent(); + DALI_TEST_CHECK( ! manager.GetCurrentFocusActor() ); + + END_TEST; +}