/*
- * 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.
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;
}
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;
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 );
}
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 );
}
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) );
{
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);
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);
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)
+ {
+ 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.");
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;
}