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-ImageView.cpp;h=21c00de7ffbba5f62b7b1807e38b267768544289;hp=965e258c8e2cc8f244524125c868cfa8ddaef474;hb=45cb3406843ffdbafe26306d784fae966b8b1f3d;hpb=74a038e7b56576fe2bcb6a4e70c1aa361f681b09 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp index 965e258..21c00de 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp @@ -163,7 +163,7 @@ void TestUrl( ImageView imageView, const std::string url ) int UtcDaliImageViewNewP(void) { - TestApplication application; + ToolkitTestApplication application; ImageView imageView = ImageView::New(); @@ -174,7 +174,7 @@ int UtcDaliImageViewNewP(void) int UtcDaliImageViewNewImageP(void) { - TestApplication application; + ToolkitTestApplication application; BufferImage image = CreateBufferImage( 100, 200, Vector4( 1.f, 1.f, 1.f, 1.f ) ); ImageView imageView = ImageView::New( image ); @@ -187,7 +187,7 @@ int UtcDaliImageViewNewImageP(void) int UtcDaliImageViewNewUrlP(void) { - TestApplication application; + ToolkitTestApplication application; ImageView imageView = ImageView::New( TEST_IMAGE_FILE_NAME ); DALI_TEST_CHECK( imageView ); @@ -199,7 +199,7 @@ int UtcDaliImageViewNewUrlP(void) int UtcDaliImageViewConstructorP(void) { - TestApplication application; + ToolkitTestApplication application; ImageView imageView; @@ -210,7 +210,7 @@ int UtcDaliImageViewConstructorP(void) int UtcDaliImageViewCopyConstructorP(void) { - TestApplication application; + ToolkitTestApplication application; // Initialize an object, ref count == 1 ImageView imageView = ImageView::New(); @@ -223,7 +223,7 @@ int UtcDaliImageViewCopyConstructorP(void) int UtcDaliImageViewAssignmentOperatorP(void) { - TestApplication application; + ToolkitTestApplication application; ImageView imageView = ImageView::New(); @@ -236,7 +236,7 @@ int UtcDaliImageViewAssignmentOperatorP(void) int UtcDaliImageViewDownCastP(void) { - TestApplication application; + ToolkitTestApplication application; ImageView imageView = ImageView::New(); @@ -253,7 +253,7 @@ int UtcDaliImageViewDownCastP(void) int UtcDaliImageViewDownCastN(void) { - TestApplication application; + ToolkitTestApplication application; BaseHandle unInitializedObject; @@ -865,9 +865,16 @@ int UtcDaliImageViewSizeWithBackground(void) int width = 100; int height = 200; - Image image = CreateBufferImage( width, height, Vector4(1.f, 1.f, 1.f, 1.f) ); ImageView imageView = ImageView::New(); - imageView.SetBackgroundImage( image ); + + imageView.SetProperty( Control::Property::BACKGROUND, + { + { Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE }, + { Toolkit::ImageVisual::Property::URL, TEST_RESOURCE_DIR "/gallery-small-1.jpg" }, + { ImageVisual::Property::DESIRED_WIDTH, width }, + { ImageVisual::Property::DESIRED_HEIGHT, height }, + } + ); Stage::GetCurrent().Add( imageView ); application.SendNotification(); @@ -887,11 +894,19 @@ int UtcDaliImageViewSizeWithBackgroundAndImage(void) int heightBackground = 200; int width = 300; int height = 400; - Image imageBackground = CreateBufferImage( widthBackground, heightBackground, Vector4(1.f, 1.f, 1.f, 1.f) ); Image image = CreateBufferImage( width, height, Vector4(1.f, 1.f, 1.f, 1.f) ); ImageView imageView = ImageView::New(); - imageView.SetBackgroundImage( imageBackground ); + + imageView.SetProperty( Control::Property::BACKGROUND, + { + { Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE }, + { Toolkit::ImageVisual::Property::URL, TEST_RESOURCE_DIR "/gallery-small-1.jpg" }, + { ImageVisual::Property::DESIRED_WIDTH, widthBackground }, + { ImageVisual::Property::DESIRED_HEIGHT, heightBackground }, + } + ); + imageView.SetImage( image ); Stage::GetCurrent().Add( imageView ); @@ -910,10 +925,17 @@ int UtcDaliImageViewHeightForWidthBackground(void) int widthBackground = 100; int heightBackground = 200; - Image imageBackground = CreateBufferImage( widthBackground, heightBackground, Vector4(1.f, 1.f, 1.f, 1.f) ); ImageView imageView = ImageView::New(); - imageView.SetBackgroundImage( imageBackground ); + + imageView.SetProperty( Control::Property::BACKGROUND, + { + { Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE }, + { Toolkit::ImageVisual::Property::URL, TEST_RESOURCE_DIR "/gallery-small-1.jpg" }, + { ImageVisual::Property::DESIRED_WIDTH, widthBackground }, + { ImageVisual::Property::DESIRED_HEIGHT, heightBackground } + } + ); Stage::GetCurrent().Add( imageView ); application.SendNotification(); @@ -935,11 +957,20 @@ int UtcDaliImageViewHeightForWidthBackgroundAndImage(void) int heightBackground = 200; int width = 300; int height = 400; - Image imageBackground = CreateBufferImage( widthBackground, heightBackground, Vector4(1.f, 1.f, 1.f, 1.f) ); + Image image = CreateBufferImage( width, height, Vector4(1.f, 1.f, 1.f, 1.f) ); ImageView imageView = ImageView::New(); - imageView.SetBackgroundImage( imageBackground ); + + imageView.SetProperty( Control::Property::BACKGROUND, + { + { Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE }, + { Toolkit::ImageVisual::Property::URL, TEST_RESOURCE_DIR "/gallery-small-1.jpg" }, + { ImageVisual::Property::DESIRED_WIDTH, widthBackground }, + { ImageVisual::Property::DESIRED_HEIGHT, heightBackground } + } + ); + imageView.SetImage( image ); Stage::GetCurrent().Add( imageView ); @@ -1080,15 +1111,17 @@ int UtcDaliImageViewCheckResourceReady(void) gResourceReadySignalFired = false; - - int width = 100; - int height = 200; - Image image = CreateBufferImage( width, height, Vector4(1.f, 1.f, 1.f, 1.f) ); - // Check ImageView with background and main image, to ensure both visuals are marked as loaded ImageView imageView = ImageView::New( TEST_GIF_FILE_NAME ); - imageView.SetBackgroundImage( image ); + imageView.SetProperty( Control::Property::BACKGROUND, + { + { Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE }, + { Toolkit::ImageVisual::Property::URL, TEST_RESOURCE_DIR "/gallery-small-1.jpg" }, + { ImageVisual::Property::DESIRED_WIDTH, 100 }, + { ImageVisual::Property::DESIRED_HEIGHT, 200 } + } + ); DALI_TEST_EQUALS( imageView.IsResourceReady(), false, TEST_LOCATION ); @@ -1096,10 +1129,12 @@ int UtcDaliImageViewCheckResourceReady(void) Stage::GetCurrent().Add( imageView ); + // loading started, this waits for the loader thread + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + application.SendNotification(); application.Render(16); - DALI_TEST_EQUALS( imageView.IsResourceReady(), true, TEST_LOCATION ); DALI_TEST_EQUALS( gResourceReadySignalFired, true, TEST_LOCATION ); @@ -1293,10 +1328,10 @@ int UtcDaliImageViewResourceUrlP(void) ToolkitTestApplication application; ImageView imageView = ImageView::New(); - DALI_TEST_CHECK( imageView.GetProperty( ImageView::Property::RESOURCE_URL ).Get< std::string >().empty() ); + DALI_TEST_CHECK( imageView.GetProperty( ImageView::Property::IMAGE ).Get< std::string >().empty() ); - imageView.SetProperty( ImageView::Property::RESOURCE_URL, "TestString" ); - DALI_TEST_EQUALS( imageView.GetProperty( ImageView::Property::RESOURCE_URL ).Get< std::string >(), "TestString", TEST_LOCATION ); + imageView.SetProperty( ImageView::Property::IMAGE, "TestString" ); + DALI_TEST_EQUALS( imageView.GetProperty( ImageView::Property::IMAGE ).Get< std::string >(), "TestString", TEST_LOCATION ); END_TEST; } @@ -2365,3 +2400,253 @@ int UtcDaliImageViewReloadFailedOnResourceReadySignal(void) END_TEST; } + +int UtcDaliImageViewLoadRemoteSVG(void) +{ + tet_infoline("Test load from a remote server."); + + ToolkitTestApplication application; + Toolkit::ImageView imageView; + imageView = Toolkit::ImageView::New( ); + imageView.SetImage("https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/check.svg"); + // Victor. Temporary (or permanent?) update as the url above seems not to work from time to time ... + imageView.SetImage("https://upload.wikimedia.org/wikipedia/commons/thumb/0/02/SVG_logo.svg/64px-SVG_logo.svg.png"); + imageView.SetParentOrigin( ParentOrigin::TOP_LEFT ); + imageView.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + imageView.SetSize(300, 300); + imageView.SetPosition( Vector3( 150.0f , 150.0f , 0.0f ) ); + + Stage::GetCurrent().Add( imageView ); + + DALI_TEST_CHECK( imageView ); + + DALI_TEST_EQUALS( imageView.GetRendererCount(), 0u, TEST_LOCATION ); + + application.SendNotification(); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( imageView.GetRendererCount(), 1u, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliImageViewSyncSVGLoading(void) +{ + ToolkitTestApplication application; + + tet_infoline("ImageView Testing SVG image sync loading"); + + // Sync loading, automatic atlasing for small size image + { + TraceCallStack& callStack = application.GetGlAbstraction().GetTextureTrace(); + callStack.Reset(); + callStack.Enable(true); + + ImageView imageView = ImageView::New( ); + + // Sync loading is used + Property::Map syncLoadingMap; + syncLoadingMap.Insert( Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE ); + syncLoadingMap.Insert( Toolkit::ImageVisual::Property::URL, TEST_RESOURCE_DIR "/svg1.svg" ); + syncLoadingMap.Insert( Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING, true); + imageView.SetProperty( ImageView::Property::IMAGE, syncLoadingMap ); + + Stage::GetCurrent().Add( imageView ); + DALI_TEST_CHECK( imageView ); + + application.SendNotification(); + application.Render(16); + Vector3 naturalSize = imageView.GetNaturalSize(); + + DALI_TEST_EQUALS( naturalSize.width, 100.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( naturalSize.height, 100.0f, TEST_LOCATION ); + + } + END_TEST; +} + +int UtcDaliImageViewAsyncSVGLoading(void) +{ + ToolkitTestApplication application; + + tet_infoline("ImageView Testing SVG image async loading"); + + // Sync loading, automatic atlasing for small size image + { + TraceCallStack& callStack = application.GetGlAbstraction().GetTextureTrace(); + callStack.Reset(); + callStack.Enable(true); + + ImageView imageView = ImageView::New( ); + + // Sync loading is used + Property::Map syncLoadingMap; + syncLoadingMap.Insert( Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE ); + syncLoadingMap.Insert( Toolkit::ImageVisual::Property::URL, TEST_RESOURCE_DIR "/svg1.svg" ); + syncLoadingMap.Insert( Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING, false); + imageView.SetProperty( ImageView::Property::IMAGE, syncLoadingMap ); + + Stage::GetCurrent().Add( imageView ); + DALI_TEST_CHECK( imageView ); + + application.SendNotification(); + application.Render(16); + Vector3 naturalSize = imageView.GetNaturalSize(); + + DALI_TEST_EQUALS( naturalSize.width, 100.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( naturalSize.height, 100.0f, TEST_LOCATION ); + } + END_TEST; +} + +int UtcDaliImageViewSVGLoadingSyncSetInvalidValue(void) +{ + ToolkitTestApplication application; + + tet_infoline("ImageView Testing SVG image async loading"); + + // Sync loading, automatic atlasing for small size image + { + TraceCallStack& callStack = application.GetGlAbstraction().GetTextureTrace(); + callStack.Reset(); + callStack.Enable(true); + + ImageView imageView = ImageView::New( ); + + // Sync loading is used + Property::Map syncLoadingMap; + syncLoadingMap.Insert( Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE ); + syncLoadingMap.Insert( Toolkit::ImageVisual::Property::URL, TEST_RESOURCE_DIR "/svg1.svg" ); + + // Check to set invalid value + // The SYNCHRONOUS_LOADING property must be set to the bool value. + // Check if error log is outputted when setting other value like string. + // Even if the wrong value is set, the image will be shown normally, and the synchronous value should be the default value(false). + syncLoadingMap.Insert( Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING, std::to_string(5) ); + imageView.SetProperty( ImageView::Property::IMAGE, syncLoadingMap ); + + Stage::GetCurrent().Add( imageView ); + DALI_TEST_CHECK( imageView ); + + application.SendNotification(); + application.Render(16); + Vector3 naturalSize = imageView.GetNaturalSize(); + DALI_TEST_EQUALS( naturalSize.width, 100.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( naturalSize.height, 100.0f, TEST_LOCATION ); + + Property::Value value = imageView.GetProperty( ImageView::Property::IMAGE ); + Property::Map* map = value.GetMap(); + DALI_TEST_CHECK( map ); + + Property::Value* sync = map->Find( Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING ); + DALI_TEST_CHECK( sync ); + DALI_TEST_EQUALS( false, sync->Get< bool >(), TEST_LOCATION ); + + } + END_TEST; +} + +int UtcDaliImageViewSvgLoadingFailure(void) +{ + ToolkitTestApplication application; + + // Local svg file + { + gResourceReadySignalFired = false; + + ImageView imageView = ImageView::New( TEST_RESOURCE_DIR "/Kid1.svg" ); + imageView.SetSize( 200.f, 200.f ); + imageView.ResourceReadySignal().Connect( &ResourceReadySignal); + + DALI_TEST_EQUALS( imageView.IsResourceReady(), false, TEST_LOCATION ); + + Stage::GetCurrent().Add( imageView ); + + application.SendNotification(); + + // loading started, this waits for the loader thread + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render(16); + + DALI_TEST_EQUALS( gResourceReadySignalFired, true, TEST_LOCATION ); + DALI_TEST_EQUALS( imageView.IsResourceReady(), true, TEST_LOCATION ); + DALI_TEST_EQUALS( imageView.GetVisualResourceStatus( ImageView::Property::IMAGE ), Visual::ResourceStatus::FAILED, TEST_LOCATION ); + } + + // Remote svg file + { + gResourceReadySignalFired = false; + + ImageView imageView = ImageView::New( "https://bar.org/foobar.svg" ); + imageView.SetSize( 200.f, 200.f ); + imageView.ResourceReadySignal().Connect( &ResourceReadySignal); + + DALI_TEST_EQUALS( imageView.IsResourceReady(), false, TEST_LOCATION ); + + Stage::GetCurrent().Add( imageView ); + + application.SendNotification(); + + // loading started, this waits for the loader thread + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render(16); + + DALI_TEST_EQUALS( gResourceReadySignalFired, true, TEST_LOCATION ); + DALI_TEST_EQUALS( imageView.IsResourceReady(), true, TEST_LOCATION ); + DALI_TEST_EQUALS( imageView.GetVisualResourceStatus( ImageView::Property::IMAGE ), Visual::ResourceStatus::FAILED, TEST_LOCATION ); + } + + END_TEST; +} + +namespace +{ + +static int gResourceReadySignalCounter = 0; + +void OnResourceReadySignal( Control control ) +{ + gResourceReadySignalCounter++; + + if( gResourceReadySignalCounter == 1 ) + { + // Set image twice + ImageView::DownCast( control ).SetImage( gImage_34_RGBA ); + ImageView::DownCast( control ).SetImage( gImage_34_RGBA ); + } +} + +} + +int UtcDaliImageViewSetImageOnResourceReadySignal(void) +{ + tet_infoline("Test setting image from within signal handler."); + + ToolkitTestApplication application; + + gResourceReadySignalCounter = 0; + + ImageView imageView = ImageView::New( gImage_34_RGBA ); + imageView.ResourceReadySignal().Connect( &OnResourceReadySignal ); + + Stage::GetCurrent().Add( imageView ); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( gResourceReadySignalCounter, 2, TEST_LOCATION ); + + DALI_TEST_EQUALS( imageView.IsResourceReady(), true, TEST_LOCATION ); + + END_TEST; +}