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=1a540a2303080e919ac98549d1de1527250b89a2;hp=45dd92c13ccba628b46448d2bff0042753ddfeed;hb=8a647e87a01c5c78451653c1264a9eea81ac9b20;hpb=e4e5db1d2d7997e7bf803a531048d8dcb959083b diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TableView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TableView.cpp index 45dd92c..1a540a2 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TableView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TableView.cpp @@ -17,8 +17,10 @@ #include #include +#include #include #include +#include using namespace Dali; using namespace Toolkit; @@ -38,9 +40,10 @@ 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_ROWS = "layout-rows"; -const char* const PROPERTY_NAME_LAYOUT_COLUMNS = "layout-columns"; +const char* const PROPERTY_NAME_CELL_PADDING = "cellPadding"; +const char* const PROPERTY_NAME_LAYOUT_ROWS = "layoutRows"; +const char* const PROPERTY_NAME_LAYOUT_COLUMNS = "layoutColumns"; +const Vector2 CELL_SIZE( 10, 10 ); static bool gObjectCreatedCallBackCalled; @@ -65,21 +68,21 @@ struct Constraint100 }; // 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) +static void SetupTableViewAndActors(Integration::Scene scene, TableView& tableView, Actor& actor1, Actor& actor2, Actor& actor3) { tableView = TableView::New( 10, 10 ); // 10 by 10 grid. DALI_TEST_CHECK( tableView ); - Stage::GetCurrent().Add( tableView ); - tableView.SetSize( Dali::Vector2( 100.0f, 100.0f ) ); + scene.Add( tableView ); + tableView.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) ); actor1 = Actor::New(); actor2 = Actor::New(); actor3 = Actor::New(); - actor1.SetSize( Dali::Vector2( 10, 10 ) ); - actor2.SetSize( Dali::Vector2( 10, 10 ) ); - actor3.SetSize( Dali::Vector2( 10, 10 ) ); + 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 ) ); @@ -88,6 +91,17 @@ static void SetupTableViewAndActors(TableView& tableView, Actor& actor1, Actor& } // namespace +int UtcDaliTableViewCtorCopyP(void) +{ + ToolkitTestApplication application; + + TableView actor1 = TableView::New(10,10); + TableView actor2( actor1 ); + + DALI_TEST_EQUALS( actor1, actor2, TEST_LOCATION ); + END_TEST; +} + int UtcDaliTableViewNew(void) { ToolkitTestApplication application; @@ -96,7 +110,7 @@ int UtcDaliTableViewNew(void) DALI_TEST_CHECK(tableView); //Additional check to ensure object is created by checking if it's registered - ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry(); + ObjectRegistry registry = application.GetCore().GetObjectRegistry(); DALI_TEST_CHECK( registry ); gObjectCreatedCallBackCalled = false; @@ -120,7 +134,7 @@ int UtcDaliTableViewMetricsPadding(void) Actor actor2; Actor actor3; - SetupTableViewAndActors(tableView, actor1, actor2, actor3); + SetupTableViewAndActors(application.GetScene(), tableView, actor1, actor2, actor3); // 1. check that padding works. no padding: tableView.SetCellPadding(Size(0.0f, 0.0f)); @@ -128,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)); @@ -138,7 +152,60 @@ 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; +} + +// 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(application.GetScene(), 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.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); + 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.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; } @@ -154,14 +221,14 @@ int UtcDaliTableViewMetricsFixed(void) Actor actor2; Actor actor3; - SetupTableViewAndActors(tableView, actor1, actor2, actor3); + SetupTableViewAndActors(application.GetScene(), 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 ); + 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); @@ -172,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; } @@ -190,14 +257,14 @@ int UtcDaliTableViewMetricsRelative(void) Actor actor2; Actor actor3; - SetupTableViewAndActors(tableView, actor1, actor2, actor3); + SetupTableViewAndActors(application.GetScene(), tableView, actor1, actor2, actor3); application.SendNotification(); 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) @@ -208,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; } @@ -309,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)); @@ -351,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 ); @@ -359,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 ); @@ -390,6 +457,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; } @@ -536,26 +607,26 @@ 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 DALI_TEST_CHECK( tableView.GetPropertyIndex( PROPERTY_NAME_ROWS ) == TableView::Property::ROWS ); - tableView.SetProperty( TableView::Property::ROWS, 4u ); + tableView.SetProperty( TableView::Property::ROWS, 4 ); 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() == 4 ); // Test "columns" property DALI_TEST_CHECK( tableView.GetPropertyIndex( PROPERTY_NAME_COLUMNS ) == TableView::Property::COLUMNS ); - tableView.SetProperty( TableView::Property::COLUMNS, 5u ); + tableView.SetProperty( TableView::Property::COLUMNS, 5 ); 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() == 5 ); - // Test "cell-padding" property + // Test "cellPadding" property DALI_TEST_CHECK( tableView.GetPropertyIndex( PROPERTY_NAME_CELL_PADDING ) == TableView::Property::CELL_PADDING ); tableView.SetProperty( TableView::Property::CELL_PADDING, Size( 6.f, 8.f ) ); @@ -572,11 +643,11 @@ int UtcDaliTableViewSetGetProperty(void) item2[ "policy" ] = "relative"; item2[ "value" ] = 0.2f; - // Test "layout-rows" property + // Test "layoutRows" property DALI_TEST_CHECK( tableView.GetPropertyIndex(PROPERTY_NAME_LAYOUT_ROWS) == TableView::Property::LAYOUT_ROWS ); /* - * "layout-rows": + * "layoutRows": * { * "1": { "policy": "fixed", "value": 30 }, * "3": { "policy": "relative", "value": 0.2 } @@ -593,18 +664,20 @@ int UtcDaliTableViewSetGetProperty(void) 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 ); + Property::Map* childMap =layoutRowsGet.GetValue(1).GetMap(); + DALI_TEST_CHECK( childMap->Find( "policy" )->Get().compare("fixed") == 0 ); + DALI_TEST_EQUALS( childMap->Find( "value" )->Get(), 30.f, TEST_LOCATION ); + childMap =layoutRowsGet.GetValue(3).GetMap(); 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 ); + DALI_TEST_CHECK( childMap->Find( "policy" )->Get().compare("relative") == 0 ); + DALI_TEST_EQUALS( childMap->Find( "value" )->Get(), 0.2f, TEST_LOCATION ); - // Test "layout-columns" property + // Test "layoutColumns" property DALI_TEST_CHECK( tableView.GetPropertyIndex( PROPERTY_NAME_LAYOUT_COLUMNS ) == TableView::Property::LAYOUT_COLUMNS ); /* - * "layout-columns": + * "layoutColumns": * { * "2": { "policy": "relative", "value": 0.2 }, * "3": { "policy": "fixed", "value": 30 } @@ -620,30 +693,32 @@ int UtcDaliTableViewSetGetProperty(void) 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 ); - + childMap =layoutColumnsGet.GetValue(2).GetMap(); + DALI_TEST_CHECK( childMap->Find( "policy" )->Get().compare("relative") == 0 ); + DALI_TEST_EQUALS( childMap->Find( "value" )->Get(), 0.2f, TEST_LOCATION ); + childMap =layoutColumnsGet.GetValue(3).GetMap(); 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 ); + DALI_TEST_CHECK( childMap->Find( "policy" )->Get().compare("fixed") == 0 ); + DALI_TEST_EQUALS( childMap->Find( "value" )->Get(),30.f, TEST_LOCATION ); END_TEST; } -int UtcDaliTableViewCustomProperties(void) +int UtcDaliTableViewChildProperties(void) { ToolkitTestApplication application; - tet_infoline("UtcDaliTableViewCustomProperties"); + tet_infoline("UtcDaliTableViewChildProperties"); // Create a 10x10 table-view TableView tableView = TableView::New(10,10); - Constraint constraint = Constraint::New( tableView, Actor::Property::SIZE, Constraint100() ); - constraint.Apply(); + application.GetScene().Add( tableView ); + tableView.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) ); + DALI_TEST_CHECK( tableView ); // Create a child actor with the custom properties Actor child1 = Actor::New(); - child1.RegisterProperty( TableView::CELL_INDICES_PROPERTY_NAME, Vector2( 3, 4 ) ); + child1.SetProperty( TableView::ChildProperty::CELL_INDEX, Vector2( 3, 4 ) ); tableView.Add( child1 ); // Check for actors at actual positions. DALI_TEST_CHECK( tableView.GetChildAt(TableView::CellPosition(3,4)) == child1); @@ -652,9 +727,9 @@ int UtcDaliTableViewCustomProperties(void) Actor child2 = Actor::New(); float rowSpan = 3.f; float columnSpan = 2.f; - child2.RegisterProperty( TableView::CELL_INDICES_PROPERTY_NAME, Vector2( 6, 1 ) ); - child2.RegisterProperty( TableView::ROW_SPAN_PROPERTY_NAME, rowSpan ); - child2.RegisterProperty( TableView::COLUMN_SPAN_PROPERTY_NAME, columnSpan ); + child2.SetProperty( TableView::ChildProperty::CELL_INDEX, Vector2( 6, 1 ) ); + child2.SetProperty( TableView::ChildProperty::ROW_SPAN, rowSpan ); + child2.SetProperty( TableView::ChildProperty::COLUMN_SPAN, columnSpan ); tableView.Add( child2 ); // Check for actors at actual positions. for( int i=0; i( 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; +} + +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.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE, true ); + tableView.SetProperty( Dali::Actor::Property::NAME, "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.SetProperty( Dali::Actor::Property::NAME, str.str() ); + control.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE, true ); + tableView.AddChild( control, TableView::CellPosition( row, col ) ); + } + } + + application.GetScene().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( true ); + 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 ) == "0-3" ); + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + 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-3" ); + 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::LEFT ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "3-3" ); + + manager.MoveFocus( Control::KeyboardFocus::RIGHT ); + 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" ); + manager.MoveFocus( Control::KeyboardFocus::DOWN ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "2-1" ); + manager.MoveFocus( Control::KeyboardFocus::DOWN ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "3-1" ); + manager.MoveFocus( Control::KeyboardFocus::DOWN ); + DALI_TEST_CHECK( manager.GetCurrentFocusActor().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-1" ); + + manager.MoveFocus( Control::KeyboardFocus::UP ); + 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 ) ); + } + } + } + + application.GetScene().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().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "1-1-1-1" ); + manager.MoveFocus( Control::KeyboardFocus::UP ); + 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().GetProperty< std::string >( Dali::Actor::Property::NAME ) == "0-1" ); + END_TEST; }