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-VisualFactory.cpp;h=faae3fe5ca14d1364116ece538841cf39042f600;hp=df2d7be705ded372de55ffc2ae9a30c9b0dc9502;hb=6c57cc54ac64c8387338bb4236984883b6204929;hpb=4cc02f3e2045755c2c65e64a6f5e126a4c6208ea diff --git a/automated-tests/src/dali-toolkit/utc-Dali-VisualFactory.cpp b/automated-tests/src/dali-toolkit/utc-Dali-VisualFactory.cpp index df2d7be..faae3fe 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-VisualFactory.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-VisualFactory.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include "dummy-control.h" #include @@ -33,7 +34,7 @@ using namespace Dali::Toolkit; namespace { -typedef Toolkit::Internal::NPatchLoader::StretchRanges StretchRanges; +typedef Toolkit::NPatchUtility::StretchRanges StretchRanges; const char* TEST_9_PATCH_FILE_NAME = TEST_RESOURCE_DIR "/demo-tile-texture-focused.9.png"; const char* TEST_NPATCH_FILE_NAME = TEST_RESOURCE_DIR "/heartsframe.9.png"; @@ -72,10 +73,10 @@ void TestVisualRender( ToolkitTestApplication& application, DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); - actor.SetSize( 200.f, 200.f ); + actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(); @@ -93,10 +94,10 @@ void TestVisualAsynchronousRender( ToolkitTestApplication& application, DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); - actor.SetSize( 200.f, 200.f ); + actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(); @@ -231,7 +232,7 @@ int UtcDaliVisualFactoryGetColorVisual2(void) DALI_TEST_EQUALS( actualValue, Vector3(testColor), TEST_LOCATION ); DALI_TEST_EQUALS( actualColor.a, testColor.a, TEST_LOCATION ); - Stage::GetCurrent().Remove(actor); + application.GetScene().Remove(actor); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; @@ -258,8 +259,8 @@ int UtcDaliVisualFactoryGetBorderVisual1(void) DummyControl actor = DummyControl::New(true); DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); - actor.SetSize(200.f, 200.f); - Stage::GetCurrent().Add( actor ); + actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + application.GetScene().Add( actor ); visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f)); DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); @@ -306,8 +307,8 @@ int UtcDaliVisualFactoryGetBorderVisual2(void) DummyControl actor = DummyControl::New(true); DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); - actor.SetSize(200.f, 200.f); - Stage::GetCurrent().Add( actor ); + actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + application.GetScene().Add( actor ); visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f)); DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); @@ -339,7 +340,7 @@ int UtcDaliVisualFactoryGetBorderVisual2(void) visual = factory.CreateVisual( map ); dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); blendMode = actor.GetRendererAt(0u).GetProperty( Renderer::Property::BLEND_MODE ); DALI_TEST_EQUALS( static_cast(blendMode), BlendMode::ON, TEST_LOCATION ); @@ -458,7 +459,7 @@ int UtcDaliVisualFactoryDefaultOffsetsGradientVisual(void) DummyControl actor = DummyControl::New(true); TestVisualRender( application, actor, visual ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; @@ -746,7 +747,7 @@ int UtcDaliVisualFactoryGetNPatchVisual2(void) int UtcDaliVisualFactoryGetNPatchVisual3(void) { ToolkitTestApplication application; - tet_infoline( "UtcDaliVisualFactoryGetNPatchVisual2: Request n-patch visual with a Property::Map" ); + tet_infoline( "UtcDaliVisualFactoryGetNPatchVisual3: Request n-patch visual with a Property::Map" ); VisualFactory factory = VisualFactory::Get(); DALI_TEST_CHECK( factory ); @@ -770,7 +771,7 @@ int UtcDaliVisualFactoryGetNPatchVisual3(void) DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); Vector2 naturalSize( 0.0f, 0.0f ); @@ -796,7 +797,7 @@ int UtcDaliVisualFactoryGetNPatchVisual3(void) visual.GetNaturalSize( naturalSize ); DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f ), TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); } @@ -831,18 +832,6 @@ int UtcDaliVisualFactoryGetNPatchVisual4(void) textureTrace.Reset(); - ResourceImage image = ResourceImage::New( TEST_9_PATCH_FILE_NAME ); - Visual::Base nPatchVisual = factory.CreateVisual( image ); - - DummyControl actor1 = DummyControl::New(true); - TestVisualRender( application, actor1, nPatchVisual ); - - DALI_TEST_EQUALS( textureTrace.CountMethod("BindTexture"), 0, TEST_LOCATION ); // The same texture should be used with the first visual. - - naturalSize = Vector2( 0.0f, 0.0f ); - nPatchVisual.GetNaturalSize( naturalSize ); - DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f ), TEST_LOCATION ); - END_TEST; } @@ -908,7 +897,7 @@ int UtcDaliVisualFactoryGetNPatchVisual6(void) visual.GetNaturalSize( naturalSize ); DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f ), TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); } @@ -936,13 +925,65 @@ int UtcDaliVisualFactoryGetNPatchVisual6(void) visual.GetNaturalSize( naturalSize ); DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f ), TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); } END_TEST; } +int UtcDaliVisualFactoryGetNPatchVisual7(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliVisualFactoryGetNPatchVisual7: Add 9-patch visual on stage and instantly remove it." ); + + VisualFactory factory = VisualFactory::Get(); + DALI_TEST_CHECK( factory ); + + // Get actual size of test image + ImageDimensions imageSize = Dali::GetClosestImageSize( TEST_9_PATCH_FILE_NAME ); + + Property::Map propertyMap; + propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::N_PATCH ); + propertyMap.Insert( ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME ); + propertyMap.Insert( ImageVisual::Property::SYNCHRONOUS_LOADING, false ); + { + Visual::Base visual = factory.CreateVisual( propertyMap ); + DALI_TEST_CHECK( visual ); + + Vector2 naturalSize( 0.0f, 0.0f ); + visual.GetNaturalSize( naturalSize ); + DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth(), imageSize.GetHeight() ), TEST_LOCATION ); + + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); + + DummyControl actor = DummyControl::New(true); + + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); + + actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); + + application.GetScene().Add( actor ); + actor.Unparent(); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger(1 ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); + } + + END_TEST; +} + int UtcDaliNPatchVisualAuxiliaryImage(void) { ToolkitTestApplication application; @@ -975,8 +1016,8 @@ int UtcDaliNPatchVisualAuxiliaryImage(void) dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transformMap ); dummy.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS ); - dummy.SetParentOrigin(ParentOrigin::CENTER); - Stage::GetCurrent().Add(dummy); + dummy.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); + application.GetScene().Add(dummy); application.SendNotification(); application.Render(); @@ -1086,16 +1127,13 @@ int UtcDaliVisualFactoryGetSvgVisual(void) DummyControl actor = DummyControl::New(true); DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); - actor.SetSize( 200.f, 200.f ); - Stage::GetCurrent().Add( actor ); + actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + application.GetScene().Add( actor ); visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f) ); + // Either application.SendNotification() or the trigger can now complete the task. application.SendNotification(); application.Render(); - - // renderer is not added to actor until the rasterization is completed. - DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); - DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); // renderer is added to actor @@ -1127,14 +1165,11 @@ int UtcDaliVisualFactoryGetSvgVisualLarge(void) DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); actor.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); // Only rasterizes when it knows control size. dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); + // Either application.SendNotification() or the trigger can now complete the task. application.SendNotification(); application.Render(); - - // renderer is not added to actor until the rasterization is completed. - DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); - DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); // renderer is added to actor @@ -1171,16 +1206,14 @@ int UtcDaliVisualFactoryGetSvgVisualAtlas(void) DummyControl actor = DummyControl::New(true); DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); - actor.SetSize( 200.f, 200.f ); - Stage::GetCurrent().Add( actor ); + actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + application.GetScene().Add( actor ); visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f) ); + // Either application.SendNotification() or the trigger can now complete the task. + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); application.SendNotification(); application.Render(); - - // renderer is not added to actor until the rasterization is completed. - DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); - DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); // renderer is added to actor @@ -1210,8 +1243,8 @@ void MeshVisualLoadsCorrectlyTest( Property::Map& propertyMap, ToolkitTestApplic DummyControl actor = DummyControl::New(true); DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); - actor.SetSize( 200.f, 200.f ); - Stage::GetCurrent().Add( actor ); + actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + application.GetScene().Add( actor ); visual.SetTransformAndSize(DefaultTransform(), Vector2( 200.f, 200.f ) ); //Ensure set on stage. @@ -1253,8 +1286,8 @@ void MeshVisualDoesNotLoadCorrectlyTest( Property::Map& propertyMap, ToolkitTest DummyControl actor = DummyControl::New(true); DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); - actor.SetSize( 200.f, 200.f ); - Stage::GetCurrent().Add( actor ); + actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + application.GetScene().Add( actor ); visual.SetTransformAndSize(DefaultTransform(), Vector2( 200.f, 200.f ) ); //Ensure set on stage. @@ -1560,8 +1593,8 @@ void TestPrimitiveVisualWithProperties( Property::Map& propertyMap, ToolkitTestA DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); - actor.SetSize( 200.f, 200.f ); - Stage::GetCurrent().Add( actor ); + actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + application.GetScene().Add( actor ); visual.SetTransformAndSize(DefaultTransform(), Vector2( 200.f, 200.f ) ); //Ensure set on stage. @@ -1665,7 +1698,7 @@ int UtcDaliVisualFactoryGetPrimitiveVisual4(void) //Set up visual properties. Property::Map propertyMap; propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE ); - propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CONICAL_FRUSTRUM ); + propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CONICAL_FRUSTUM ); propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, Vector4( 0.5, 0.5, 0.5, 1.0 ) ); propertyMap.Insert( PrimitiveVisual::Property::SLICES, 10 ); propertyMap.Insert( PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f ); @@ -2001,8 +2034,13 @@ int UtcDaliVisualFactoryGetAnimatedImageVisual1(void) DummyControl actor = DummyControl::New(true); DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); - actor.SetSize( 200.0f, 200.0f ); - Stage::GetCurrent().Add( actor ); + actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + application.GetScene().Add( actor ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 2 ), true, TEST_LOCATION ); application.SendNotification(); application.Render(); @@ -2020,14 +2058,23 @@ int UtcDaliVisualFactoryGetAnimatedImageVisual1(void) timer.MockEmitSignal(); application.SendNotification(); application.Render(); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION ); textureTrace.Reset(); - // Force the timer used by the animatedImageVisual to tick, timer.MockEmitSignal(); application.SendNotification(); application.Render(); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION ); textureTrace.Reset(); @@ -2035,10 +2082,15 @@ int UtcDaliVisualFactoryGetAnimatedImageVisual1(void) timer.MockEmitSignal(); application.SendNotification(); application.Render(); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION ); textureTrace.Reset(); - // Test SetOffStage(). + // Test SetOffScene(). actor.Unparent(); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); @@ -2070,8 +2122,13 @@ int UtcDaliVisualFactoryGetAnimatedImageVisual2(void) DummyControl actor = DummyControl::New(true); DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); - actor.SetSize( 200.0f, 200.0f ); - Stage::GetCurrent().Add( actor ); + actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + application.GetScene().Add( actor ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 2 ), true, TEST_LOCATION ); application.SendNotification(); application.Render();