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-KeyboardFocusManager.cpp;h=e902ec04cde24e2a44290b49c87f30dfc39ec119;hp=8b0322771cac220193fc57f356d972cb0378ba2d;hb=a78bb823aebc305823855ac35b3413aaff7bc684;hpb=30f6ca1e541089b19f2b349a8a12d8a5bcaf2f9e diff --git a/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp b/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp index 8b03227..e902ec0 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp @@ -1,18 +1,19 @@ -// -// Copyright (c) 2014 Samsung Electronics Co., Ltd. -// -// Licensed under the Flora License, Version 1.0 (the License); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://floralicense.org/license/ -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an AS IS BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// +/* + * Copyright (c) 2014 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ #include #include @@ -21,10 +22,10 @@ // test harness headers before dali headers. #include -#include #include #include + using namespace Dali; using namespace Dali::Toolkit; @@ -50,11 +51,11 @@ public: : mSignalVerified(signalReceived), mCurrentFocusedActor(), mProposedActorToFocus(), - mDirection(Control::Left) + mDirection(Control::KeyboardFocus::LEFT) { } - Actor Callback(Actor currentFocusedActor, Actor proposedActorToFocus, Control::KeyboardFocusNavigationDirection direction) + Actor Callback(Actor currentFocusedActor, Actor proposedActorToFocus, Control::KeyboardFocus::Direction direction) { tet_infoline("Verifying PreFocusChangeCallback()"); @@ -72,13 +73,13 @@ public: mSignalVerified = false; mCurrentFocusedActor = Actor(); mProposedActorToFocus = Actor(); - mDirection = Control::Left; + mDirection = Control::KeyboardFocus::LEFT; } bool& mSignalVerified; Actor mCurrentFocusedActor; Actor mProposedActorToFocus; - Control::KeyboardFocusNavigationDirection mDirection; + Control::KeyboardFocus::Direction mDirection; }; // Functors to test whether focus changed signal is emitted when the keyboard focus is changed @@ -183,6 +184,13 @@ int UtcDaliKeyboardFocusManagerGet(void) tet_infoline(" UtcDaliKeyboardKeyboardFocusManagerGet"); + // Register Type + TypeInfo type; + type = TypeRegistry::Get().GetTypeInfo( "KeyboardFocusManager" ); + DALI_TEST_CHECK( type ); + BaseHandle handle = type.CreateInstance(); + DALI_TEST_CHECK( handle ); + KeyboardFocusManager manager; manager = KeyboardFocusManager::Get(); @@ -258,6 +266,13 @@ int UtcDaliKeyboardFocusManagerMoveFocus(void) tet_infoline(" UtcDaliKeyboardFocusManagerMoveFocus"); + // Register Type + TypeInfo type; + type = TypeRegistry::Get().GetTypeInfo( "KeyboardFocusManager" ); + DALI_TEST_CHECK( type ); + BaseHandle handle = type.CreateInstance(); + DALI_TEST_CHECK( handle ); + KeyboardFocusManager manager = KeyboardFocusManager::Get(); DALI_TEST_CHECK(manager); @@ -280,13 +295,13 @@ int UtcDaliKeyboardFocusManagerMoveFocus(void) Stage::GetCurrent().Add(second); // Move the focus to the right - DALI_TEST_CHECK(manager.MoveFocus(Control::Right) == false); + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == false); // Because no layout control in the stage and no actor is focused, it should emit the PreFocusChange signal DALI_TEST_CHECK(preFocusChangeCallback.mSignalVerified); DALI_TEST_CHECK(preFocusChangeCallback.mCurrentFocusedActor == Actor()); DALI_TEST_CHECK(preFocusChangeCallback.mProposedActorToFocus == Actor()); - DALI_TEST_CHECK(preFocusChangeCallback.mDirection == Control::Right); + DALI_TEST_CHECK(preFocusChangeCallback.mDirection == Control::KeyboardFocus::RIGHT); preFocusChangeCallback.Reset(); // Check that the focus is set on the first actor @@ -298,13 +313,13 @@ int UtcDaliKeyboardFocusManagerMoveFocus(void) focusChangedCallback.Reset(); // Move the focus towards right - DALI_TEST_CHECK(manager.MoveFocus(Control::Right) == false); + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == false); // Because no layout control in the stage and the first actor is focused, it should emit the PreFocusChange signal DALI_TEST_CHECK(preFocusChangeCallback.mSignalVerified); DALI_TEST_CHECK(preFocusChangeCallback.mCurrentFocusedActor == first); DALI_TEST_CHECK(preFocusChangeCallback.mProposedActorToFocus == Actor()); - DALI_TEST_CHECK(preFocusChangeCallback.mDirection == Control::Right); + DALI_TEST_CHECK(preFocusChangeCallback.mDirection == Control::KeyboardFocus::RIGHT); preFocusChangeCallback.Reset(); // Check that the focus is set on the second actor @@ -316,16 +331,95 @@ int UtcDaliKeyboardFocusManagerMoveFocus(void) focusChangedCallback.Reset(); // Move the focus towards up - DALI_TEST_CHECK(manager.MoveFocus(Control::Up) == false); + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::UP) == false); // Because no layout control in the stage and no actor is focused, it should emit the PreFocusChange signal DALI_TEST_CHECK(preFocusChangeCallback.mSignalVerified); DALI_TEST_CHECK(preFocusChangeCallback.mCurrentFocusedActor == second); DALI_TEST_CHECK(preFocusChangeCallback.mProposedActorToFocus == Actor()); - DALI_TEST_CHECK(preFocusChangeCallback.mDirection == Control::Up); + DALI_TEST_CHECK(preFocusChangeCallback.mDirection == Control::KeyboardFocus::UP); + preFocusChangeCallback.Reset(); + DALI_TEST_CHECK(!focusChangedCallback.mSignalVerified); + + // Create a 2x2 table view and try to move focus inside it + TableView tableView = TableView::New( 2, 2 ); + Stage::GetCurrent().Add(tableView); + + // Create the third actor + Actor third = Actor::New(); + third.SetKeyboardFocusable(true); + + // Create the fourth actor + Actor fourth = Actor::New(); + fourth.SetKeyboardFocusable(true); + + // Add the four children to table view + tableView.AddChild(first, TableView::CellPosition(0, 0)); + tableView.AddChild(second, TableView::CellPosition(0, 1)); + tableView.AddChild(third, TableView::CellPosition(1, 0)); + tableView.AddChild(fourth, TableView::CellPosition(1, 1)); + + // Set the focus to the first actor + DALI_TEST_CHECK(manager.SetCurrentFocusActor(first) == true); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == second); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == first); + focusChangedCallback.Reset(); + + // Move the focus towards right + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == true); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == second); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == first); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == second); + focusChangedCallback.Reset(); + + // Move the focus towards down + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::DOWN) == true); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == fourth); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == second); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == fourth); + focusChangedCallback.Reset(); + + // Move the focus towards left + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::LEFT) == true); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == third); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == fourth); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == third); + focusChangedCallback.Reset(); + + // Move the focus towards up + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::UP) == true); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == third); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == first); + focusChangedCallback.Reset(); + + // Move the focus towards left. The focus move will fail as no way to move it upwards + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::LEFT) == false); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first); + DALI_TEST_CHECK(preFocusChangeCallback.mSignalVerified); + DALI_TEST_CHECK(preFocusChangeCallback.mCurrentFocusedActor == first); + DALI_TEST_CHECK(preFocusChangeCallback.mProposedActorToFocus == Actor()); + DALI_TEST_CHECK(preFocusChangeCallback.mDirection == Control::KeyboardFocus::LEFT); preFocusChangeCallback.Reset(); DALI_TEST_CHECK(!focusChangedCallback.mSignalVerified); + // Enable the loop + manager.SetFocusGroupLoop(true); + DALI_TEST_CHECK(manager.GetFocusGroupLoop() == true); + + // Move the focus towards left again. The focus should move to the fourth actor. + DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::LEFT) == true); + DALI_TEST_CHECK(manager.GetCurrentFocusActor() == fourth); + DALI_TEST_CHECK(focusChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == first); + DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == fourth); + focusChangedCallback.Reset(); END_TEST; } @@ -535,3 +629,42 @@ int UtcDaliKeyboardFocusManagerSignalFocusedActorActivated(void) focusedActorActivatedCallback.Reset(); END_TEST; } + +int UtcDaliKeyboardFocusManagerSignalFocusGroupChanged(void) +{ + ToolkitTestApplication application; + + tet_infoline(" UtcDaliKeyboardFocusManagerSignalFocusGroupChanged"); + + // Register Type + TypeInfo type; + type = TypeRegistry::Get().GetTypeInfo( "KeyboardFocusManager" ); + DALI_TEST_CHECK( type ); + BaseHandle handle = type.CreateInstance(); + DALI_TEST_CHECK( handle ); + + KeyboardFocusManager manager = KeyboardFocusManager::Get(); + DALI_TEST_CHECK(manager); + + bool focusGroupChangedSignalVerified = false; + FocusGroupChangedCallback focusGroupChangedCallback(focusGroupChangedSignalVerified); + manager.FocusGroupChangedSignal().Connect( &focusGroupChangedCallback, &FocusGroupChangedCallback::Callback ); + + Integration::KeyEvent tabEvent("Tab", "", 0, 0, 0, Integration::KeyEvent::Down); + Integration::KeyEvent shiftTabEvent("Tab", "", 0, 1, 0, Integration::KeyEvent::Down); + + // Send the tab event to change focus group in the forward direction + application.ProcessEvent(tabEvent); + DALI_TEST_CHECK(focusGroupChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusGroupChangedCallback.mCurrentFocusedActor == Actor()); + DALI_TEST_CHECK(focusGroupChangedCallback.mForward == true); + focusGroupChangedCallback.Reset(); + + // Send the shift tab event to change focus group in the backward direction + application.ProcessEvent(shiftTabEvent); + DALI_TEST_CHECK(focusGroupChangedCallback.mSignalVerified); + DALI_TEST_CHECK(focusGroupChangedCallback.mCurrentFocusedActor == Actor()); + DALI_TEST_CHECK(focusGroupChangedCallback.mForward == false); + focusGroupChangedCallback.Reset(); + END_TEST; +}