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=a74af9052f127b3cbb9ef857ddb8749205039b0b;hp=be623c269fbb1e34cacef620977ef7e161aca746;hb=0031ca8312dba666109e4f7fbb62a3a5e288b7c2;hpb=5a06fb112e597dc2780ade446ae035ae15a5b037 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ControlRenderer.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ControlRenderer.cpp index be623c2..a74af90 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; @@ -42,8 +48,8 @@ int UtcDaliControlRendererCopyAndAssignment(void) RendererFactory factory = RendererFactory::Get(); Property::Map propertyMap; - propertyMap.Insert("renderer-type", "color-renderer"); - propertyMap.Insert("blend-color", Color::BLUE); + propertyMap.Insert("rendererType", "colorRenderer"); + propertyMap.Insert("blendColor", Color::BLUE); ControlRenderer controlRenderer = factory.GetControlRenderer( propertyMap ); ControlRenderer controlRendererCopy( controlRenderer ); @@ -68,15 +74,15 @@ int UtcDaliControlRendererCopyAndAssignment(void) END_TEST; } -int UtcDaliControlRendererSetDepthIndex(void) +int UtcDaliControlRendererSetGetDepthIndex(void) { ToolkitTestApplication application; tet_infoline( "UtcDaliControlRendererSetDepthIndex" ); RendererFactory factory = RendererFactory::Get(); Property::Map propertyMap; - propertyMap.Insert("renderer-type", "color-renderer"); - propertyMap.Insert("blend-color", Color::BLUE); + propertyMap.Insert("rendererType", "colorRenderer"); + propertyMap.Insert("blendColor", Color::BLUE); ControlRenderer controlRenderer = factory.GetControlRenderer( propertyMap ); controlRenderer.SetDepthIndex( 1.f ); @@ -87,22 +93,88 @@ 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 UtcDaliControlRendererSetOnStage(void) +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("rendererType", "gradientRenderer"); + Vector2 start(-1.f, -1.f); + Vector2 end(1.f, 1.f); + propertyMap.Insert("gradientStartPosition", start); + propertyMap.Insert("gradientEndPosition", end); + propertyMap.Insert("gradientStopOffset", Vector2(0.f, 1.f)); + Property::Array stopColors; + stopColors.PushBack( Color::RED ); + stopColors.PushBack( Color::GREEN ); + propertyMap.Insert("gradientStopColor", 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 UtcDaliControlRendererSetOnOffStage(void) { ToolkitTestApplication application; tet_infoline( "UtcDaliControlRendererSetDepthIndex" ); RendererFactory factory = RendererFactory::Get(); Property::Map propertyMap; - propertyMap.Insert("renderer-type", "color-renderer"); - propertyMap.Insert("blend-color", Color::BLUE); + propertyMap.Insert("rendererType", "colorRenderer"); + propertyMap.Insert("blendColor", Color::BLUE); ControlRenderer controlRenderer = factory.GetControlRenderer( propertyMap ); Actor actor = Actor::New(); @@ -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("rendererType", "colorRenderer"); + propertyMap.Insert("blendColor", Color::BLUE); + ControlRenderer colorRenderer = factory.GetControlRenderer( propertyMap ); + + Property::Map resultMap; + colorRenderer.CreatePropertyMap( resultMap ); + + Property::Value* typeValue = resultMap.Find( "rendererType", Property::STRING ); + DALI_TEST_CHECK( typeValue ); + DALI_TEST_CHECK( typeValue->Get() == "colorRenderer" ); + + Property::Value* colorValue = resultMap.Find( "blendColor", 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( "blendColor", 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("rendererType", "borderRenderer"); + propertyMap.Insert("borderColor", Color::BLUE); + propertyMap.Insert("borderSize", 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( "rendererType", Property::STRING ); + DALI_TEST_CHECK( typeValue ); + DALI_TEST_CHECK( typeValue->Get() == "borderRenderer" ); + + Property::Value* colorValue = resultMap.Find( "borderColor", Property::VECTOR4 ); + DALI_TEST_CHECK( colorValue ); + DALI_TEST_CHECK( colorValue->Get() == Color::BLUE ); + + Property::Value* sizeValue = resultMap.Find( "borderSize", 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( "rendererType", Property::STRING ); + DALI_TEST_CHECK( typeValue ); + DALI_TEST_CHECK( typeValue->Get() == "borderRenderer" ); + + colorValue = resultMap.Find( "borderColor", Property::VECTOR4 ); + DALI_TEST_CHECK( colorValue ); + DALI_TEST_CHECK( colorValue->Get() == Color::CYAN ); + + colorValue = resultMap.Find( "borderSize", 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("rendererType", "gradientRenderer"); + + Vector2 start(-1.f, -1.f); + Vector2 end(1.f, 1.f); + propertyMap.Insert("gradientStartPosition", start); + propertyMap.Insert("gradientEndPosition", end); + propertyMap.Insert("gradientSpreadMethod", "repeat"); + + propertyMap.Insert("gradientStopOffset", Vector2(0.2f, 0.8f)); + + Property::Array stopColors; + stopColors.PushBack( Color::RED ); + stopColors.PushBack( Color::GREEN ); + propertyMap.Insert("gradientStopColor", 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( "rendererType", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "gradientRenderer" ); + + value = resultMap.Find( "gradientUnits", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "objectBoundingBox" ); + + value = resultMap.Find( "gradientSpreadMethod", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "repeat" ); + + value = resultMap.Find( "gradientStartPosition", Property::VECTOR2 ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get(), start , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + + value = resultMap.Find( "gradientEndPosition", Property::VECTOR2 ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get(), end , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + + value = resultMap.Find( "gradientStopOffset", 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( "gradientStopColor", 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("rendererType", "gradientRenderer"); + + Vector2 center(100.f, 100.f); + float radius = 100.f; + propertyMap.Insert("gradientUnits", "userSpace"); + propertyMap.Insert("gradientCenter", center); + propertyMap.Insert("gradientRadius", radius); + propertyMap.Insert("gradientStopOffset", Vector3(0.1f, 0.3f, 1.1f)); + + Property::Array stopColors; + stopColors.PushBack( Color::RED ); + stopColors.PushBack( Color::BLACK ); + stopColors.PushBack( Color::GREEN ); + propertyMap.Insert("gradientStopColor", 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( "rendererType", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "gradientRenderer" ); + + value = resultMap.Find( "gradientUnits", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "userSpace" ); + + value = resultMap.Find( "gradientSpreadMethod", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "pad" ); + + value = resultMap.Find( "gradientCenter", Property::VECTOR2 ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get(), center , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + + value = resultMap.Find( "gradientRadius", Property::FLOAT ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get(), radius , Math::MACHINE_EPSILON_100, TEST_LOCATION ); + + value = resultMap.Find( "gradientStopOffset", 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( "gradientStopColor", 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( "rendererType", "imageRenderer" ); + propertyMap.Insert( "imageUrl", TEST_IMAGE_FILE_NAME ); + propertyMap.Insert( "imageDesiredWidth", 20 ); + propertyMap.Insert( "imageDesiredHeight", 30 ); + propertyMap.Insert( "imageFittingMode", "fitHeight" ); + propertyMap.Insert( "imageSamplingMode", "boxThenNearest" ); + + 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( "rendererType", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "imageRenderer" ); + + value = resultMap.Find( "imageUrl", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == TEST_IMAGE_FILE_NAME ); + + value = resultMap.Find( "imageFittingMode", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "fitHeight" ); + + value = resultMap.Find( "imageSamplingMode", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "boxThenNearest" ); + + value = resultMap.Find( "imageDesiredWidth", Property::INTEGER ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == 20 ); + + value = resultMap.Find( "imageDesiredHeight", 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( "rendererType", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "imageRenderer" ); + + value = resultMap.Find( "imageUrl", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == TEST_IMAGE_FILE_NAME ); + + value = resultMap.Find( "imageFittingMode", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "shrinkToFit" ); + + value = resultMap.Find( "imageSamplingMode", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "box" ); + + value = resultMap.Find( "imageDesiredWidth", Property::INTEGER ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == 100 ); + + value = resultMap.Find( "imageDesiredHeight", 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( "rendererType", "nPatchRenderer" ); + propertyMap.Insert( "imageUrl", TEST_NPATCH_FILE_NAME ); + propertyMap.Insert( "borderOnly", 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( "rendererType", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == "nPatchRenderer" ); + + value = resultMap.Find( "imageUrl", Property::STRING ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == TEST_NPATCH_FILE_NAME ); + + value = resultMap.Find( "borderOnly", Property::BOOLEAN ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() ); + END_TEST; }