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-Visual.cpp;h=c0bb0b1622a97755a7111da6df9e3f667a82473e;hp=4959ed91f84233dfaf6197c85f4f567aa99fb5d7;hb=f4a28993f3f77f15015e5c9b4e1bedd06e23b926;hpb=babef00662186629afb90e87a37834ff9b5d997f diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp index 4959ed9..c0bb0b1 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp @@ -147,17 +147,20 @@ int UtcDaliVisualSetGetDepthIndex(void) visual.SetDepthIndex( 1.f ); - Actor actor = Actor::New(); - actor.SetSize(200.f, 200.f); - Stage::GetCurrent().Add( actor ); - visual.SetOnStage( actor ); + DummyControl dummyControl = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(dummyControl.GetImplementation()); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); + + dummyControl.SetSize(200.f, 200.f); + Stage::GetCurrent().Add( dummyControl ); + - int depthIndex = actor.GetRendererAt(0u).GetProperty( Renderer::Property::DEPTH_INDEX ); + int depthIndex = dummyControl.GetRendererAt(0u).GetProperty( Renderer::Property::DEPTH_INDEX ); DALI_TEST_EQUALS( depthIndex, 1, TEST_LOCATION ); DALI_TEST_EQUALS( visual.GetDepthIndex(), 1.f, TEST_LOCATION ); visual.SetDepthIndex( -1.f ); - depthIndex = actor.GetRendererAt(0u).GetProperty( Renderer::Property::DEPTH_INDEX ); + depthIndex = dummyControl.GetRendererAt(0u).GetProperty( Renderer::Property::DEPTH_INDEX ); DALI_TEST_EQUALS( depthIndex, -1, TEST_LOCATION ); DALI_TEST_EQUALS( visual.GetDepthIndex(), -1.f, TEST_LOCATION ); @@ -191,16 +194,7 @@ int UtcDaliVisualSize(void) imageVisual.GetNaturalSize(naturalSize); DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 200.f), TEST_LOCATION ); - // n patch visual - TestPlatformAbstraction& platform = application.GetPlatform(); - Vector2 testSize(80.f, 160.f); - platform.SetClosestImageSize(testSize); - image = ResourceImage::New(TEST_NPATCH_FILE_NAME); - Visual::Base nPatchVisual = factory.CreateVisual( image ); - nPatchVisual.SetSize( visualSize ); - DALI_TEST_EQUALS( nPatchVisual.GetSize(), visualSize, TEST_LOCATION ); - nPatchVisual.GetNaturalSize(naturalSize); - DALI_TEST_EQUALS( naturalSize, testSize, TEST_LOCATION ); + // n patch visual is tested in the utc-Dali-VisualFactory.cpp // border visual float borderSize = 5.f; @@ -250,6 +244,9 @@ int UtcDaliVisualSize(void) DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION ); // Natural size should still be 100, 100 // Batch Image visual + TestPlatformAbstraction& platform = application.GetPlatform(); + Vector2 testSize(80.f, 160.f); + platform.SetClosestImageSize(testSize); propertyMap.Clear(); propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE ); propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ); @@ -299,68 +296,32 @@ int UtcDaliVisualSetOnOffStage(void) propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE); Visual::Base visual = factory.CreateVisual( propertyMap ); - Actor actor = Actor::New(); - actor.SetSize(200.f, 200.f); - Stage::GetCurrent().Add( actor ); + DummyControl actor = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); - application.SendNotification(); - application.Render(0); - DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); - - visual.SetOnStage( actor ); - application.SendNotification(); - application.Render(0); - DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); + actor.SetSize(200.f, 200.f); - visual.SetOffStage( actor ); application.SendNotification(); application.Render(0); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); - END_TEST; -} - -int UtcDaliVisualRemoveAndReset(void) -{ - ToolkitTestApplication application; - tet_infoline( "intUtcDaliVisualRemoveAndReset" ); - - VisualFactory factory = VisualFactory::Get(); - - Actor actor = Actor::New(); - actor.SetSize(200.f, 200.f); Stage::GetCurrent().Add( actor ); - Visual::Base imageVisual; - // test calling RemoveAndReset with an empty handle - try - { - imageVisual.RemoveAndReset( actor ); - tet_result(TET_PASS); - } - catch (DaliException& exception) - { - tet_result(TET_FAIL); - } - - Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200)); - imageVisual = factory.CreateVisual(image); - DALI_TEST_CHECK( imageVisual ); - - imageVisual.SetOnStage( actor ); application.SendNotification(); application.Render(0); DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); - imageVisual.RemoveAndReset( actor ); + Stage::GetCurrent().Remove( actor ); + application.SendNotification(); application.Render(0); - DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); // visual is removed from actor - DALI_TEST_CHECK( !imageVisual ); // visual is reset + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; } + int UtcDaliVisualGetPropertyMap1(void) { ToolkitTestApplication application; @@ -384,8 +345,6 @@ int UtcDaliVisualGetPropertyMap1(void) DALI_TEST_CHECK( colorValue->Get() == Color::BLUE ); // change the blend color - Actor actor; - colorVisual.RemoveAndReset( actor ); propertyMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN; colorVisual = factory.CreateVisual( propertyMap ); colorVisual.CreatePropertyMap( resultMap ); @@ -707,10 +666,6 @@ int UtcDaliVisualGetPropertyMap5(void) DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == false ); - // Test the properties. TODO: to be completed. - imageVisual.SetProperty( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ); - Property::Value imageValue = imageVisual.GetProperty( ImageVisual::Property::URL ); - END_TEST; } @@ -742,9 +697,6 @@ int UtcDaliVisualGetPropertyMap6(void) DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() ); - // Test the properties. TODO: to be completed. - nPatchVisual.SetProperty( ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME ); - Property::Value nPatchValue = nPatchVisual.GetProperty( ImageVisual::Property::URL ); END_TEST; } @@ -1060,8 +1012,7 @@ int UtcDaliVisualGetPropertyMap10(void) DALI_TEST_CHECK( !value->Get() ); value = resultMap.Find( TextVisual::Property::ENABLE_AUTO_SCROLL, Property::BOOLEAN ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( !value->Get() ); + DALI_TEST_CHECK( !value ); value = resultMap.Find( TextVisual::Property::LINE_SPACING, Property::FLOAT ); DALI_TEST_CHECK( value ); @@ -1094,10 +1045,12 @@ int UtcDaliVisualGetPropertyMapBatchImageVisualNoAtlas(void) DALI_TEST_CHECK( batchImageVisual ); - Actor actor = Actor::New(); - batchImageVisual.SetOnStage( actor ); + DummyControl dummyControl = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(dummyControl.GetImplementation()); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, batchImageVisual ); + Stage::GetCurrent().Add( dummyControl ); - DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); + DALI_TEST_CHECK( dummyControl.GetRendererCount() == 1u ); END_TEST; } @@ -1114,11 +1067,12 @@ int UtcDaliVisualAnimateBorderVisual01(void) propertyMap.Insert(BorderVisual::Property::SIZE, 5.f); Visual::Base borderVisual = factory.CreateVisual( propertyMap ); - Actor actor = Actor::New(); + DummyControl actor = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, borderVisual ); actor.SetSize(2000, 2000); actor.SetParentOrigin(ParentOrigin::CENTER); Stage::GetCurrent().Add(actor); - borderVisual.SetOnStage( actor ); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); @@ -1160,11 +1114,12 @@ int UtcDaliVisualAnimateBorderVisual02(void) propertyMap.Insert(BorderVisual::Property::SIZE, 5.f); Visual::Base borderVisual = factory.CreateVisual( propertyMap ); - Actor actor = Actor::New(); + DummyControl actor = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, borderVisual ); actor.SetSize(2000, 2000); actor.SetParentOrigin(ParentOrigin::CENTER); Stage::GetCurrent().Add(actor); - borderVisual.SetOnStage( actor ); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); @@ -1203,11 +1158,12 @@ int UtcDaliVisualAnimateColorVisual(void) propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE); Visual::Base borderVisual = factory.CreateVisual( propertyMap ); - Actor actor = Actor::New(); + DummyControl actor = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, borderVisual ); actor.SetSize(2000, 2000); actor.SetParentOrigin(ParentOrigin::CENTER); Stage::GetCurrent().Add(actor); - borderVisual.SetOnStage( actor ); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); @@ -1251,12 +1207,13 @@ int UtcDaliVisualAnimatePrimitiveVisual(void) propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE); Visual::Base borderVisual = factory.CreateVisual( propertyMap ); - Actor actor = Actor::New(); + DummyControl actor = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, borderVisual ); actor.SetSize(2000, 2000); actor.SetParentOrigin(ParentOrigin::CENTER); actor.SetColor(Color::BLACK); Stage::GetCurrent().Add(actor); - borderVisual.SetOnStage( actor ); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); @@ -1400,10 +1357,13 @@ static void TestTransform( ToolkitTestApplication& application, Visual::Base vis } //Put the visual on the stage - Actor actor = Actor::New(); - actor.SetSize(200.f, 200.f); - Stage::GetCurrent().Add( actor ); - visual.SetOnStage( actor ); + DummyControl actor = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); + actor.SetSize(2000, 2000); + actor.SetParentOrigin(ParentOrigin::CENTER); + Stage::GetCurrent().Add(actor); + application.SendNotification(); application.Render(0); Renderer renderer( actor.GetRendererAt(0) ); @@ -1596,4 +1556,124 @@ int UtcDaliVisualSetTransform7(void) END_TEST; } +int UtcDaliNPatchVisualCustomShader(void) +{ + ToolkitTestApplication application; + tet_infoline( "NPatchVisual with custom shader" ); + + VisualFactory factory = VisualFactory::Get(); + Property::Map properties; + Property::Map shader; + const std::string fragmentShader = "Foobar"; + shader[Dali::Toolkit::Visual::Shader::Property::FRAGMENT_SHADER] = fragmentShader; + properties[Dali::Toolkit::Visual::Property::TYPE] = Dali::Toolkit::Visual::IMAGE; + properties[Dali::Toolkit::Visual::Property::SHADER]=shader; + properties[Dali::Toolkit::ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME; + + Visual::Base visual = factory.CreateVisual( properties ); + + // trigger creation through setting on stage + DummyControl dummy = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(dummy.GetImplementation()); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); + dummy.SetSize(2000, 2000); + dummy.SetParentOrigin(ParentOrigin::CENTER); + Stage::GetCurrent().Add(dummy); + + Renderer renderer = dummy.GetRendererAt( 0 ); + Shader shader2 = renderer.GetShader(); + Property::Value value = shader2.GetProperty( Shader::Property::PROGRAM ); + Property::Map* map = value.GetMap(); + DALI_TEST_CHECK( map ); + + Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp + // *map["vertex"]; is default here so not verifying it + + DALI_TEST_EQUALS( fragmentShader, fragment->Get(), TEST_LOCATION ); + + END_TEST; +} +int UtcDaliGradientVisualBlendMode(void) +{ + ToolkitTestApplication application; + VisualFactory factory = VisualFactory::Get(); + + Visual::Base opaqueGradientVisual = factory.CreateVisual( + Property::Map().Add( Visual::Property::TYPE, Visual::GRADIENT ) + .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) ) + .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) ) + .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED ) + .Add( Color::GREEN ) ) ); + + Visual::Base alphaGradientVisual = factory.CreateVisual( + Property::Map().Add( Visual::Property::TYPE, Visual::GRADIENT ) + .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) ) + .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) ) + .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED ) + .Add( Vector4( 1.0f, 1.0f, 1.0f, 0.5f ) ) ) ); + + DummyControl control = DummyControl::New(); + control.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); + Stage::GetCurrent().Add( control ); + + DummyControlImpl& dummyImpl = static_cast( control.GetImplementation() ); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, opaqueGradientVisual ); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 2, alphaGradientVisual ); + + application.SendNotification(); + application.Render(); + + // Control should have two renderers, the first one is opaque so our blending mode should be off, the second one has some alpha so should be set to automatic + DALI_TEST_EQUALS( 2u, control.GetRendererCount(), TEST_LOCATION ); + DALI_TEST_EQUALS( control.GetRendererAt( 0 ).GetProperty( Renderer::Property::BLEND_MODE ).Get(), (int)BlendMode::OFF, TEST_LOCATION ); + DALI_TEST_EQUALS( control.GetRendererAt( 1 ).GetProperty( Renderer::Property::BLEND_MODE ).Get(), (int)BlendMode::AUTO, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliVisualRendererRemovalAndReAddition(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliVisualRendererRemoval" ); + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR); + propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE); + Visual::Base visual = factory.CreateVisual( propertyMap ); + visual.SetDepthIndex( 1.f ); + + DummyControl dummyControl = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(dummyControl.GetImplementation()); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); + DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION ); + + dummyControl.SetSize(200.f, 200.f); + tet_infoline( "Add control with visual to stage and check renderer count is 1" ); + + Stage::GetCurrent().Add( dummyControl ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION ); + + tet_infoline( "Remove control with visual from stage and check renderer count is 0" ); + Stage::GetCurrent().Remove( dummyControl ); + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION ); + + tet_infoline( "Re-add control with visual to stage and check renderer count is still 1" ); + + Stage::GetCurrent().Add( dummyControl ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION ); + + END_TEST; +}