/*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
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;
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;
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;
ImageView imageView2 = ImageView::New();
imageView2.SetProperty( ImageView::Property::IMAGE, imageMap );
- Stage::GetCurrent().Add( imageView2 );
+ application.GetScene().Add( imageView2 );
application.SendNotification();
application.Render();
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;
// 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();
// Test pixel area property
ToolkitTestApplication application;
+ static std::vector<UniformData> customUniforms =
+ {
+ UniformData("pixelArea", Property::Type::VECTOR4),
+ };
+
+ TestGraphicsController& graphics = application.GetGraphicsController();
+ graphics.AddCustomUniforms(customUniforms);
+
// Gif image, use AnimatedImageVisual internally
// Atlasing is applied to pack multiple frames, use custom wrap mode
ImageView gifView = ImageView::New();
.Add( ImageVisual::Property::PIXEL_AREA, pixelAreaVisual ) );
// Add to stage
- Stage stage = Stage::GetCurrent();
+ Integration::Scene stage = application.GetScene();
stage.Add( gifView );
// loading started
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 );
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);
callStack.Enable(false);
TraceCallStack::NamedParams params;
- params["width"] = ToString(34);
- params["height"] = ToString(34);
- DALI_TEST_EQUALS( callStack.FindMethodAndParams( "TexSubImage2D", params ), true, TEST_LOCATION );
+ params["width"] << 34;
+ params["height"] << 34;
+DALI_TEST_EQUALS( callStack.FindMethodAndParams( "TexSubImage2D", params ), true, TEST_LOCATION );
END_TEST;
}
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);
callStack.Enable(false);
TraceCallStack::NamedParams params;
- params["width"] = ToString(34);
- params["height"] = ToString(34);
+ params["width"] << 34;
+ params["height"] << 34;
DALI_TEST_EQUALS( callStack.FindMethodAndParams( "TexSubImage2D", params ), true, TEST_LOCATION );
END_TEST;
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);
TraceCallStack::NamedParams params;
- params["width"] = ToString(34);
- params["height"] = ToString(34);
+ params["width"] << 34;
+ params["height"] << 34;
DALI_TEST_EQUALS( callStack.FindMethodAndParams( "TexSubImage2D", params ),
true, TEST_LOCATION );
}
syncLoadingMap[ "atlasing" ] = true;
imageView.SetProperty( ImageView::Property::IMAGE, syncLoadingMap );
- Stage::GetCurrent().Add( imageView );
+ application.GetScene().Add( imageView );
application.SendNotification();
application.Render(16);
TraceCallStack::NamedParams params;
- params["width"] = ToString(34);
- params["height"] = ToString(34);
+ params["width"] << 34;
+ params["height"] << 34;
DALI_TEST_EQUALS( callStack.FindMethodAndParams( "TexSubImage2D", params ),
true, TEST_LOCATION );
}
propertyMap[ImageVisual::Property::URL] = url;
imageView.SetProperty(ImageView::Property::IMAGE, propertyMap);
- Stage::GetCurrent().Add( imageView );
+ application.GetScene().Add( imageView );
application.SendNotification();
application.Render();
}
);
- Stage::GetCurrent().Add( imageView );
+ application.GetScene().Add( imageView );
application.SendNotification();
application.Render();
imageView.SetImage( gImage_600_RGB ); // 1 to 1 ratio, 600x600 pixels
- Stage::GetCurrent().Add( imageView );
+ application.GetScene().Add( imageView );
application.SendNotification();
application.Render();
}
);
- Stage::GetCurrent().Add( imageView );
+ application.GetScene().Add( imageView );
application.SendNotification();
application.Render();
imageView.SetImage( gImage_600_RGB ); // 1 to 1 ratio
- Stage::GetCurrent().Add( imageView );
+ application.GetScene().Add( imageView );
application.SendNotification();
application.Render();
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 );
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;
imageView.ResourceReadySignal().Connect( &ResourceReadySignal);
- Stage::GetCurrent().Add( imageView );
+ application.GetScene().Add( imageView );
application.SendNotification();
application.Render(16);
dummyControl.Add( imageView );
dummyImpl.SetRelayoutCallback( &OnRelayoutOverride );
- Stage::GetCurrent().Add( dummyControl );
+ application.GetScene().Add( dummyControl );
application.SendNotification();
application.Render();
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 );
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();
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();
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();
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();
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();
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();
imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap );
- Stage::GetCurrent().Add( imageView );
+ application.GetScene().Add( imageView );
// Trigger a potential relayout
application.SendNotification();
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();
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();
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();
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();
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();
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();
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();
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();
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();
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();
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 );
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();
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();
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 );
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();
{
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;
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();
ImageView imageView = ImageView::New();
imageView.SetProperty( ImageView::Property::IMAGE, properties );
- Stage::GetCurrent().Add( imageView );
+ application.GetScene().Add( imageView );
application.SendNotification();
application.Render();
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();
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();
imageView.SetProperty( ImageView::Property::IMAGE, properties1 );
imageView.SetProperty( ImageView::Property::IMAGE, properties );
- Stage::GetCurrent().Add( imageView );
+ application.GetScene().Add( imageView );
application.SendNotification();
application.Render();
imageView.SetProperty( ImageView::Property::IMAGE, properties );
imageView.SetProperty( ImageView::Property::IMAGE, properties1 );
- Stage::GetCurrent().Add( imageView );
+ application.GetScene().Add( imageView );
application.SendNotification();
application.Render();
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 );
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();
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();
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();
{
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);
DALI_TEST_EQUALS( imageView.IsResourceReady(), false, TEST_LOCATION );
- Stage::GetCurrent().Add( imageView );
+ application.GetScene().Add( imageView );
application.SendNotification();
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
{
{
gResourceReadySignalCounter++;
- if( gResourceReadySignalCounter == 1 )
+ if(control.GetVisualResourceStatus(ImageView::Property::IMAGE) == Visual::ResourceStatus::READY)
{
- // Set image twice
- ImageView::DownCast( control ).SetImage( gImage_34_RGBA );
- ImageView::DownCast( control ).SetImage( gImage_34_RGBA );
+ 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)
+ {
+ // 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.");
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 );
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;
}