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=9985106d5620be60abd17a30ee7969678575b643;hp=7fe943acdd36e1f61a313ab1ae1c67434aa51ee9;hb=03c2c6f58b8812f93b2a396a22a26817aec2ad71;hpb=c803046c24398c2037a83d105a932976dede943f diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TableView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TableView.cpp index 7fe943a..9985106 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TableView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TableView.cpp @@ -17,6 +17,7 @@ #include #include +#include #include #include @@ -39,10 +40,9 @@ namespace const char* const PROPERTY_NAME_ROWS = "rows"; const char* const PROPERTY_NAME_COLUMNS = "columns"; const char* const PROPERTY_NAME_CELL_PADDING = "cell-padding"; -const char* const PROPERTY_NAME_LAYOUT_ANIMATION_DURATION = "layout-animation-duration"; const char* const PROPERTY_NAME_LAYOUT_ROWS = "layout-rows"; const char* const PROPERTY_NAME_LAYOUT_COLUMNS = "layout-columns"; - +const Vector2 CELL_SIZE( 10, 10 ); static bool gObjectCreatedCallBackCalled; @@ -51,7 +51,6 @@ static void TestCallback(BaseHandle handle) gObjectCreatedCallBackCalled = true; } - struct Constraint100 { Constraint100( ) @@ -61,37 +60,46 @@ struct Constraint100 /** * function operator to apply the parent size */ - Dali::Vector3 operator()(const Dali::Vector3& current) + void operator()( Dali::Vector3& current, const PropertyInputContainer& /* inputs */ ) { - return Dali::Vector3( 100.0f, 100.0f, 100.0f ); + current.x = current.y = current.z = 100.0f; } }; // Convenience function to quickly set up a 10x10 table with each cell being 10x10 pixels in size by default. static void SetupTableViewAndActors(TableView& tableView, Actor& actor1, Actor& actor2, Actor& actor3) { - tableView = TableView::New(10,10); // 10 by 10 grid. - DALI_TEST_CHECK(tableView); + tableView = TableView::New( 10, 10 ); // 10 by 10 grid. + DALI_TEST_CHECK( tableView ); Stage::GetCurrent().Add( tableView ); - tableView.ApplyConstraint( Constraint::New( Actor::SIZE, Constraint100() ) ); - tableView.SetLayoutAnimationDuration(0.0f); + tableView.SetSize( Dali::Vector2( 100.0f, 100.0f ) ); actor1 = Actor::New(); actor2 = Actor::New(); actor3 = Actor::New(); - actor1.SetSize(10,10); - actor2.SetSize(10,10); - actor3.SetSize(10,10); + actor1.SetSize( CELL_SIZE ); + actor2.SetSize( CELL_SIZE ); + actor3.SetSize( CELL_SIZE ); - tableView.AddChild(actor1, TableView::CellPosition(0,0)); - tableView.AddChild(actor2, TableView::CellPosition(0,1)); - tableView.AddChild(actor3, TableView::CellPosition(1,0)); + tableView.AddChild( actor1, TableView::CellPosition( 0, 0 ) ); + tableView.AddChild( actor2, TableView::CellPosition( 0, 1 ) ); + tableView.AddChild( actor3, TableView::CellPosition( 1, 0 ) ); } } // namespace +int UtcDaliTableViewCtorCopyP(void) +{ + TestApplication application; + + TableView actor1 = TableView::New(10,10); + TableView actor2( actor1 ); + + DALI_TEST_EQUALS( actor1, actor2, TEST_LOCATION ); + END_TEST; +} int UtcDaliTableViewNew(void) { @@ -148,6 +156,42 @@ int UtcDaliTableViewMetricsPadding(void) } // Test adjusting the metric values for the cell. +int UtcDaliTableViewMetricsFit(void) +{ + ToolkitTestApplication application; + + tet_infoline("UtcDaliTableViewMetricsFit"); + + TableView tableView; + Actor actor1; + Actor actor2; + Actor actor3; + + SetupTableViewAndActors(tableView, actor1, actor2, actor3); + application.SendNotification(); + 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 ); + + // 2. check that with a fixed width & height, actors to the right and below are offsetted. + tableView.SetFitHeight(0); + tableView.SetFitWidth(0); + DALI_TEST_EQUALS( tableView.IsFitHeight(0), true, TEST_LOCATION ); + DALI_TEST_EQUALS( tableView.IsFitWidth(0), true, TEST_LOCATION ); + + 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 ); + END_TEST; +} + +// Test adjusting the metric values for the cell. int UtcDaliTableViewMetricsFixed(void) { ToolkitTestApplication application; @@ -220,23 +264,6 @@ int UtcDaliTableViewMetricsRelative(void) } -// Test animation duration setting. -int UtcDaliTableViewAnimation(void) -{ - ToolkitTestApplication application; - - tet_infoline("UtcDaliTableViewAnimation"); - TableView tableView = TableView::New(10,10); - DALI_TEST_CHECK(tableView); - - tableView.SetLayoutAnimationDuration(5.0f); - DALI_TEST_EQUALS(tableView.GetLayoutAnimationDuration(), 5.0f, TEST_LOCATION); - - tableView.SetLayoutAnimationDuration(2.5f); - DALI_TEST_EQUALS(tableView.GetLayoutAnimationDuration(), 2.5f, TEST_LOCATION); - END_TEST; -} - // Test Adding/Removing/Finding Children. int UtcDaliTableViewChild(void) { @@ -412,6 +439,10 @@ int UtcDaliTableViewCells(void) tableView.AddChild(actor1, TableView::CellPosition(110, 110, 5, 5)); DALI_TEST_CHECK( tableView.GetRows() == 115 && tableView.GetColumns() == 115 ); + // Set the alignment of the cell + tableView.SetCellAlignment( TableView::CellPosition(100, 100, 1, 1), HorizontalAlignment::CENTER, VerticalAlignment::CENTER ); + tableView.SetCellAlignment( TableView::CellPosition(110, 110, 5, 5), HorizontalAlignment::LEFT, VerticalAlignment::TOP ); + DALI_TEST_CHECK( true ); END_TEST; } @@ -460,7 +491,7 @@ int UtcDaliTableViewMetricsAssert(void) catch( Dali::DaliException& e ) { DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_EQUALS(e.condition, "rowIndex < mFixedHeights.size()", TEST_LOCATION); + DALI_TEST_EQUALS(e.condition, "rowIndex < mRowData.Size()", TEST_LOCATION); } try @@ -472,7 +503,7 @@ int UtcDaliTableViewMetricsAssert(void) catch( Dali::DaliException& e ) { DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_EQUALS(e.condition, "rowIndex < mFixedHeights.size()", TEST_LOCATION); + DALI_TEST_EQUALS(e.condition, "rowIndex < mRowData.Size()", TEST_LOCATION); } try @@ -484,7 +515,7 @@ int UtcDaliTableViewMetricsAssert(void) catch( Dali::DaliException& e ) { DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_EQUALS(e.condition, "columnIndex < mFixedWidths.size()", TEST_LOCATION); + DALI_TEST_EQUALS(e.condition, "columnIndex < mColumnData.Size()", TEST_LOCATION); } try @@ -496,7 +527,7 @@ int UtcDaliTableViewMetricsAssert(void) catch( Dali::DaliException& e ) { DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_EQUALS(e.condition, "columnIndex < mFixedWidths.size()", TEST_LOCATION); + DALI_TEST_EQUALS(e.condition, "columnIndex < mColumnData.Size()", TEST_LOCATION); } // relatives... @@ -510,7 +541,7 @@ int UtcDaliTableViewMetricsAssert(void) catch( Dali::DaliException& e ) { DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_EQUALS(e.condition, "rowIndex < mRelativeHeights.size()", TEST_LOCATION); + DALI_TEST_EQUALS(e.condition, "rowIndex < mRowData.Size()", TEST_LOCATION); } try @@ -522,7 +553,7 @@ int UtcDaliTableViewMetricsAssert(void) catch( Dali::DaliException& e ) { DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_EQUALS(e.condition, "rowIndex < mRelativeHeights.size()", TEST_LOCATION); + DALI_TEST_EQUALS(e.condition, "rowIndex < mRowData.Size()", TEST_LOCATION); } try @@ -534,7 +565,7 @@ int UtcDaliTableViewMetricsAssert(void) catch( Dali::DaliException& e ) { DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_EQUALS(e.condition, "columnIndex < mRelativeWidths.size()", TEST_LOCATION); + DALI_TEST_EQUALS(e.condition, "columnIndex < mColumnData.Size()", TEST_LOCATION); } try @@ -546,7 +577,7 @@ int UtcDaliTableViewMetricsAssert(void) catch( Dali::DaliException& e ) { DALI_TEST_PRINT_ASSERT( e ); - DALI_TEST_EQUALS(e.condition, "columnIndex < mRelativeWidths.size()", TEST_LOCATION); + DALI_TEST_EQUALS(e.condition, "columnIndex < mColumnData.Size()", TEST_LOCATION); } END_TEST; } @@ -558,40 +589,32 @@ int UtcDaliTableViewSetGetProperty(void) // Create a 1x1 table-view TableView tableView = TableView::New(1,1); - tableView.ApplyConstraint( Constraint::New( Actor::SIZE, Constraint100() ) ); + tableView.SetSize( Vector2( 100.0f, 100.0f ) ); DALI_TEST_CHECK( tableView ); // Test "rows" property - DALI_TEST_CHECK( tableView.GetPropertyIndex( PROPERTY_NAME_ROWS ) == TableView::PROPERTY_ROWS ); + DALI_TEST_CHECK( tableView.GetPropertyIndex( PROPERTY_NAME_ROWS ) == TableView::Property::ROWS ); - tableView.SetProperty( TableView::PROPERTY_ROWS, 4u ); + tableView.SetProperty( TableView::Property::ROWS, 4u ); DALI_TEST_CHECK( tableView.GetRows() == 4u ); - DALI_TEST_CHECK( tableView.GetProperty(TableView::PROPERTY_ROWS).Get() == 4u ); + DALI_TEST_CHECK( tableView.GetProperty(TableView::Property::ROWS).Get() == 4u ); // Test "columns" property - DALI_TEST_CHECK( tableView.GetPropertyIndex( PROPERTY_NAME_COLUMNS ) == TableView::PROPERTY_COLUMNS ); + DALI_TEST_CHECK( tableView.GetPropertyIndex( PROPERTY_NAME_COLUMNS ) == TableView::Property::COLUMNS ); - tableView.SetProperty( TableView::PROPERTY_COLUMNS, 5u ); + tableView.SetProperty( TableView::Property::COLUMNS, 5u ); DALI_TEST_CHECK( tableView.GetColumns() == 5u ); - DALI_TEST_CHECK( tableView.GetProperty(TableView::PROPERTY_COLUMNS).Get() == 5u ); + DALI_TEST_CHECK( tableView.GetProperty(TableView::Property::COLUMNS).Get() == 5u ); // Test "cell-padding" property - DALI_TEST_CHECK( tableView.GetPropertyIndex( PROPERTY_NAME_CELL_PADDING ) == TableView::PROPERTY_CELL_PADDING ); + DALI_TEST_CHECK( tableView.GetPropertyIndex( PROPERTY_NAME_CELL_PADDING ) == TableView::Property::CELL_PADDING ); - tableView.SetProperty( TableView::PROPERTY_CELL_PADDING, Size( 6.f, 8.f ) ); + tableView.SetProperty( TableView::Property::CELL_PADDING, Size( 6.f, 8.f ) ); DALI_TEST_EQUALS( tableView.GetCellPadding(), Size(6.f, 8.f), TEST_LOCATION ); - DALI_TEST_EQUALS( tableView.GetProperty(TableView::PROPERTY_CELL_PADDING).Get(), Vector2(6.f,8.f), TEST_LOCATION ); - - // Test "layout-animation-duration" property - DALI_TEST_CHECK( tableView.GetPropertyIndex(PROPERTY_NAME_LAYOUT_ANIMATION_DURATION) == TableView::PROPERTY_LAYOUT_ANIMATION_DURATION ); - - tableView.SetProperty( TableView::PROPERTY_LAYOUT_ANIMATION_DURATION, 1.5f ); - - DALI_TEST_EQUALS( tableView.GetLayoutAnimationDuration(), 1.5f, TEST_LOCATION ); - DALI_TEST_EQUALS( tableView.GetProperty(TableView::PROPERTY_LAYOUT_ANIMATION_DURATION).Get(), 1.5f, TEST_LOCATION ); + DALI_TEST_EQUALS( tableView.GetProperty(TableView::Property::CELL_PADDING).Get(), Vector2(6.f,8.f), TEST_LOCATION ); //{ "policy": "fixed", "value": 30.0 }, Property::Map item1; @@ -603,7 +626,7 @@ int UtcDaliTableViewSetGetProperty(void) item2[ "value" ] = 0.2f; // Test "layout-rows" property - DALI_TEST_CHECK( tableView.GetPropertyIndex(PROPERTY_NAME_LAYOUT_ROWS) == TableView::PROPERTY_LAYOUT_ROWS ); + DALI_TEST_CHECK( tableView.GetPropertyIndex(PROPERTY_NAME_LAYOUT_ROWS) == TableView::Property::LAYOUT_ROWS ); /* * "layout-rows": @@ -615,21 +638,23 @@ int UtcDaliTableViewSetGetProperty(void) Property::Map layoutRows; layoutRows[ "1" ] = item1; layoutRows[ "3" ] = item2; - tableView.SetProperty( TableView::PROPERTY_LAYOUT_ROWS, layoutRows ); + tableView.SetProperty( TableView::Property::LAYOUT_ROWS, layoutRows ); DALI_TEST_EQUALS( tableView.GetFixedHeight( 1u ), 30.f, TEST_LOCATION ); DALI_TEST_EQUALS( tableView.GetRelativeHeight( 3u ), 0.2f, TEST_LOCATION ); - Property::Map layoutRowsGet = tableView.GetProperty(TableView::PROPERTY_LAYOUT_ROWS).Get(); - DALI_TEST_CHECK( layoutRowsGet.GetKey(0).compare(layoutRows.GetKey(0)) == 0 ); - DALI_TEST_CHECK( layoutRowsGet.GetValue(0).GetValue( "policy" ).Get().compare(layoutRows.GetValue(0).GetValue( "policy" ).Get()) == 0 ); - DALI_TEST_EQUALS( layoutRowsGet.GetValue(0).GetValue( "value" ).Get(),layoutRows.GetValue(0).GetValue( "value" ).Get(), TEST_LOCATION ); - DALI_TEST_CHECK( layoutRowsGet.GetKey(1).compare(layoutRows.GetKey(1)) == 0 ); - DALI_TEST_CHECK( layoutRowsGet.GetValue(1).GetValue( "policy" ).Get().compare(layoutRows.GetValue(1).GetValue( "policy" ).Get()) == 0 ); - DALI_TEST_EQUALS( layoutRowsGet.GetValue(1).GetValue( "value" ).Get(),layoutRows.GetValue(1).GetValue( "value" ).Get(), TEST_LOCATION ); + Property::Map layoutRowsGet = tableView.GetProperty(TableView::Property::LAYOUT_ROWS).Get(); + + DALI_TEST_EQUALS( layoutRowsGet.GetKey(1).compare(layoutRows.GetKey(0)), 0, TEST_LOCATION ); + DALI_TEST_CHECK( layoutRowsGet.GetValue(1).GetValue( "policy" ).Get().compare(layoutRows.GetValue(0).GetValue( "policy" ).Get()) == 0 ); + DALI_TEST_EQUALS( layoutRowsGet.GetValue(1).GetValue( "value" ).Get(), layoutRows.GetValue(0).GetValue( "value" ).Get(), TEST_LOCATION ); + + DALI_TEST_CHECK( layoutRowsGet.GetKey(3).compare(layoutRows.GetKey(1)) == 0 ); + DALI_TEST_CHECK( layoutRowsGet.GetValue(3).GetValue( "policy" ).Get().compare(layoutRows.GetValue(1).GetValue( "policy" ).Get()) == 0 ); + DALI_TEST_EQUALS( layoutRowsGet.GetValue(3).GetValue( "value" ).Get(), layoutRows.GetValue(1).GetValue( "value" ).Get(), TEST_LOCATION ); // Test "layout-columns" property - DALI_TEST_CHECK( tableView.GetPropertyIndex( PROPERTY_NAME_LAYOUT_COLUMNS ) == TableView::PROPERTY_LAYOUT_COLUMNS ); + DALI_TEST_CHECK( tableView.GetPropertyIndex( PROPERTY_NAME_LAYOUT_COLUMNS ) == TableView::Property::LAYOUT_COLUMNS ); /* * "layout-columns": @@ -641,18 +666,19 @@ int UtcDaliTableViewSetGetProperty(void) Property::Map layoutColumns; layoutColumns[ "2" ] = item2; layoutColumns[ "3" ] = item1; - tableView.SetProperty( TableView::PROPERTY_LAYOUT_COLUMNS, layoutColumns ); + tableView.SetProperty( TableView::Property::LAYOUT_COLUMNS, layoutColumns ); DALI_TEST_EQUALS( tableView.GetRelativeWidth( 2u ), 0.2f, TEST_LOCATION ); DALI_TEST_EQUALS( tableView.GetFixedWidth( 3u ), 30.f, TEST_LOCATION ); - Property::Map layoutColumnsGet = tableView.GetProperty(TableView::PROPERTY_LAYOUT_COLUMNS).Get(); - DALI_TEST_CHECK( layoutColumnsGet.GetKey(0).compare(layoutColumns.GetKey(0)) == 0 ); - DALI_TEST_CHECK( layoutColumnsGet.GetValue(0).GetValue( "policy" ).Get().compare(layoutColumns.GetValue(0).GetValue( "policy" ).Get()) == 0 ); - DALI_TEST_EQUALS( layoutColumnsGet.GetValue(0).GetValue( "value" ).Get(),layoutColumns.GetValue(0).GetValue( "value" ).Get(), TEST_LOCATION ); - DALI_TEST_CHECK( layoutColumnsGet.GetKey(1).compare(layoutColumns.GetKey(1)) == 0 ); - DALI_TEST_CHECK( layoutColumnsGet.GetValue(1).GetValue( "policy" ).Get().compare(layoutColumns.GetValue(1).GetValue( "policy" ).Get()) == 0 ); - DALI_TEST_EQUALS( layoutColumnsGet.GetValue(1).GetValue( "value" ).Get(),layoutColumns.GetValue(1).GetValue( "value" ).Get(), TEST_LOCATION ); + Property::Map layoutColumnsGet = tableView.GetProperty(TableView::Property::LAYOUT_COLUMNS).Get(); + DALI_TEST_CHECK( layoutColumnsGet.GetKey(2).compare(layoutColumns.GetKey(0)) == 0 ); + DALI_TEST_CHECK( layoutColumnsGet.GetValue(2).GetValue( "policy" ).Get().compare(layoutColumns.GetValue(0).GetValue( "policy" ).Get()) == 0 ); + DALI_TEST_EQUALS( layoutColumnsGet.GetValue(2).GetValue( "value" ).Get(),layoutColumns.GetValue(0).GetValue( "value" ).Get(), TEST_LOCATION ); + + DALI_TEST_CHECK( layoutColumnsGet.GetKey(3).compare(layoutColumns.GetKey(1)) == 0 ); + DALI_TEST_CHECK( layoutColumnsGet.GetValue(3).GetValue( "policy" ).Get().compare(layoutColumns.GetValue(1).GetValue( "policy" ).Get()) == 0 ); + DALI_TEST_EQUALS( layoutColumnsGet.GetValue(3).GetValue( "value" ).Get(),layoutColumns.GetValue(1).GetValue( "value" ).Get(), TEST_LOCATION ); END_TEST; } @@ -664,7 +690,8 @@ int UtcDaliTableViewCustomProperties(void) // Create a 10x10 table-view TableView tableView = TableView::New(10,10); - tableView.ApplyConstraint( Constraint::New( Actor::SIZE, Constraint100() ) ); + Constraint constraint = Constraint::New( tableView, Actor::Property::SIZE, Constraint100() ); + constraint.Apply(); DALI_TEST_CHECK( tableView ); // Create a child actor with the custom properties @@ -693,3 +720,178 @@ int UtcDaliTableViewCustomProperties(void) END_TEST; } + +int UtcDaliTableViewGetChildAtN(void) +{ + ToolkitTestApplication application; + + TableView tableView = TableView::New(10,10); + + Actor actor = tableView.GetChildAt( TableView::CellPosition( 200, 200 ) ); + DALI_TEST_CHECK( !actor ); + + END_TEST; +} + +int UtcDaliTableViewAddChildN(void) +{ + ToolkitTestApplication application; + + TableView tableView = TableView::New(10,10); + DALI_TEST_CHECK( tableView.AddChild( Actor::New(), TableView::CellPosition( 0, 0 ) ) ); + DALI_TEST_CHECK( ! tableView.AddChild( Actor::New(), TableView::CellPosition( 0, 0 ) ) ); + + END_TEST; +} + +int UtcDaliTableViewInsertRowAtZero(void) +{ + ToolkitTestApplication application; + + TableView tableView = TableView::New(10,10); + DALI_TEST_CHECK( tableView.AddChild( Actor::New(), TableView::CellPosition( 0, 0 , 10, 10 ) ) ); + tableView.InsertRow(0); + + DALI_TEST_CHECK( tableView.GetRows() == 11 ); + + END_TEST; +} + +int UtcDaliTableViewDeleteRowAtZero(void) +{ + ToolkitTestApplication application; + + TableView tableView = TableView::New(10,10); + DALI_TEST_CHECK( tableView.AddChild( Actor::New(), TableView::CellPosition( 0, 0 , 10, 10 ) ) ); + tableView.DeleteRow(0); + + DALI_TEST_CHECK( tableView.GetRows() == 9 ); + + END_TEST; +} + +int UtcDaliTableViewInsertColumnAtZero(void) +{ + ToolkitTestApplication application; + + TableView tableView = TableView::New(10,10); + DALI_TEST_CHECK( tableView.AddChild( Actor::New(), TableView::CellPosition( 0, 0 , 10, 10 ) ) ); + tableView.InsertColumn(0); + + DALI_TEST_CHECK( tableView.GetColumns() == 11 ); + + END_TEST; +} + +int UtcDaliTableViewDeleteColumnAtZero(void) +{ + ToolkitTestApplication application; + + TableView tableView = TableView::New(10,10); + DALI_TEST_CHECK( tableView.AddChild( Actor::New(), TableView::CellPosition( 0, 0 , 10, 10 ) ) ); + tableView.DeleteColumn(0); + + DALI_TEST_CHECK( tableView.GetColumns() == 9 ); + + END_TEST; +} + +int UtcDaliTableViewTypeRegistry(void) +{ + ToolkitTestApplication application; + + TypeRegistry typeRegistry = TypeRegistry::Get(); + DALI_TEST_CHECK( typeRegistry ); + + TypeInfo typeInfo = typeRegistry.GetTypeInfo( "TableView" ); + DALI_TEST_CHECK( typeInfo ); + + BaseHandle handle = typeInfo.CreateInstance(); + DALI_TEST_CHECK( handle ); + + TableView view = TableView::DownCast( handle ); + DALI_TEST_CHECK( view ); + + END_TEST; +} + +int UtcDaliTableViewKeyboardFocus(void) +{ + ToolkitTestApplication application; + + TableView tableView = TableView::New(4,4); + tableView.SetKeyboardFocusable( true ); + tableView.SetName( "TableView"); + + for ( int row = 0; row < 4; ++row ) + { + for ( int col = 0; col < 4; ++col ) + { + Control control = Control::New(); + std::ostringstream str; + str << row << "-" << col; + control.SetName( str.str() ); + control.SetKeyboardFocusable( 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.GetName() == "0-0" ); + + KeyboardFocusManager manager = KeyboardFocusManager::Get(); + manager.SetFocusGroupLoop( true ); + manager.SetCurrentFocusActor( firstFocusActor ); + + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-0" ); + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-1" ); + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-2" ); + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-3" ); + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "1-0" ); + + manager.MoveFocus( Control::KeyboardFocus::LEFT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-3" ); + manager.MoveFocus( Control::KeyboardFocus::LEFT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-2" ); + manager.MoveFocus( Control::KeyboardFocus::LEFT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-1" ); + manager.MoveFocus( Control::KeyboardFocus::LEFT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-0" ); + manager.MoveFocus( Control::KeyboardFocus::LEFT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "3-3" ); + + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-0" ); + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-1" ); + + manager.MoveFocus( Control::KeyboardFocus::DOWN ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "1-1" ); + manager.MoveFocus( Control::KeyboardFocus::DOWN ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "2-1" ); + manager.MoveFocus( Control::KeyboardFocus::DOWN ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "3-1" ); + manager.MoveFocus( Control::KeyboardFocus::DOWN ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-1" ); + + manager.MoveFocus( Control::KeyboardFocus::UP ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "3-1" ); + manager.MoveFocus( Control::KeyboardFocus::UP ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "2-1" ); + manager.MoveFocus( Control::KeyboardFocus::UP ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "1-1" ); + manager.MoveFocus( Control::KeyboardFocus::UP ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetName() == "0-1" ); + + END_TEST; +}