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-TableView.cpp;h=6beeda4cbbee3656002329b75c12a628d45387ae;hp=7beeb965f20609f557fbbc9b0f53d321a4f68107;hb=667a103d2c6f9caba8c970bdafd26bdd10144715;hpb=9c779d53223a5eae3be6f8af12954cea364a606b diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TableView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TableView.cpp index 7beeb96..6beeda4 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TableView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TableView.cpp @@ -20,6 +20,7 @@ #include #include #include +#include using namespace Dali; using namespace Toolkit; @@ -73,15 +74,15 @@ static void SetupTableViewAndActors(TableView& tableView, Actor& actor1, Actor& DALI_TEST_CHECK( tableView ); Stage::GetCurrent().Add( tableView ); - tableView.SetSize( Dali::Vector2( 100.0f, 100.0f ) ); + tableView.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) ); actor1 = Actor::New(); actor2 = Actor::New(); actor3 = Actor::New(); - actor1.SetSize( CELL_SIZE ); - actor2.SetSize( CELL_SIZE ); - actor3.SetSize( CELL_SIZE ); + actor1.SetProperty( Actor::Property::SIZE, CELL_SIZE ); + actor2.SetProperty( Actor::Property::SIZE, CELL_SIZE ); + actor3.SetProperty( Actor::Property::SIZE, CELL_SIZE ); tableView.AddChild( actor1, TableView::CellPosition( 0, 0 ) ); tableView.AddChild( actor2, TableView::CellPosition( 0, 1 ) ); @@ -141,9 +142,9 @@ int UtcDaliTableViewMetricsPadding(void) application.Render(); DALI_TEST_EQUALS( tableView.GetCellPadding(), Size(0.0f, 0.0f), TEST_LOCATION ); - DALI_TEST_EQUALS( actor1.GetCurrentPosition(), Vector3(0.0f, 0.0f, 0.0f), TEST_LOCATION ); - DALI_TEST_EQUALS( actor2.GetCurrentPosition(), Vector3(10.0f, 0.0f, 0.0f), TEST_LOCATION ); - DALI_TEST_EQUALS( actor3.GetCurrentPosition(), Vector3(0.0f, 10.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor1.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor2.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(10.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor3.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0.0f, 10.0f, 0.0f), TEST_LOCATION ); // 1. check that padding works. some padding: tableView.SetCellPadding(Size(5.0f, 10.0f)); @@ -151,7 +152,7 @@ int UtcDaliTableViewMetricsPadding(void) application.Render(); DALI_TEST_EQUALS( tableView.GetCellPadding(), Size(5.0f, 10.0f), TEST_LOCATION ); - DALI_TEST_EQUALS( actor1.GetCurrentPosition(), Vector3(5.0f, 10.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor1.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(5.0f, 10.0f, 0.0f), TEST_LOCATION ); END_TEST; } @@ -172,9 +173,9 @@ int UtcDaliTableViewMetricsFit(void) application.Render(); // 1. check that with no fixed width/heights, actors are in default position. - DALI_TEST_EQUALS( actor1.GetCurrentPosition(), Vector3(0.0f, 0.0f, 0.0f), TEST_LOCATION ); - DALI_TEST_EQUALS( actor2.GetCurrentPosition(), Vector3(10.0f, 0.0f, 0.0f), TEST_LOCATION ); - DALI_TEST_EQUALS( actor3.GetCurrentPosition(), Vector3(0.0f, 10.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor1.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor2.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(10.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor3.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0.0f, 10.0f, 0.0f), TEST_LOCATION ); // 2. check that with a fixed width & height, actors to the right and below are offsetted. tableView.SetFitHeight(0); @@ -185,9 +186,26 @@ int UtcDaliTableViewMetricsFit(void) application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( actor1.GetCurrentPosition(), Vector3(0.0f, 0.0f, 0.0f), TEST_LOCATION ); - DALI_TEST_EQUALS( actor2.GetCurrentPosition(), Vector3(10.0f, 0.0f, 0.0f), TEST_LOCATION ); - DALI_TEST_EQUALS( actor3.GetCurrentPosition(), Vector3(0.0f, 10.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor1.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor2.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(10.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor3.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0.0f, 10.0f, 0.0f), TEST_LOCATION ); + + tableView.SetProperty( Dali::Actor::Property::LAYOUT_DIRECTION, Dali::LayoutDirection::RIGHT_TO_LEFT ); + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( actor1.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(90.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor2.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(80.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor3.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(90.0f, 10.0f, 0.0f), TEST_LOCATION ); + + tableView.SetProperty( Dali::Actor::Property::LAYOUT_DIRECTION, Dali::LayoutDirection::LEFT_TO_RIGHT ); + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( actor1.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor2.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(10.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor3.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0.0f, 10.0f, 0.0f), TEST_LOCATION ); + END_TEST; } @@ -208,9 +226,9 @@ int UtcDaliTableViewMetricsFixed(void) application.Render(); // 1. check that with no fixed width/heights, actors are in default position. - DALI_TEST_EQUALS( actor1.GetCurrentPosition(), Vector3(0.0f, 0.0f, 0.0f), TEST_LOCATION ); - DALI_TEST_EQUALS( actor2.GetCurrentPosition(), Vector3(10.0f, 0.0f, 0.0f), TEST_LOCATION ); - DALI_TEST_EQUALS( actor3.GetCurrentPosition(), Vector3(0.0f, 10.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor1.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor2.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(10.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor3.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0.0f, 10.0f, 0.0f), TEST_LOCATION ); // 2. check that with a fixed width & height, actors to the right and below are offsetted. tableView.SetFixedWidth(0, 20.0f); @@ -221,9 +239,9 @@ int UtcDaliTableViewMetricsFixed(void) application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( actor1.GetCurrentPosition(), Vector3(0.0f, 0.0f, 0.0f), TEST_LOCATION ); - DALI_TEST_EQUALS( actor2.GetCurrentPosition(), Vector3(20.0f, 0.0f, 0.0f), TEST_LOCATION ); - DALI_TEST_EQUALS( actor3.GetCurrentPosition(), Vector3(0.0f, 50.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor1.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor2.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(20.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor3.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0.0f, 50.0f, 0.0f), TEST_LOCATION ); END_TEST; } @@ -244,9 +262,9 @@ int UtcDaliTableViewMetricsRelative(void) application.Render(); // 1. check that with no relative width/heights, actors are in default position. - DALI_TEST_EQUALS( actor1.GetCurrentPosition(), Vector3(0.0f, 0.0f, 0.0f), TEST_LOCATION ); - DALI_TEST_EQUALS( actor2.GetCurrentPosition(), Vector3(10.0f, 0.0f, 0.0f), TEST_LOCATION ); - DALI_TEST_EQUALS( actor3.GetCurrentPosition(), Vector3(0.0f, 10.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor1.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor2.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(10.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor3.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0.0f, 10.0f, 0.0f), TEST_LOCATION ); // 2. check that with a relative width & height, actors to the right and below are offsetted. tableView.SetRelativeWidth(0, 0.3f); // cell 0,0 occupies 30%x50% of the grid (i.e. 30x50 pixels) @@ -257,9 +275,9 @@ int UtcDaliTableViewMetricsRelative(void) application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( actor1.GetCurrentPosition(), Vector3(0.0f, 0.0f, 0.0f), TEST_LOCATION ); - DALI_TEST_EQUALS( actor2.GetCurrentPosition(), Vector3(30.0f, 0.0f, 0.0f), TEST_LOCATION ); - DALI_TEST_EQUALS( actor3.GetCurrentPosition(), Vector3(0.0f, 50.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor1.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor2.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(30.0f, 0.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( actor3.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(0.0f, 50.0f, 0.0f), TEST_LOCATION ); END_TEST; } @@ -358,9 +376,9 @@ int UtcDaliTableViewCells(void) Actor actor1 = Actor::New(); Actor actor2 = Actor::New(); Actor actor3 = Actor::New(); - actor1.SetName("Actor1"); - actor2.SetName("Actor2"); - actor3.SetName("Actor3"); + actor1.SetProperty( Dali::Actor::Property::NAME,"Actor1"); + actor2.SetProperty( Dali::Actor::Property::NAME,"Actor2"); + actor3.SetProperty( Dali::Actor::Property::NAME,"Actor3"); // note: positions are specified in reversed cartesian coords - row,col (i.e. y,x) tableView.AddChild(actor1, TableView::CellPosition(0,0)); @@ -400,7 +418,7 @@ int UtcDaliTableViewCells(void) std::vector actorsRemoved; tableView.DeleteRow(0, actorsRemoved); tet_printf("Row Delete >> Actors Removed: %d {", actorsRemoved.size()); - for(size_t i = 0;i %s, ", i, actorsRemoved[i].GetName().c_str()); + for(size_t i = 0;i %s, ", i, actorsRemoved[i].GetProperty< std::string >( Dali::Actor::Property::NAME ).c_str()); tet_printf("}\n"); DALI_TEST_EQUALS( static_cast(actorsRemoved.size()), 1, TEST_LOCATION ); DALI_TEST_CHECK( actorsRemoved[0] == actor1 ); @@ -408,7 +426,7 @@ int UtcDaliTableViewCells(void) actorsRemoved.clear(); tableView.DeleteColumn(3, actorsRemoved); tet_printf("Column Delete >> Actors Removed: %d {", actorsRemoved.size()); - for(size_t i = 0;i %s, ", i, actorsRemoved[i].GetName().c_str()); + for(size_t i = 0;i %s, ", i, actorsRemoved[i].GetProperty< std::string >( Dali::Actor::Property::NAME ).c_str()); tet_printf("}\n"); DALI_TEST_EQUALS( static_cast(actorsRemoved.size()), 1, TEST_LOCATION ); DALI_TEST_CHECK( actorsRemoved[0] == actor3 ); @@ -589,7 +607,7 @@ int UtcDaliTableViewSetGetProperty(void) // Create a 1x1 table-view TableView tableView = TableView::New(1,1); - tableView.SetSize( Vector2( 100.0f, 100.0f ) ); + tableView.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); DALI_TEST_CHECK( tableView ); // Test "rows" property @@ -694,7 +712,7 @@ int UtcDaliTableViewChildProperties(void) // Create a 10x10 table-view TableView tableView = TableView::New(10,10); Stage::GetCurrent().Add( tableView ); - tableView.SetSize( Dali::Vector2( 100.0f, 100.0f ) ); + tableView.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) ); DALI_TEST_CHECK( tableView ); @@ -724,7 +742,7 @@ int UtcDaliTableViewChildProperties(void) // Create a third child actor with the cell alignment properties Actor child3 = Actor::New(); - child3.SetSize( 5.f,5.f ); + child3.SetProperty( Actor::Property::SIZE, Vector2( 5.f, 5.f ) ); child3.SetProperty( TableView::ChildProperty::CELL_HORIZONTAL_ALIGNMENT, "center" ); child3.SetProperty( TableView::ChildProperty::CELL_VERTICAL_ALIGNMENT, "bottom" ); tableView.Add( child3 ); @@ -734,9 +752,9 @@ int UtcDaliTableViewChildProperties(void) application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( child3.GetCurrentAnchorPoint(), AnchorPoint::TOP_LEFT, TEST_LOCATION ); - DALI_TEST_EQUALS( child3.GetCurrentParentOrigin(), ParentOrigin::TOP_LEFT, TEST_LOCATION ); - DALI_TEST_EQUALS( child3.GetCurrentPosition(), Vector3(2.5f, 5.0f, 0.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( child3.GetCurrentProperty< Vector3 >( Actor::Property::ANCHOR_POINT ), AnchorPoint::TOP_LEFT, TEST_LOCATION ); + DALI_TEST_EQUALS( child3.GetCurrentProperty< Vector3 >( Actor::Property::PARENT_ORIGIN ), ParentOrigin::TOP_LEFT, TEST_LOCATION ); + DALI_TEST_EQUALS( child3.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(2.5f, 5.0f, 0.0f), TEST_LOCATION ); END_TEST; } @@ -840,8 +858,8 @@ int UtcDaliTableViewKeyboardFocus(void) ToolkitTestApplication application; TableView tableView = TableView::New(4,4); - tableView.SetKeyboardFocusable( true ); - tableView.SetName( "TableView"); + tableView.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE, true ); + tableView.SetProperty( Dali::Actor::Property::NAME, "TableView"); for ( int row = 0; row < 4; ++row ) { @@ -850,8 +868,8 @@ int UtcDaliTableViewKeyboardFocus(void) Control control = Control::New(); std::ostringstream str; str << row << "-" << col; - control.SetName( str.str() ); - control.SetKeyboardFocusable( true ); + control.SetProperty( Dali::Actor::Property::NAME, str.str() ); + control.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE, true ); tableView.AddChild( control, TableView::CellPosition( row, col ) ); } } @@ -863,55 +881,179 @@ int UtcDaliTableViewKeyboardFocus(void) Actor firstFocusActor = Toolkit::Internal::GetImplementation( tableView ).GetNextKeyboardFocusableActor( Actor(), Control::KeyboardFocus::RIGHT, true ); DALI_TEST_CHECK( firstFocusActor ); - DALI_TEST_CHECK( firstFocusActor.GetName() == "0-0" ); + DALI_TEST_CHECK( firstFocusActor.GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-0" ); KeyboardFocusManager manager = KeyboardFocusManager::Get(); manager.SetFocusGroupLoop( true ); manager.SetCurrentFocusActor( firstFocusActor ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-0" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-0" ); manager.MoveFocus( Control::KeyboardFocus::RIGHT ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-1" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-1" ); manager.MoveFocus( Control::KeyboardFocus::RIGHT ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-2" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-2" ); manager.MoveFocus( Control::KeyboardFocus::RIGHT ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-3" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-3" ); manager.MoveFocus( Control::KeyboardFocus::RIGHT ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "1-0" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-0" ); manager.MoveFocus( Control::KeyboardFocus::LEFT ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-3" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-3" ); manager.MoveFocus( Control::KeyboardFocus::LEFT ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-2" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-2" ); manager.MoveFocus( Control::KeyboardFocus::LEFT ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-1" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-1" ); manager.MoveFocus( Control::KeyboardFocus::LEFT ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-0" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-0" ); manager.MoveFocus( Control::KeyboardFocus::LEFT ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "3-3" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "3-3" ); manager.MoveFocus( Control::KeyboardFocus::RIGHT ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-0" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-0" ); manager.MoveFocus( Control::KeyboardFocus::RIGHT ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-1" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-1" ); manager.MoveFocus( Control::KeyboardFocus::DOWN ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "1-1" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-1" ); manager.MoveFocus( Control::KeyboardFocus::DOWN ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "2-1" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "2-1" ); manager.MoveFocus( Control::KeyboardFocus::DOWN ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "3-1" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "3-1" ); manager.MoveFocus( Control::KeyboardFocus::DOWN ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-1" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-1" ); manager.MoveFocus( Control::KeyboardFocus::UP ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "3-1" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "3-1" ); + manager.MoveFocus( Control::KeyboardFocus::UP ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "2-1" ); + manager.MoveFocus( Control::KeyboardFocus::UP ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-1" ); + manager.MoveFocus( Control::KeyboardFocus::UP ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-1" ); + + END_TEST; +} + +int UtcDaliTableViewKeyboardFocusInNestedTableView(void) +{ + ToolkitTestApplication application; + + TableView tableView = TableView::New(3, 3); + tableView.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE, true ); + tableView.SetProperty( Dali::Actor::Property::NAME, "TableView"); + + for ( int row = 0; row < 3; ++row ) + { + for ( int col = 0; col < 3; ++col ) + { + std::ostringstream str; + str << row << "-" << col; + + if (row == 1 && col ==1) + { + // Add a nested 2x2 table view in the middle cell of the parent table view + TableView childTableView = TableView::New(2, 2); + childTableView.SetProperty( Dali::Actor::Property::NAME, str.str() ); + + for(int childRow = 0; childRow < 2; childRow++) + { + for(int childCol = 0; childCol < 2; childCol++) + { + Control control = Control::New(); + std::ostringstream nameStr; + nameStr << row << "-" << col << "-" << childRow << "-" << childCol; + control.SetProperty( Dali::Actor::Property::NAME, nameStr.str() ); + control.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE, true ); + childTableView.AddChild( control, TableView::CellPosition( childRow, childCol ) ); + } + } + tableView.AddChild( childTableView, TableView::CellPosition( row, col ) ); + } + else + { + Control control = Control::New(); + control.SetProperty( Dali::Actor::Property::NAME, str.str() ); + control.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE, true ); + tableView.AddChild( control, TableView::CellPosition( row, col ) ); + } + } + } + + Stage::GetCurrent().Add( tableView ); + + application.SendNotification(); + application.Render(); + + Actor firstFocusActor = Toolkit::Internal::GetImplementation( tableView ).GetNextKeyboardFocusableActor( Actor(), Control::KeyboardFocus::RIGHT, true ); + DALI_TEST_CHECK( firstFocusActor ); + DALI_TEST_CHECK( firstFocusActor.GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-0" ); + + KeyboardFocusManager manager = KeyboardFocusManager::Get(); + manager.SetFocusGroupLoop( false ); + manager.SetCurrentFocusActor( firstFocusActor ); + + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-0" ); + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-1" ); + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-2" ); + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-0" ); + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-1-0-0" ); + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-1-0-1" ); + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-1-1-0" ); + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-1-1-1" ); + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-2" ); + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "2-0" ); + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "2-1" ); + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "2-2" ); + + manager.MoveFocus( Control::KeyboardFocus::LEFT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "2-1" ); + manager.MoveFocus( Control::KeyboardFocus::LEFT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "2-0" ); + manager.MoveFocus( Control::KeyboardFocus::LEFT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-2" ); + manager.MoveFocus( Control::KeyboardFocus::LEFT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-1-1-1" ); + manager.MoveFocus( Control::KeyboardFocus::LEFT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-1-1-0" ); + manager.MoveFocus( Control::KeyboardFocus::LEFT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-1-0-1" ); + manager.MoveFocus( Control::KeyboardFocus::LEFT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-1-0-0" ); + manager.MoveFocus( Control::KeyboardFocus::LEFT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-0" ); + manager.MoveFocus( Control::KeyboardFocus::LEFT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-2" ); + manager.MoveFocus( Control::KeyboardFocus::LEFT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-1" ); + manager.MoveFocus( Control::KeyboardFocus::LEFT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-0" ); + + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-1" ); + manager.MoveFocus( Control::KeyboardFocus::DOWN ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-1-0-0" ); + manager.MoveFocus( Control::KeyboardFocus::DOWN ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-1-1-0" ); + manager.MoveFocus( Control::KeyboardFocus::DOWN ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "2-1" ); + manager.MoveFocus( Control::KeyboardFocus::UP ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "2-1" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-1-1-1" ); manager.MoveFocus( Control::KeyboardFocus::UP ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "1-1" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-1-0-1" ); manager.MoveFocus( Control::KeyboardFocus::UP ); - DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-1" ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-1" ); END_TEST; }