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=033340f75e8517e2a144d1a2ad9293f493163ebc;hp=7ece9d3be09856484ab22a834083b8cd2b5b16e5;hb=f3e45e41c5f16ccc2538b283897ed6efb07e4ea9;hpb=3a2dfe800fe4ec8214f42b28b3851ea8b8ffc72b diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp index 7ece9d3..033340f 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp @@ -126,6 +126,24 @@ int UtcDaliImageViewCopyConstructorP(void) END_TEST; } +int UtcDaliImageViewMoveConstructor(void) +{ + ToolkitTestApplication application; + + ImageView imageView = ImageView::New(); + DALI_TEST_EQUALS( 1, imageView.GetBaseObject().ReferenceCount(), TEST_LOCATION ); + imageView.SetProperty( Actor::Property::SENSITIVE, false ); + DALI_TEST_CHECK( false == imageView.GetProperty< bool >( Actor::Property::SENSITIVE ) ); + + ImageView moved = std::move( imageView ); + DALI_TEST_CHECK( moved ); + DALI_TEST_EQUALS( 1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION ); + DALI_TEST_CHECK( false == moved.GetProperty< bool >( Actor::Property::SENSITIVE ) ); + DALI_TEST_CHECK( !imageView ); + + END_TEST; +} + int UtcDaliImageViewAssignmentOperatorP(void) { ToolkitTestApplication application; @@ -139,6 +157,25 @@ int UtcDaliImageViewAssignmentOperatorP(void) END_TEST; } +int UtcDaliImageViewMoveAssignment(void) +{ + ToolkitTestApplication application; + + ImageView imageView = ImageView::New(); + DALI_TEST_EQUALS( 1, imageView.GetBaseObject().ReferenceCount(), TEST_LOCATION ); + imageView.SetProperty( Actor::Property::SENSITIVE, false ); + DALI_TEST_CHECK( false == imageView.GetProperty< bool >( Actor::Property::SENSITIVE ) ); + + ImageView moved; + moved = std::move( imageView ); + DALI_TEST_CHECK( moved ); + DALI_TEST_EQUALS( 1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION ); + DALI_TEST_CHECK( false == moved.GetProperty< bool >( Actor::Property::SENSITIVE ) ); + DALI_TEST_CHECK( !imageView ); + + END_TEST; +} + int UtcDaliImageViewDownCastP(void) { ToolkitTestApplication application; @@ -221,7 +258,7 @@ int UtcDaliImageViewPreMultipliedAlphaPng(void) ImageView imageView1 = ImageView::New(); imageView1.SetProperty( ImageView::Property::IMAGE, imageMap ); - Stage::GetCurrent().Add( imageView1 ); + application.GetScene().Add( imageView1 ); Property::Value value = imageView1.GetProperty( ImageView::Property::PRE_MULTIPLIED_ALPHA ); bool enable; @@ -294,7 +331,7 @@ int UtcDaliImageViewPreMultipliedAlphaPng(void) ImageView imageView2 = ImageView::New(); imageView2.SetProperty( ImageView::Property::IMAGE, imageMap ); - Stage::GetCurrent().Add( imageView2 ); + application.GetScene().Add( imageView2 ); application.SendNotification(); application.Render(); @@ -334,7 +371,7 @@ int UtcDaliImageViewPreMultipliedAlphaJpg(void) ImageView imageView1 = ImageView::New(); imageView1.SetProperty( ImageView::Property::IMAGE, imageMap ); - Stage::GetCurrent().Add( imageView1 ); + application.GetScene().Add( imageView1 ); Property::Value value = imageView1.GetProperty( ImageView::Property::PRE_MULTIPLIED_ALPHA ); bool enable; @@ -375,7 +412,7 @@ int UtcDaliImageViewPreMultipliedAlphaJpg(void) // Disable pre-multiplied alpha blending imageView2.SetProperty( ImageView::Property::PRE_MULTIPLIED_ALPHA, false ); - Stage::GetCurrent().Add( imageView2 ); + application.GetScene().Add( imageView2 ); application.SendNotification(); application.Render(); @@ -418,7 +455,7 @@ int UtcDaliImageViewPixelArea(void) .Add( ImageVisual::Property::PIXEL_AREA, pixelAreaVisual ) ); // Add to stage - Stage stage = Stage::GetCurrent(); + Integration::Scene stage = application.GetScene(); stage.Add( gifView ); // loading started @@ -476,7 +513,7 @@ int UtcDaliImageViewAsyncLoadingWithoutAltasing(void) ImageView imageView = ImageView::New( gImage_600_RGB ); // By default, Aysnc loading is used - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); imageView.SetProperty( Actor::Property::SIZE, Vector2(100, 100) ); imageView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); @@ -515,9 +552,9 @@ int UtcDaliImageViewAsyncLoadingWithAtlasing(void) imageView.SetProperty( Toolkit::Control::Property::PADDING, Extents( 10u, 10u, 10u, 10u ) ); // By default, Aysnc loading is used - // loading is not started if the actor is offStage + // loading is not started if the actor is offScene - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(16); application.Render(16); @@ -564,7 +601,7 @@ int UtcDaliImageViewAsyncLoadingWithAtlasing02(void) ImageView imageView = ImageView::New(); imageView.SetProperty( ImageView::Property::IMAGE, asyncLoadingMap ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(16); application.Render(16); @@ -619,7 +656,7 @@ int UtcDaliImageViewSyncLoading(void) syncLoadingMap[ ImageVisual::Property::DESIRED_WIDTH ] = 34; imageView.SetProperty( ImageView::Property::IMAGE, syncLoadingMap ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(16); @@ -655,7 +692,7 @@ int UtcDaliImageViewSyncLoading02(void) syncLoadingMap[ "atlasing" ] = true; imageView.SetProperty( ImageView::Property::IMAGE, syncLoadingMap ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(16); @@ -685,7 +722,7 @@ int UtcDaliImageViewAddedTexture(void) propertyMap[ImageVisual::Property::URL] = url; imageView.SetProperty(ImageView::Property::IMAGE, propertyMap); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(); @@ -709,7 +746,7 @@ int UtcDaliImageViewSizeWithBackground(void) } ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(); @@ -741,7 +778,7 @@ int UtcDaliImageViewSizeWithBackgroundAndImage(void) imageView.SetImage( gImage_600_RGB ); // 1 to 1 ratio, 600x600 pixels - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(); @@ -769,7 +806,7 @@ int UtcDaliImageViewHeightForWidthBackground(void) } ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(); @@ -803,7 +840,7 @@ int UtcDaliImageViewHeightForWidthBackgroundAndImage(void) imageView.SetImage( gImage_600_RGB ); // 1 to 1 ratio - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(); @@ -858,7 +895,7 @@ int UtcDaliImageViewCheckResourceReady(void) imageView.ResourceReadySignal().Connect( &ResourceReadySignal); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); // loading started, this waits for the loader thread DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -885,7 +922,7 @@ int UtcDaliImageViewSetImageTypeChangesP(void) ImageView imageView = ImageView::New(); Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( imageView ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); std::string url; Property::Map map; @@ -1001,7 +1038,7 @@ int UtcDaliImageViewReplaceImage(void) imageView.ResourceReadySignal().Connect( &ResourceReadySignal); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(16); @@ -1051,7 +1088,7 @@ int UtcDaliImageViewReplaceImageAndGetNaturalSize(void) dummyControl.Add( imageView ); dummyImpl.SetRelayoutCallback( &OnRelayoutOverride ); - Stage::GetCurrent().Add( dummyControl ); + application.GetScene().Add( dummyControl ); application.SendNotification(); application.Render(); @@ -1179,7 +1216,7 @@ int UtcDaliImageViewResourceReadySignalWithReusedImage02(void) tet_infoline("Connect to ResourceReady signal for second ImageView, it should still fire as resource is ready"); imageViewWithExistingImage.ResourceReadySignal().Connect( &ResourceReadySignal); - Stage::GetCurrent().Add( imageViewWithExistingImage ); + application.GetScene().Add( imageViewWithExistingImage ); DALI_TEST_EQUALS( gResourceReadySignalFired, true, TEST_LOCATION ); @@ -1200,7 +1237,7 @@ int UtcDaliImageViewPaddingProperty(void) imageView.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); imageView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); imageView.SetProperty( Control::Property::PADDING, Extents( 15, 10, 5, 10 ) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(); @@ -1250,7 +1287,7 @@ int UtcDaliImageViewPaddingProperty02(void) imageView.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); imageView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); imageView.SetProperty( Control::Property::PADDING, Extents( 15, 10, 5, 10 ) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(); @@ -1291,7 +1328,7 @@ int UtcDaliImageViewPaddingProperty03(void) imageView.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); imageView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); imageView.SetProperty( Control::Property::PADDING, Extents( 15, 10, 5, 10 ) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(); @@ -1339,7 +1376,7 @@ int UtcDaliImageViewPaddingProperty04(void) imageView.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); imageView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); imageView.SetProperty( Control::Property::PADDING, Extents( 15, 10, 5, 10 ) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(); @@ -1391,7 +1428,7 @@ int UtcDaliImageViewTransformTest01(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE , imagePropertyMap ); imageView.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); imageView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(); @@ -1425,7 +1462,7 @@ int UtcDaliImageViewUsingAtlasAndGetNaturalSize(void) imageMap[ Toolkit::ImageVisual::Property::URL ] = gImage_34_RGBA; imageMap[ Toolkit::ImageVisual::Property::ATLASING ] = true; imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); // Trigger a potential relayout application.SendNotification(); @@ -1453,7 +1490,7 @@ int UtcDaliImageViewFillMode(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); // Trigger a potential relayout application.SendNotification(); @@ -1495,7 +1532,7 @@ int UtcDaliImageViewFittingModeFitKeepAspectRatio(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); imageView.SetProperty( Actor::Property::SIZE, Vector2(600,700) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); // Trigger a potential relayout application.SendNotification(); @@ -1542,7 +1579,7 @@ int UtcDaliImageViewFittingModesFill(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); imageView.SetProperty( Actor::Property::SIZE, Vector2(600,700) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); // Trigger a potential relayout application.SendNotification(); @@ -1588,7 +1625,7 @@ int UtcDaliImageViewFittingModesOverfitKeepAspectRatio(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); imageView.SetProperty( Actor::Property::SIZE, Vector2(600,500) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); // Trigger a potential relayout application.SendNotification(); @@ -1635,7 +1672,7 @@ int UtcDaliImageViewFittingModesCenter01(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); imageView.SetProperty( Actor::Property::SIZE, Vector2(700,700) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); // Trigger a potential relayout application.SendNotification(); @@ -1681,7 +1718,7 @@ int UtcDaliImageViewFittingModesCenter02(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); imageView.SetProperty( Actor::Property::SIZE, Vector2(700,700) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); // Trigger a potential relayout application.SendNotification(); @@ -1726,7 +1763,7 @@ int UtcDaliImageViewFittingModesFitHeight01(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); imageView.SetProperty( Actor::Property::SIZE, Vector2(600,700) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); // Trigger a potential relayout application.SendNotification(); @@ -1771,7 +1808,7 @@ int UtcDaliImageViewFittingModesFitHeight02(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); imageView.SetProperty( Actor::Property::SIZE, Vector2(700,600) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); // Trigger a potential relayout application.SendNotification(); @@ -1816,7 +1853,7 @@ int UtcDaliImageViewFittingModesFitWidth01(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); imageView.SetProperty( Actor::Property::SIZE, Vector2(600,700) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); // Trigger a potential relayout application.SendNotification(); @@ -1861,7 +1898,7 @@ int UtcDaliImageViewFittingModesFitWidth02(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); imageView.SetProperty( Actor::Property::SIZE, Vector2(700,600) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); // Trigger a potential relayout application.SendNotification(); @@ -1908,7 +1945,7 @@ int UtcDaliImageViewFittingModesChangeFittingMode01(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); imageView.SetProperty( Actor::Property::SIZE, Vector2(800,700) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); // Trigger a potential relayout application.SendNotification(); @@ -1944,7 +1981,7 @@ int UtcDaliImageViewFittingModesChangeFittingMode01(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap2 ); imageView.SetProperty( Actor::Property::SIZE, Vector2(800,700) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1983,7 +2020,7 @@ int UtcDaliImageViewFittingModesChangeFittingMode01(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap3 ); imageView.SetProperty( Actor::Property::SIZE, Vector2(800,700) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); // Trigger a potential relayout application.SendNotification(); @@ -2030,7 +2067,7 @@ int UtcDaliImageViewFittingModesChangeFittingMode02(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); imageView.SetProperty( Actor::Property::SIZE, Vector2(800,700) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); // Trigger a potential relayout application.SendNotification(); @@ -2066,7 +2103,7 @@ int UtcDaliImageViewFittingModesChangeFittingMode02(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap2 ); imageView.SetProperty( Actor::Property::SIZE, Vector2(800,700) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -2105,7 +2142,7 @@ int UtcDaliImageViewFittingModesChangeFittingMode02(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap3 ); imageView.SetProperty( Actor::Property::SIZE, Vector2(800,700) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); // Trigger a potential relayout application.SendNotification(); @@ -2139,7 +2176,7 @@ int UtcDaliImageViewFittingModesWithAnimatedVectorImageVisual(void) { ToolkitTestApplication application; - tet_infoline( "Create an ImageVisual using ScaleToFill and animated vector image ( image: [600,600], view:[600,600] )" ); + tet_infoline( "Create an ImageVisual using SCALE_TO_FILL and animated vector image ( image: [600,600], view:[600,600] )" ); ImageView imageView = ImageView::New(); Property::Map imageMap; @@ -2149,7 +2186,7 @@ int UtcDaliImageViewFittingModesWithAnimatedVectorImageVisual(void) imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); imageView.SetProperty( Actor::Property::SIZE, Vector2(600,600) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); // Trigger a potential relayout application.SendNotification(); @@ -2200,7 +2237,7 @@ int UtcDaliImageViewCustomShader(void) ImageView imageView = ImageView::New(); imageView.SetProperty( ImageView::Property::IMAGE, properties ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(); @@ -2234,7 +2271,7 @@ int UtcDaliImageViewCustomShader(void) ImageView imageView = ImageView::New( TEST_IMAGE_FILE_NAME ); imageView.SetProperty( ImageView::Property::IMAGE, properties ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(); @@ -2269,7 +2306,7 @@ int UtcDaliImageViewCustomShader(void) imageView.SetProperty( ImageView::Property::IMAGE, properties ); imageView.SetProperty( ImageView::Property::IMAGE, TEST_IMAGE_FILE_NAME ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(); @@ -2307,7 +2344,7 @@ int UtcDaliImageViewCustomShader(void) imageView.SetProperty( ImageView::Property::IMAGE, properties1 ); imageView.SetProperty( ImageView::Property::IMAGE, properties ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(); @@ -2345,7 +2382,7 @@ int UtcDaliImageViewCustomShader(void) imageView.SetProperty( ImageView::Property::IMAGE, properties ); imageView.SetProperty( ImageView::Property::IMAGE, properties1 ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(); @@ -2430,16 +2467,16 @@ int UtcDaliImageViewLoadRemoteSVG(void) ToolkitTestApplication application; Toolkit::ImageView imageView; - imageView = Toolkit::ImageView::New( ); + 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.SetImage("https://upload.wikimedia.org/wikipedia/commons/thumb/0/02/SVG_logo.svg/64px-SVG_logo.svg.png"); imageView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); imageView.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); imageView.SetProperty( Actor::Property::SIZE, Vector2(300, 300) ); imageView.SetProperty( Actor::Property::POSITION, Vector3( 150.0f , 150.0f , 0.0f ) ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); DALI_TEST_CHECK( imageView ); @@ -2478,7 +2515,7 @@ int UtcDaliImageViewSyncSVGLoading(void) syncLoadingMap.Insert( Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING, true); imageView.SetProperty( ImageView::Property::IMAGE, syncLoadingMap ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); DALI_TEST_CHECK( imageView ); application.SendNotification(); @@ -2513,7 +2550,7 @@ int UtcDaliImageViewAsyncSVGLoading(void) syncLoadingMap.Insert( Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING, false); imageView.SetProperty( ImageView::Property::IMAGE, syncLoadingMap ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); DALI_TEST_CHECK( imageView ); application.SendNotification(); @@ -2552,7 +2589,7 @@ int UtcDaliImageViewSVGLoadingSyncSetInvalidValue(void) syncLoadingMap.Insert( Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING, std::to_string(5) ); imageView.SetProperty( ImageView::Property::IMAGE, syncLoadingMap ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); DALI_TEST_CHECK( imageView ); application.SendNotification(); @@ -2577,22 +2614,37 @@ int UtcDaliImageViewSvgLoadingFailure(void) { ToolkitTestApplication application; - // Local svg file + // Local svg file - invalid file path { gResourceReadySignalFired = false; - ImageView imageView = ImageView::New( TEST_RESOURCE_DIR "/Kid1.svg" ); + ImageView imageView = ImageView::New( TEST_RESOURCE_DIR "/foo.svg" ); imageView.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); imageView.ResourceReadySignal().Connect( &ResourceReadySignal); DALI_TEST_EQUALS( imageView.IsResourceReady(), false, TEST_LOCATION ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); + application.Render(16); - // loading started, this waits for the loader thread - DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + 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 ); + } + + // Local svg file - invalid file + { + gResourceReadySignalFired = false; + + ImageView imageView = ImageView::New( TEST_RESOURCE_DIR "/invalid.svg" ); + imageView.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + imageView.ResourceReadySignal().Connect( &ResourceReadySignal); + + DALI_TEST_EQUALS( imageView.IsResourceReady(), false, TEST_LOCATION ); + + application.GetScene().Add( imageView ); application.SendNotification(); application.Render(16); @@ -2612,7 +2664,7 @@ int UtcDaliImageViewSvgLoadingFailure(void) DALI_TEST_EQUALS( imageView.IsResourceReady(), false, TEST_LOCATION ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); application.SendNotification(); @@ -2630,6 +2682,54 @@ int UtcDaliImageViewSvgLoadingFailure(void) END_TEST; } +int UtcDaliImageViewSvgRasterizationFailure(void) +{ + ToolkitTestApplication application; + + gResourceReadySignalFired = false; + + ImageView imageView = ImageView::New( TEST_RESOURCE_DIR "/svg1.svg" ); + imageView.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + imageView.ResourceReadySignal().Connect( &ResourceReadySignal); + + DALI_TEST_EQUALS( imageView.IsResourceReady(), false, TEST_LOCATION ); + + application.GetScene().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::READY, TEST_LOCATION ); + + // Reset flag + gResourceReadySignalFired = false; + + // Change size + imageView.SetProperty( Actor::Property::SIZE, Vector2( 0.f, 0.f ) ); + + application.SendNotification(); + + // rasterization started, this waits for the rasterize 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 ); + // Fail to rasterize because the size is 0. + DALI_TEST_EQUALS( imageView.GetVisualResourceStatus( ImageView::Property::IMAGE ), Visual::ResourceStatus::FAILED, TEST_LOCATION ); + + END_TEST; +} + namespace { @@ -2639,17 +2739,38 @@ void OnResourceReadySignal( Control control ) { gResourceReadySignalCounter++; - if( gResourceReadySignalCounter == 1 ) + if(control.GetVisualResourceStatus(ImageView::Property::IMAGE) == Visual::ResourceStatus::READY) + { + if( gResourceReadySignalCounter == 1 ) + { + // Set image twice + // It makes the first new visual be deleted immediately + ImageView::DownCast( control ).SetImage( gImage_34_RGBA ); + ImageView::DownCast( control ).SetImage( gImage_34_RGBA ); + } + } + else if(control.GetVisualResourceStatus(ImageView::Property::IMAGE) == Visual::ResourceStatus::FAILED) { - // Set image twice - ImageView::DownCast( control ).SetImage( gImage_34_RGBA ); - ImageView::DownCast( control ).SetImage( gImage_34_RGBA ); + // Make the resource ready immediately + control[ImageView::Property::IMAGE] = TEST_RESOURCE_DIR "/svg1.svg"; } } +void OnResourceReadySignal01( Control control ) +{ + if(++gResourceReadySignalCounter == 1) + { + // It makes the first new visual be deleted immediately + // The first image will not be loaded. + control[ImageView::Property::IMAGE] = Property::Map().Add(ImageVisual::Property::URL, gImage_600_RGB) + .Add(ImageVisual::Property::RELEASE_POLICY, ImageVisual::ReleasePolicy::NEVER); + control[ImageView::Property::IMAGE] = TEST_IMAGE_1; + } } -int UtcDaliImageViewSetImageOnResourceReadySignal(void) +} + +int UtcDaliImageViewSetImageOnResourceReadySignal01(void) { tet_infoline("Test setting image from within signal handler."); @@ -2660,7 +2781,7 @@ int UtcDaliImageViewSetImageOnResourceReadySignal(void) ImageView imageView = ImageView::New( gImage_34_RGBA ); imageView.ResourceReadySignal().Connect( &OnResourceReadySignal ); - Stage::GetCurrent().Add( imageView ); + application.GetScene().Add( imageView ); DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -2671,5 +2792,50 @@ int UtcDaliImageViewSetImageOnResourceReadySignal(void) DALI_TEST_EQUALS( imageView.IsResourceReady(), true, TEST_LOCATION ); + // Reset count + gResourceReadySignalCounter = 0; + + imageView[ImageView::Property::IMAGE] = "invalid.jpg"; + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + + // Run idle callback + application.RunIdles(); + + DALI_TEST_EQUALS( gResourceReadySignalCounter, 2, TEST_LOCATION ); + + DALI_TEST_EQUALS( imageView.IsResourceReady(), true, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliImageViewSetImageOnResourceReadySignal02(void) +{ + tet_infoline("Test setting image from within signal handler."); + + ToolkitTestApplication application; + + gResourceReadySignalCounter = 0; + + ImageView imageView = ImageView::New( gImage_34_RGBA ); + imageView.ResourceReadySignal().Connect( &OnResourceReadySignal01 ); + + application.GetScene().Add( imageView ); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + + // Wait for loading an image + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + DALI_TEST_EQUALS( gResourceReadySignalCounter, 2, TEST_LOCATION ); + + DALI_TEST_EQUALS( imageView.IsResourceReady(), true, TEST_LOCATION ); + END_TEST; }