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-ControlRenderer.cpp;h=84df3503833086d9c55af9444d74aef2318548bf;hp=be623c269fbb1e34cacef620977ef7e161aca746;hb=8991dd870badfb20693aa0eb1acf0aedbe88f99f;hpb=2f04a4705842cce7a40c414e4591ae77035059c2 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ControlRenderer.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ControlRenderer.cpp index be623c2..84df350 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ControlRenderer.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ControlRenderer.cpp @@ -25,6 +25,12 @@ using namespace Dali; using namespace Dali::Toolkit; +namespace +{ +const char* TEST_IMAGE_FILE_NAME = "gallery_image_01.jpg"; +const char* TEST_NPATCH_FILE_NAME = "gallery_image_01.9.jpg"; +} + void dali_control_renderer_startup(void) { test_return_value = TET_UNDEF; @@ -68,7 +74,7 @@ int UtcDaliControlRendererCopyAndAssignment(void) END_TEST; } -int UtcDaliControlRendererSetDepthIndex(void) +int UtcDaliControlRendererSetGetDepthIndex(void) { ToolkitTestApplication application; tet_infoline( "UtcDaliControlRendererSetDepthIndex" ); @@ -87,14 +93,80 @@ int UtcDaliControlRendererSetDepthIndex(void) controlRenderer.SetOnStage( actor ); DALI_TEST_EQUALS( actor.GetRendererAt(0u).GetDepthIndex(), 1.f, TEST_LOCATION ); + DALI_TEST_EQUALS( controlRenderer.GetDepthIndex(), 1.f, TEST_LOCATION ); controlRenderer.SetDepthIndex( -1.f ); DALI_TEST_EQUALS( actor.GetRendererAt(0u).GetDepthIndex(), -1.f, TEST_LOCATION ); + DALI_TEST_EQUALS( controlRenderer.GetDepthIndex(), -1.f, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliControlRendererSize(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliControlRendererGetNaturalSize" ); + + RendererFactory factory = RendererFactory::Get(); + Vector2 rendererSize( 20.f, 30.f ); + Vector2 naturalSize; + + // color renderer + ControlRenderer colorRenderer = factory.GetControlRenderer( Color::MAGENTA ); + colorRenderer.SetSize( rendererSize ); + DALI_TEST_EQUALS( colorRenderer.GetSize(), rendererSize, TEST_LOCATION ); + colorRenderer.GetNaturalSize(naturalSize); + DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION ); + + // image renderer + Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200)); + ControlRenderer imageRenderer = factory.GetControlRenderer( image ); + imageRenderer.SetSize( rendererSize ); + DALI_TEST_EQUALS( imageRenderer.GetSize(), rendererSize, TEST_LOCATION ); + imageRenderer.GetNaturalSize(naturalSize); + DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 200.f), TEST_LOCATION ); + + // n patch renderer + TestPlatformAbstraction& platform = application.GetPlatform(); + Vector2 testSize(80.f, 160.f); + platform.SetClosestImageSize(testSize); + image = ResourceImage::New(TEST_NPATCH_FILE_NAME); + ControlRenderer nPatchRenderer = factory.GetControlRenderer( image ); + nPatchRenderer.SetSize( rendererSize ); + DALI_TEST_EQUALS( nPatchRenderer.GetSize(), rendererSize, TEST_LOCATION ); + nPatchRenderer.GetNaturalSize(naturalSize); + DALI_TEST_EQUALS( naturalSize, testSize, TEST_LOCATION ); + + // border renderer + float borderSize = 5.f; + ControlRenderer borderRenderer = factory.GetControlRenderer( borderSize, Color::RED ); + borderRenderer.SetSize( rendererSize ); + DALI_TEST_EQUALS( borderRenderer.GetSize(), rendererSize, TEST_LOCATION ); + borderRenderer.GetNaturalSize(naturalSize); + DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION ); + + // gradient renderer + Property::Map propertyMap; + propertyMap.Insert("renderer-type", "gradient-renderer"); + Vector2 start(-1.f, -1.f); + Vector2 end(1.f, 1.f); + propertyMap.Insert("gradient-start-position", start); + propertyMap.Insert("gradient-end-position", end); + propertyMap.Insert("gradient-stop-offset", Vector2(0.f, 1.f)); + Property::Array stopColors; + stopColors.PushBack( Color::RED ); + stopColors.PushBack( Color::GREEN ); + propertyMap.Insert("gradient-stop-color", stopColors); + ControlRenderer gradientRenderer = factory.GetControlRenderer(propertyMap); + gradientRenderer.SetSize( rendererSize ); + DALI_TEST_EQUALS( gradientRenderer.GetSize(), rendererSize, TEST_LOCATION ); + gradientRenderer.GetNaturalSize(naturalSize); + DALI_TEST_EQUALS( naturalSize, Vector2::ZERO,TEST_LOCATION ); END_TEST; } -int UtcDaliControlRendererSetOnStage(void) +int UtcDaliControlRendererSetOnOffStage(void) { ToolkitTestApplication application; tet_infoline( "UtcDaliControlRendererSetDepthIndex" ); @@ -114,10 +186,381 @@ int UtcDaliControlRendererSetOnStage(void) DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); controlRenderer.SetOnStage( actor ); + application.SendNotification(); + application.Render(0); + DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); + controlRenderer.SetOffStage( actor ); + application.SendNotification(); + application.Render(0); + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); + + END_TEST; +} + +int UtcDaliControlRendererRemoveAndReset(void) +{ + ToolkitTestApplication application; + tet_infoline( "intUtcDaliControlRendererRemoveAndReset" ); + + RendererFactory factory = RendererFactory::Get(); + + Actor actor = Actor::New(); + actor.SetSize(200.f, 200.f); + Stage::GetCurrent().Add( actor ); + + ControlRenderer imageRenderer; + // test calling RemoveAndReset with an empty handle + try + { + imageRenderer.RemoveAndReset( actor ); + tet_result(TET_PASS); + } + catch (DaliException& exception) + { + tet_result(TET_FAIL); + } + + Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200)); + imageRenderer = factory.GetControlRenderer(image); + DALI_TEST_CHECK( imageRenderer ); + + imageRenderer.SetOnStage( actor ); application.SendNotification(); application.Render(0); DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); + imageRenderer.RemoveAndReset( actor ); + application.SendNotification(); + application.Render(0); + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); // renderer is removed from actor + DALI_TEST_CHECK( !imageRenderer ); // control renderer is reset + + END_TEST; +} + +int UtcDaliControlRendererGetPropertyMap1(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliControlRendererGetPropertyMap1: ColorRenderer" ); + + RendererFactory factory = RendererFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert("renderer-type", "color-renderer"); + propertyMap.Insert("blend-color", Color::BLUE); + ControlRenderer colorRenderer = factory.GetControlRenderer( propertyMap ); + + Property::Map resultMap; + colorRenderer.CreatePropertyMap( resultMap ); + + Property::Value* typeValue = resultMap.Find( "renderer-type", Property::STRING ); + DALI_TEST_CHECK( typeValue ); + DALI_TEST_CHECK( typeValue->Get() == "color-renderer" ); + + Property::Value* colorValue = resultMap.Find( "blend-color", Property::VECTOR4 ); + DALI_TEST_CHECK( colorValue ); + DALI_TEST_CHECK( colorValue->Get() == Color::BLUE ); + + // change the blend color + Actor actor; + factory.ResetRenderer( colorRenderer, actor, Color::CYAN ); + colorRenderer.CreatePropertyMap( resultMap ); + + colorValue = resultMap.Find( "blend-color", Property::VECTOR4 ); + DALI_TEST_CHECK( colorValue ); + DALI_TEST_CHECK( colorValue->Get() == Color::CYAN ); + + END_TEST; +} + +int UtcDaliControlRendererGetPropertyMap2(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliControlRendererGetPropertyMap2: BorderRenderer" ); + + RendererFactory factory = RendererFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert("renderer-type", "border-renderer"); + propertyMap.Insert("border-color", Color::BLUE); + propertyMap.Insert("border-size", 5.f); + ControlRenderer borderRenderer = factory.GetControlRenderer( propertyMap ); + + Property::Map resultMap; + borderRenderer.CreatePropertyMap( resultMap ); + + // check the property values from the returned map from control renderer + Property::Value* typeValue = resultMap.Find( "renderer-type", Property::STRING ); + DALI_TEST_CHECK( typeValue ); + DALI_TEST_CHECK( typeValue->Get() == "border-renderer" ); + + Property::Value* colorValue = resultMap.Find( "border-color", Property::VECTOR4 ); + DALI_TEST_CHECK( colorValue ); + DALI_TEST_CHECK( colorValue->Get() == Color::BLUE ); + + Property::Value* sizeValue = resultMap.Find( "border-size", Property::FLOAT ); + DALI_TEST_CHECK( sizeValue ); + DALI_TEST_CHECK( sizeValue->Get() == 5.f ); + + borderRenderer = factory.GetControlRenderer( 10.f, Color::CYAN ); + borderRenderer.CreatePropertyMap( resultMap ); + + typeValue = resultMap.Find( "renderer-type", Property::STRING ); + DALI_TEST_CHECK( typeValue ); + DALI_TEST_CHECK( typeValue->Get() == "border-renderer" ); + + colorValue = resultMap.Find( "border-color", Property::VECTOR4 ); + DALI_TEST_CHECK( colorValue ); + DALI_TEST_CHECK( colorValue->Get() == Color::CYAN ); + + colorValue = resultMap.Find( "border-size", Property::FLOAT ); + DALI_TEST_CHECK( colorValue ); + DALI_TEST_CHECK( colorValue->Get() == 10.f ); + + END_TEST; +} + +int UtcDaliControlRendererGetPropertyMap3(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliControlRendererGetPropertyMap3: linear GradientRenderer" ); + + RendererFactory factory = RendererFactory::Get(); + DALI_TEST_CHECK( factory ); + + Property::Map propertyMap; + propertyMap.Insert("renderer-type", "gradient-renderer"); + + Vector2 start(-1.f, -1.f); + Vector2 end(1.f, 1.f); + propertyMap.Insert("gradient-start-position", start); + propertyMap.Insert("gradient-end-position", end); + propertyMap.Insert("gradient-spread-method", "repeat"); + + propertyMap.Insert("gradient-stop-offset", Vector2(0.2f, 0.8f)); + + Property::Array stopColors; + stopColors.PushBack( Color::RED ); + stopColors.PushBack( Color::GREEN ); + propertyMap.Insert("gradient-stop-color", stopColors); + + ControlRenderer gradientRenderer = factory.GetControlRenderer(propertyMap); + + Property::Map resultMap; + gradientRenderer.CreatePropertyMap( resultMap ); + + // check the property values from the returned map from control renderer + Property::Value* value = resultMap.Find( "renderer-type", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "gradient-renderer" ); + + value = resultMap.Find( "gradient-units", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "object-bounding-box" ); + + value = resultMap.Find( "gradient-spread-method", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "repeat" ); + + value = resultMap.Find( "gradient-start-position", Property::VECTOR2 ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get(), start , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + + value = resultMap.Find( "gradient-end-position", Property::VECTOR2 ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get(), end , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + + value = resultMap.Find( "gradient-stop-offset", Property::ARRAY ); + DALI_TEST_CHECK( value ); + Property::Array* offsetArray = value->GetArray(); + DALI_TEST_CHECK( offsetArray->Count() == 2 ); + DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get(), 0.2f , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get(), 0.8f , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + + value = resultMap.Find( "gradient-stop-color", Property::ARRAY ); + DALI_TEST_CHECK( value ); + Property::Array* colorArray = value->GetArray(); + DALI_TEST_CHECK( colorArray->Count() == 2 ); + DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliControlRendererGetPropertyMap4(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliControlRendererGetPropertyMap4: radial GradientRenderer" ); + + RendererFactory factory = RendererFactory::Get(); + DALI_TEST_CHECK( factory ); + + Property::Map propertyMap; + propertyMap.Insert("renderer-type", "gradient-renderer"); + + Vector2 center(100.f, 100.f); + float radius = 100.f; + propertyMap.Insert("gradient-units", "user-space"); + propertyMap.Insert("gradient-center", center); + propertyMap.Insert("gradient-radius", radius); + propertyMap.Insert("gradient-stop-offset", Vector3(0.1f, 0.3f, 1.1f)); + + Property::Array stopColors; + stopColors.PushBack( Color::RED ); + stopColors.PushBack( Color::BLACK ); + stopColors.PushBack( Color::GREEN ); + propertyMap.Insert("gradient-stop-color", stopColors); + + ControlRenderer gradientRenderer = factory.GetControlRenderer(propertyMap); + DALI_TEST_CHECK( gradientRenderer ); + + Property::Map resultMap; + gradientRenderer.CreatePropertyMap( resultMap ); + + // check the property values from the returned map from control renderer + Property::Value* value = resultMap.Find( "renderer-type", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "gradient-renderer" ); + + value = resultMap.Find( "gradient-units", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "user-space" ); + + value = resultMap.Find( "gradient-spread-method", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "pad" ); + + value = resultMap.Find( "gradient-center", Property::VECTOR2 ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get(), center , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + + value = resultMap.Find( "gradient-radius", Property::FLOAT ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get(), radius , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + + value = resultMap.Find( "gradient-stop-offset", Property::ARRAY ); + DALI_TEST_CHECK( value ); + Property::Array* offsetArray = value->GetArray(); + DALI_TEST_CHECK( offsetArray->Count() == 3 ); + DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get(), 0.1f , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get(), 0.3f , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + // any stop value will be clamped to [0.0, 1.0]; + DALI_TEST_EQUALS( offsetArray->GetElementAt(2).Get(), 1.0f , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + + value = resultMap.Find( "gradient-stop-color", Property::ARRAY ); + DALI_TEST_CHECK( value ); + Property::Array* colorArray = value->GetArray(); + DALI_TEST_CHECK( colorArray->Count() == 3 ); + DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get(), Color::BLACK , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + DALI_TEST_EQUALS( colorArray->GetElementAt(2).Get(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliControlRendererGetPropertyMap5(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliControlRendererGetPropertyMap5: ImageRenderer" ); + + RendererFactory factory = RendererFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert( "renderer-type", "image-renderer" ); + propertyMap.Insert( "image-url", TEST_IMAGE_FILE_NAME ); + propertyMap.Insert( "image-desired-width", 20 ); + propertyMap.Insert( "image-desired-height", 30 ); + propertyMap.Insert( "image-fitting-mode", "fit-height" ); + propertyMap.Insert( "image-sampling-mode", "box-then-nearest" ); + + ControlRenderer imageRenderer = factory.GetControlRenderer(propertyMap); + DALI_TEST_CHECK( imageRenderer ); + + Property::Map resultMap; + imageRenderer.CreatePropertyMap( resultMap ); + + // check the property values from the returned map from control renderer + Property::Value* value = resultMap.Find( "renderer-type", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "image-renderer" ); + + value = resultMap.Find( "image-url", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == TEST_IMAGE_FILE_NAME ); + + value = resultMap.Find( "image-fitting-mode", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "fit-height" ); + + value = resultMap.Find( "image-sampling-mode", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "box-then-nearest" ); + + value = resultMap.Find( "image-desired-width", Property::INTEGER ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == 20 ); + + value = resultMap.Find( "image-desired-height", Property::INTEGER ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == 30 ); + + // Get an image renderer with an image handle, and test the default property values + Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200)); + imageRenderer = factory.GetControlRenderer(image); + imageRenderer.CreatePropertyMap( resultMap ); + + value = resultMap.Find( "renderer-type", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "image-renderer" ); + + value = resultMap.Find( "image-url", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == TEST_IMAGE_FILE_NAME ); + + value = resultMap.Find( "image-fitting-mode", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "shrink-to-fit" ); + + value = resultMap.Find( "image-sampling-mode", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "box" ); + + value = resultMap.Find( "image-desired-width", Property::INTEGER ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == 100 ); + + value = resultMap.Find( "image-desired-height", Property::INTEGER ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == 200 ); + + END_TEST; +} + +int UtcDaliControlRendererGetPropertyMap6(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliControlRendererGetPropertyMap6: NPatchRenderer" ); + + RendererFactory factory = RendererFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert( "renderer-type", "n-patch-renderer" ); + propertyMap.Insert( "image-url", TEST_NPATCH_FILE_NAME ); + propertyMap.Insert( "border-only", true ); + ControlRenderer nPatchRenderer = factory.GetControlRenderer( propertyMap ); + + Property::Map resultMap; + nPatchRenderer.CreatePropertyMap( resultMap ); + + // check the property values from the returned map from control renderer + Property::Value* value = resultMap.Find( "renderer-type", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "n-patch-renderer" ); + + value = resultMap.Find( "image-url", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == TEST_NPATCH_FILE_NAME ); + + value = resultMap.Find( "border-only", Property::BOOLEAN ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() ); + END_TEST; }