X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-RendererFactory.cpp;h=19df59dfd0e5fc717f384b56a1b29bd104332654;hb=d00a250741411c386d988e7ac34525cf94a1918e;hp=a173f2105c540c3b114e9e552ac3adfc09604be6;hpb=6386529919293a632327b5f867ca25ce03fa94c8;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit/utc-Dali-RendererFactory.cpp b/automated-tests/src/dali-toolkit/utc-Dali-RendererFactory.cpp index a173f21..19df59d 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-RendererFactory.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-RendererFactory.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 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. @@ -18,9 +18,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include using namespace Dali; @@ -31,9 +31,12 @@ namespace typedef NinePatchImage::StretchRanges StretchRanges; const char* TEST_IMAGE_FILE_NAME = "gallery_image_01.jpg"; -const char* TEST_NPATCH_FILE_NAME = "gallery_image_01.9.jpg"; +const char* TEST_NPATCH_FILE_NAME = "gallery_image_01.9.png"; const char* TEST_SVG_FILE_NAME = TEST_RESOURCE_DIR "/svg1.svg"; +const char* TEST_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube.obj"; +const char* TEST_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal.mtl"; +const char* TEST_SIMPLE_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal-Simple.mtl"; Integration::Bitmap* CreateBitmap( unsigned int imageWidth, unsigned int imageHeight, unsigned int initialColor, Pixel::Format pixelFormat ) { @@ -163,7 +166,8 @@ Integration::ResourcePointer CustomizeNinePatch( TestApplication& application, tet_infoline("Getting resource"); Integration::ResourcePointer resourcePtr(bitmap); - platform.SetResourceLoaded( 0, Dali::Integration::ResourceBitmap, resourcePtr ); + //platform.SetResourceLoaded( 0, Dali::Integration::ResourceBitmap, resourcePtr ); + platform.SetSynchronouslyLoadedResource( resourcePtr); return resourcePtr; } @@ -187,7 +191,6 @@ void TestControlRendererRender( ToolkitTestApplication& application, controlRenderer.SetOnStage( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); - DALI_TEST_CHECK( actor.GetRendererAt(0u).GetMaterial().GetNumberOfTextures() == expectedSamplers ); application.SendNotification(); application.Render(); @@ -206,7 +209,8 @@ void TestControlRendererRender( ToolkitTestApplication& application, if( resourcePtr ) { - DALI_TEST_CHECK(application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc)); + DALI_TEST_CHECK( application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) || + application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceSynchronouslyFunc )); } DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); @@ -289,10 +293,10 @@ int UtcDaliRendererFactoryGetColorRenderer1(void) Property::Map propertyMap; Vector4 testColor( 1.f, 0.5f, 0.3f, 0.2f ); - propertyMap.Insert("rendererType", "color"); - propertyMap.Insert("blendColor", testColor); + propertyMap.Insert("rendererType", "COLOR"); + propertyMap.Insert("mixColor", testColor); - ControlRenderer controlRenderer = factory.GetControlRenderer(propertyMap); + ControlRenderer controlRenderer = factory.CreateControlRenderer(propertyMap); DALI_TEST_CHECK( controlRenderer ); Actor actor = Actor::New(); @@ -300,7 +304,7 @@ int UtcDaliRendererFactoryGetColorRenderer1(void) Vector4 actualValue(Vector4::ZERO); TestGlAbstraction& gl = application.GetGlAbstraction(); - DALI_TEST_CHECK( gl.GetUniformValue( "blendColor", actualValue ) ); + DALI_TEST_CHECK( gl.GetUniformValue( "mixColor", actualValue ) ); DALI_TEST_EQUALS( actualValue, testColor, TEST_LOCATION ); END_TEST; @@ -315,7 +319,10 @@ int UtcDaliRendererFactoryGetColorRenderer2(void) DALI_TEST_CHECK( factory ); Vector4 testColor( 1.f, 0.5f, 0.3f, 0.2f ); - ControlRenderer controlRenderer = factory.GetControlRenderer(testColor); + Dali::Property::Map map; + map[ "rendererType" ] = "COLOR"; + map[ "mixColor" ] = testColor; + ControlRenderer controlRenderer = factory.CreateControlRenderer( map ); DALI_TEST_CHECK( controlRenderer ); Actor actor = Actor::New(); @@ -323,7 +330,7 @@ int UtcDaliRendererFactoryGetColorRenderer2(void) Vector4 actualValue(Vector4::ZERO); TestGlAbstraction& gl = application.GetGlAbstraction(); - DALI_TEST_CHECK( gl.GetUniformValue( "blendColor", actualValue ) ); + DALI_TEST_CHECK( gl.GetUniformValue( "mixColor", actualValue ) ); DALI_TEST_EQUALS( actualValue, testColor, TEST_LOCATION ); controlRenderer.SetOffStage( actor ); @@ -343,11 +350,11 @@ int UtcDaliRendererFactoryGetBorderRenderer1(void) Property::Map propertyMap; Vector4 testColor( 1.f, 0.5f, 0.3f, 0.2f ); float testSize = 5.f; - propertyMap.Insert("rendererType", "border"); + propertyMap.Insert("rendererType", "BORDER"); propertyMap.Insert("borderColor", testColor); propertyMap.Insert("borderSize", testSize); - ControlRenderer controlRenderer = factory.GetControlRenderer(propertyMap); + ControlRenderer controlRenderer = factory.CreateControlRenderer(propertyMap); DALI_TEST_CHECK( controlRenderer ); Actor actor = Actor::New(); @@ -357,7 +364,7 @@ int UtcDaliRendererFactoryGetBorderRenderer1(void) controlRenderer.SetOnStage( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); - int blendMode = actor.GetRendererAt(0u).GetProperty( Renderer::Property::BLENDING_MODE ); + int blendMode = actor.GetRendererAt(0u).GetProperty( Renderer::Property::BLEND_MODE ); DALI_TEST_EQUALS( static_cast(blendMode), BlendingMode::ON, TEST_LOCATION ); TestGlAbstraction& gl = application.GetGlAbstraction(); @@ -390,7 +397,11 @@ int UtcDaliRendererFactoryGetBorderRenderer2(void) Vector4 testColor( 1.f, 0.5f, 0.3f, 1.f ); float testSize = 5.f; - ControlRenderer controlRenderer = factory.GetControlRenderer(testSize, testColor ); + Dali::Property::Map propertyMap; + propertyMap[ "rendererType" ] = "BORDER"; + propertyMap[ "borderColor" ] = testColor; + propertyMap[ "borderSize" ] = testSize; + ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap ); DALI_TEST_CHECK( controlRenderer ); Actor actor = Actor::New(); @@ -406,7 +417,7 @@ int UtcDaliRendererFactoryGetBorderRenderer2(void) application.SendNotification(); application.Render(0); - int blendMode = actor.GetRendererAt(0u).GetProperty( Renderer::Property::BLENDING_MODE ); + int blendMode = actor.GetRendererAt(0u).GetProperty( Renderer::Property::BLEND_MODE ); DALI_TEST_EQUALS( static_cast(blendMode), BlendingMode::AUTO, TEST_LOCATION ); Vector4 actualColor(Vector4::ZERO); @@ -420,12 +431,17 @@ int UtcDaliRendererFactoryGetBorderRenderer2(void) controlRenderer.SetOffStage( actor ); // enable the anti-aliasing - controlRenderer = factory.GetControlRenderer(testSize, testColor, true ); + Dali::Property::Map map; + map[ "rendererType" ] = "BORDER"; + map[ "borderColor" ] = testColor; + map[ "borderSize" ] = testSize; + map[ "antiAliasing" ] = true; + controlRenderer = factory.CreateControlRenderer( map ); controlRenderer.SetOnStage( actor ); application.SendNotification(); application.Render(0); - blendMode = actor.GetRendererAt(0u).GetProperty( Renderer::Property::BLENDING_MODE ); + blendMode = actor.GetRendererAt(0u).GetProperty( Renderer::Property::BLEND_MODE ); DALI_TEST_EQUALS( static_cast(blendMode), BlendingMode::ON, TEST_LOCATION ); END_TEST; @@ -440,25 +456,25 @@ int UtcDaliRendererFactoryGetLinearGradientRenderer(void) DALI_TEST_CHECK( factory ); Property::Map propertyMap; - propertyMap.Insert("rendererType", "gradient"); + propertyMap.Insert("rendererType", "GRADIENT"); Vector2 start(-1.f, -1.f); Vector2 end(1.f, 1.f); - propertyMap.Insert("startPosition", start); - propertyMap.Insert("endPosition", end); - propertyMap.Insert("spreadMethod", "repeat"); + propertyMap.Insert("startPosition", start); + propertyMap.Insert("endPosition", end); + propertyMap.Insert("spreadMethod", "REPEAT"); Property::Array stopOffsets; stopOffsets.PushBack( 0.2f ); stopOffsets.PushBack( 0.8f ); - propertyMap.Insert("stopOffset", stopOffsets); + propertyMap.Insert("stopOffset", stopOffsets); Property::Array stopColors; stopColors.PushBack( Color::RED ); stopColors.PushBack( Color::GREEN ); - propertyMap.Insert("stopColor", stopColors); + propertyMap.Insert("stopColor", stopColors); - ControlRenderer controlRenderer = factory.GetControlRenderer(propertyMap); + ControlRenderer controlRenderer = factory.CreateControlRenderer(propertyMap); DALI_TEST_CHECK( controlRenderer ); // A lookup texture is generated and pass to shader as sampler @@ -480,11 +496,11 @@ int UtcDaliRendererFactoryGetRadialGradientRenderer(void) DALI_TEST_CHECK( factory ); Property::Map propertyMap; - propertyMap.Insert("rendererType", "gradient"); + propertyMap.Insert("rendererType", "GRADIENT"); Vector2 center(100.f, 100.f); float radius = 100.f; - propertyMap.Insert("units", "userSpace"); + propertyMap.Insert("units", "USER_SPACE"); propertyMap.Insert("center", center); propertyMap.Insert("radius", radius); @@ -498,7 +514,7 @@ int UtcDaliRendererFactoryGetRadialGradientRenderer(void) stopColors.PushBack( Color::GREEN ); propertyMap.Insert("stopColor", stopColors); - ControlRenderer controlRenderer = factory.GetControlRenderer(propertyMap); + ControlRenderer controlRenderer = factory.CreateControlRenderer(propertyMap); DALI_TEST_CHECK( controlRenderer ); // A lookup texture is generated and pass to shader as sampler @@ -525,20 +541,20 @@ int UtcDaliRendererFactoryDefaultOffsetsGradientRenderer(void) DALI_TEST_CHECK( factory ); Property::Map propertyMap; - propertyMap.Insert("rendererType", "gradient"); + propertyMap.Insert("rendererType", "GRADIENT"); Vector2 start(-1.f, -1.f); Vector2 end(1.f, 1.f); - propertyMap.Insert("startPosition", start); - propertyMap.Insert("endPosition", end); - propertyMap.Insert("spreadMethod", "repeat"); + propertyMap.Insert("startPosition", start); + propertyMap.Insert("endPosition", end); + propertyMap.Insert("spreadMethod", "REPEAT"); Property::Array stopColors; stopColors.PushBack( Color::RED ); stopColors.PushBack( Color::GREEN ); - propertyMap.Insert("stopColor", stopColors); + propertyMap.Insert("stopColor", stopColors); - ControlRenderer controlRenderer = factory.GetControlRenderer(propertyMap); + ControlRenderer controlRenderer = factory.CreateControlRenderer(propertyMap); DALI_TEST_CHECK( controlRenderer ); // A lookup texture is generated and pass to shader as sampler @@ -560,10 +576,10 @@ int UtcDaliRendererFactoryGetImageRenderer1(void) DALI_TEST_CHECK( factory ); Property::Map propertyMap; - propertyMap.Insert( "rendererType", "image" ); - propertyMap.Insert( "imageUrl", TEST_IMAGE_FILE_NAME ); + propertyMap.Insert( "rendererType", "IMAGE" ); + propertyMap.Insert( "url", TEST_IMAGE_FILE_NAME ); - ControlRenderer controlRenderer = factory.GetControlRenderer( propertyMap ); + ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap ); DALI_TEST_CHECK( controlRenderer ); Actor actor = Actor::New(); @@ -572,6 +588,9 @@ int UtcDaliRendererFactoryGetImageRenderer1(void) const int width=512; const int height=513; + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_DISCARD ); bitmap->GetPackedPixelsProfile()->ReserveBuffer( Pixel::RGBA8888, width, height,width, height ); @@ -580,10 +599,7 @@ int UtcDaliRendererFactoryGetImageRenderer1(void) ImageDimensions(width, height), Integration::ResourcePointer( bitmap ) ); - TestGlAbstraction& gl = application.GetGlAbstraction(); - int textureUnit = -1; - DALI_TEST_CHECK( gl.GetUniformValue< int >( "sTexture", textureUnit ) ); - DALI_TEST_EQUALS( textureUnit, 0, TEST_LOCATION ); + DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); controlRenderer.SetOffStage( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); @@ -600,7 +616,7 @@ int UtcDaliRendererFactoryGetImageRenderer2(void) DALI_TEST_CHECK( factory ); Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME); - ControlRenderer controlRenderer = factory.GetControlRenderer( image ); + ControlRenderer controlRenderer = factory.CreateControlRenderer( image ); Actor actor = Actor::New(); // For tesing the LoadResourceFunc is called, a big image size should be set, so the atlasing is not applied. @@ -612,14 +628,15 @@ int UtcDaliRendererFactoryGetImageRenderer2(void) Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_DISCARD ); bitmap->GetPackedPixelsProfile()->ReserveBuffer( Pixel::RGBA8888, width, height,width, height ); + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); + TestControlRendererRender( application, actor, controlRenderer, 1u, ImageDimensions(width, height), Integration::ResourcePointer(bitmap) ); - TestGlAbstraction& gl = application.GetGlAbstraction(); - int textureUnit = -1; - DALI_TEST_CHECK( gl.GetUniformValue< int >( "sTexture", textureUnit ) ); - DALI_TEST_EQUALS( textureUnit, 0, TEST_LOCATION ); + DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); END_TEST; } @@ -641,39 +658,43 @@ int UtcDaliRendererFactoryGetNPatchRenderer1(void) Integration::ResourcePointer ninePatchResource = CustomizeNinePatch( application, ninePatchImageWidth, ninePatchImageHeight, stretchRangesX, stretchRangesY ); Property::Map propertyMap; - propertyMap.Insert( "rendererType", "nPatch" ); - propertyMap.Insert( "imageUrl", TEST_NPATCH_FILE_NAME ); + propertyMap.Insert( "rendererType", "IMAGE" ); + propertyMap.Insert( "url", TEST_NPATCH_FILE_NAME ); { tet_infoline( "whole grid" ); - ControlRenderer controlRenderer = factory.GetControlRenderer( propertyMap ); + ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap ); DALI_TEST_CHECK( controlRenderer ); Actor actor = Actor::New(); + + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); + TestControlRendererRender( application, actor, controlRenderer, 1u, ImageDimensions(ninePatchImageWidth, ninePatchImageHeight), ninePatchResource ); - TestGlAbstraction& gl = application.GetGlAbstraction(); - int textureUnit = -1; - DALI_TEST_CHECK( gl.GetUniformValue< int >( "sTexture", textureUnit ) ); - DALI_TEST_EQUALS( textureUnit, 0, TEST_LOCATION ); + DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); } propertyMap.Insert( "borderOnly", true ); { tet_infoline( "border only" ); - ControlRenderer controlRenderer = factory.GetControlRenderer( propertyMap ); + ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap ); DALI_TEST_CHECK( controlRenderer ); Actor actor = Actor::New(); + + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); + TestControlRendererRender( application, actor, controlRenderer, 1u, ImageDimensions(ninePatchImageWidth, ninePatchImageHeight), ninePatchResource ); - TestGlAbstraction& gl = application.GetGlAbstraction(); - int textureUnit = -1; - DALI_TEST_CHECK( gl.GetUniformValue< int >( "sTexture", textureUnit ) ); - DALI_TEST_EQUALS( textureUnit, 0, TEST_LOCATION ); + DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); } END_TEST; @@ -701,21 +722,23 @@ int UtcDaliRendererFactoryGetNPatchRenderer2(void) Integration::ResourcePointer ninePatchResource = CustomizeNinePatch( application, ninePatchImageWidth, ninePatchImageHeight, stretchRangesX, stretchRangesY ); Property::Map propertyMap; - propertyMap.Insert( "rendererType", "nPatch" ); - propertyMap.Insert( "imageUrl", TEST_NPATCH_FILE_NAME ); + propertyMap.Insert( "rendererType", "IMAGE" ); + propertyMap.Insert( "url", TEST_NPATCH_FILE_NAME ); { - ControlRenderer controlRenderer = factory.GetControlRenderer( propertyMap ); + ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap ); DALI_TEST_CHECK( controlRenderer ); Actor actor = Actor::New(); + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); + TestControlRendererRender( application, actor, controlRenderer, 1u, ImageDimensions(ninePatchImageWidth, ninePatchImageHeight), ninePatchResource ); - TestGlAbstraction& gl = application.GetGlAbstraction(); - int textureUnit = -1; - DALI_TEST_CHECK( gl.GetUniformValue< int >( "sTexture", textureUnit ) ); - DALI_TEST_EQUALS( textureUnit, 0, TEST_LOCATION ); + + DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); controlRenderer.SetOffStage( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); @@ -724,18 +747,19 @@ int UtcDaliRendererFactoryGetNPatchRenderer2(void) propertyMap.Insert( "borderOnly", true ); { tet_infoline( "border only" ); - ControlRenderer controlRenderer = factory.GetControlRenderer( propertyMap ); + ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap ); DALI_TEST_CHECK( controlRenderer ); + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); Actor actor = Actor::New(); TestControlRendererRender( application, actor, controlRenderer, 1u, ImageDimensions(ninePatchImageWidth, ninePatchImageHeight), ninePatchResource ); - TestGlAbstraction& gl = application.GetGlAbstraction(); - int textureUnit = -1; - DALI_TEST_CHECK( gl.GetUniformValue< int >( "sTexture", textureUnit ) ); - DALI_TEST_EQUALS( textureUnit, 0, TEST_LOCATION ); + + DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); controlRenderer.SetOffStage( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); @@ -760,18 +784,20 @@ int UtcDaliRendererFactoryGetNPatchRenderer3(void) stretchRangesY.PushBack( Uint16Pair( 4, 5 ) ); Integration::ResourcePointer ninePatchResource = CustomizeNinePatch( application, ninePatchImageWidth, ninePatchImageHeight, stretchRangesX, stretchRangesY ); - ControlRenderer controlRenderer = factory.GetControlRenderer( TEST_NPATCH_FILE_NAME ); + ControlRenderer controlRenderer = factory.CreateControlRenderer( TEST_NPATCH_FILE_NAME, ImageDimensions() ); DALI_TEST_CHECK( controlRenderer ); Actor actor = Actor::New(); + + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); + TestControlRendererRender( application, actor, controlRenderer, 1u, ImageDimensions(ninePatchImageWidth, ninePatchImageHeight), ninePatchResource ); - TestGlAbstraction& gl = application.GetGlAbstraction(); - int textureUnit = -1; - DALI_TEST_CHECK( gl.GetUniformValue< int >( "sTexture", textureUnit ) ); - DALI_TEST_EQUALS( textureUnit, 0, TEST_LOCATION ); + DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); END_TEST; } @@ -797,18 +823,20 @@ int UtcDaliRendererFactoryGetNPatchRenderer4(void) stretchRangesY.PushBack( Uint16Pair( 25, 27 ) ); Integration::ResourcePointer ninePatchResource = CustomizeNinePatch( application, ninePatchImageWidth, ninePatchImageHeight, stretchRangesX, stretchRangesY ); - ControlRenderer controlRenderer = factory.GetControlRenderer( TEST_NPATCH_FILE_NAME ); + ControlRenderer controlRenderer = factory.CreateControlRenderer( TEST_NPATCH_FILE_NAME, ImageDimensions() ); DALI_TEST_CHECK( controlRenderer ); Actor actor = Actor::New(); + + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); + TestControlRendererRender( application, actor, controlRenderer, 1u, ImageDimensions(ninePatchImageWidth, ninePatchImageHeight), ninePatchResource ); - TestGlAbstraction& gl = application.GetGlAbstraction(); - int textureUnit = -1; - DALI_TEST_CHECK( gl.GetUniformValue< int >( "sTexture", textureUnit ) ); - DALI_TEST_EQUALS( textureUnit, 0, TEST_LOCATION ); + DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); END_TEST; } @@ -823,7 +851,7 @@ int UtcDaliRendererFactoryGetNPatchRendererN1(void) RendererFactory factory = RendererFactory::Get(); DALI_TEST_CHECK( factory ); - ControlRenderer controlRenderer = factory.GetControlRenderer( "ERROR.9.jpg" ); + ControlRenderer controlRenderer = factory.CreateControlRenderer( "ERROR.9.jpg", ImageDimensions() ); DALI_TEST_CHECK( controlRenderer ); Actor actor = Actor::New(); @@ -831,14 +859,16 @@ int UtcDaliRendererFactoryGetNPatchRendererN1(void) //The testkit still has to load a bitmap for the broken renderer image Integration::Bitmap* bitmap = Integration::Bitmap::New(Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_DISCARD); bitmap->GetPackedPixelsProfile()->ReserveBuffer( Pixel::RGBA8888, 100, 100, 100, 100 ); + + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); + TestControlRendererRender( application, actor, controlRenderer, 1u, ImageDimensions(), Integration::ResourcePointer(bitmap) ); - TestGlAbstraction& gl = application.GetGlAbstraction(); - int textureUnit = -1; - DALI_TEST_CHECK( gl.GetUniformValue< int >( "sTexture", textureUnit ) ); - DALI_TEST_EQUALS( textureUnit, 0, TEST_LOCATION ); + DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); END_TEST; } @@ -854,10 +884,10 @@ int UtcDaliRendererFactoryGetNPatchRendererN2(void) DALI_TEST_CHECK( factory ); Property::Map propertyMap; - propertyMap.Insert( "rendererType", "nPatch" ); - propertyMap.Insert( "imageUrl", 111 ); + propertyMap.Insert( "rendererType", 111 ); + propertyMap.Insert( "url", "ERROR.9.jpg" ); - ControlRenderer controlRenderer = factory.GetControlRenderer( propertyMap ); + ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap ); DALI_TEST_CHECK( controlRenderer ); Actor actor = Actor::New(); @@ -865,14 +895,16 @@ int UtcDaliRendererFactoryGetNPatchRendererN2(void) //The testkit still has to load a bitmap for the broken renderer image Integration::Bitmap* bitmap = Integration::Bitmap::New(Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_DISCARD); bitmap->GetPackedPixelsProfile()->ReserveBuffer( Pixel::RGBA8888, 100, 100, 100, 100 ); + + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); + TestControlRendererRender( application, actor, controlRenderer, 1u, ImageDimensions(), Integration::ResourcePointer(bitmap) ); - TestGlAbstraction& gl = application.GetGlAbstraction(); - int textureUnit = -1; - DALI_TEST_CHECK( gl.GetUniformValue< int >( "sTexture", textureUnit ) ); - DALI_TEST_EQUALS( textureUnit, 0, TEST_LOCATION ); + DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); END_TEST; } @@ -883,9 +915,13 @@ int UtcDaliRendererFactoryGetSvgRenderer(void) tet_infoline( "UtcDaliRendererFactoryGetSvgRenderer: Request svg renderer with a svg url" ); RendererFactory factory = RendererFactory::Get(); - ControlRenderer controlRenderer = factory.GetControlRenderer( TEST_SVG_FILE_NAME ); + ControlRenderer controlRenderer = factory.CreateControlRenderer( TEST_SVG_FILE_NAME, ImageDimensions() ); DALI_TEST_CHECK( controlRenderer ); + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); + Actor actor = Actor::New(); actor.SetSize( 200.f, 200.f ); Stage::GetCurrent().Add( actor ); @@ -895,8 +931,6 @@ int UtcDaliRendererFactoryGetSvgRenderer(void) application.Render(); DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); - // texture is not added until the rasterization completed. - DALI_TEST_CHECK( actor.GetRendererAt(0u).GetMaterial().GetNumberOfTextures() == 0 ); EventThreadCallback* eventTrigger = EventThreadCallback::Get(); CallbackBase* callback = eventTrigger->GetCallback(); @@ -905,141 +939,619 @@ int UtcDaliRendererFactoryGetSvgRenderer(void) CallbackBase::Execute( *callback ); DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); - DALI_TEST_CHECK( actor.GetRendererAt(0u).GetMaterial().GetNumberOfTextures() == 1 ); // waiting for the resource uploading application.SendNotification(); application.Render(); - TestGlAbstraction& gl = application.GetGlAbstraction(); - int textureUnit = -1; - DALI_TEST_CHECK( gl.GetUniformValue< int >( "sTexture", textureUnit ) ); - DALI_TEST_EQUALS( textureUnit, 0, TEST_LOCATION ); + DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); END_TEST; } -int UtcDaliRendererFactoryResetRenderer1(void) +//Test if mesh loads correctly when supplied with only the bare minimum requirements, an object file. +int UtcDaliRendererFactoryGetMeshRenderer1(void) { ToolkitTestApplication application; - tet_infoline( "UtcDaliRendererFactoryResetRenderer1" ); + tet_infoline( "UtcDaliRendererFactoryGetMeshRenderer1: Request mesh renderer with a valid object file only" ); RendererFactory factory = RendererFactory::Get(); DALI_TEST_CHECK( factory ); - ControlRenderer controlRenderer = factory.GetControlRenderer( Color::RED ); + //Set up renderer properties. + Property::Map propertyMap; + propertyMap.Insert( "rendererType", "MESH" ); + propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME ); + + ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap ); DALI_TEST_CHECK( controlRenderer ); Actor actor = Actor::New(); - TestControlRendererRender( application, actor, controlRenderer ); + actor.SetSize( 200.f, 200.f ); + Stage::GetCurrent().Add( actor ); + controlRenderer.SetSize( Vector2( 200.f, 200.f ) ); + controlRenderer.SetOnStage( actor ); + + application.SendNotification(); + application.Render( 0 ); + + DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); + + //Tell the platform abstraction that the required resources have been loaded. + TestPlatformAbstraction& platform = application.GetPlatform(); + platform.SetAllResourceRequestsAsLoaded(); + + //Render again to upload the now-loaded textures. + application.SendNotification(); + application.Render( 0 ); - Vector4 actualValue(Vector4::ZERO); TestGlAbstraction& gl = application.GetGlAbstraction(); - DALI_TEST_CHECK( gl.GetUniformValue( "blendColor", actualValue ) ); - DALI_TEST_EQUALS( actualValue, Color::RED, TEST_LOCATION ); - factory.ResetRenderer( controlRenderer, actor, Color::GREEN ); + Matrix testScaleMatrix; + testScaleMatrix.SetIdentityAndScale( Vector3( 1.0, -1.0, 1.0 ) ); + Matrix actualScaleMatrix; + + //Test to see if the object has been successfully loaded. + DALI_TEST_CHECK( gl.GetUniformValue( "uObjectMatrix", actualScaleMatrix ) ); + DALI_TEST_EQUALS( actualScaleMatrix, testScaleMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION ); + + controlRenderer.SetOffStage( actor ); + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); + + END_TEST; +} + +//Test if mesh loads correctly when supplied with an object file as well as a blank material file and images directory. +int UtcDaliRendererFactoryGetMeshRenderer2(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliRendererFactoryGetMeshRenderer2: Request mesh renderer with blank material file and images directory" ); + + RendererFactory factory = RendererFactory::Get(); + DALI_TEST_CHECK( factory ); + + //Set up renderer properties. + Property::Map propertyMap; + propertyMap.Insert( "rendererType", "MESH" ); + propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME ); + propertyMap.Insert( "materialUrl", "" ); + propertyMap.Insert( "texturesPath", "" ); + + ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap ); + DALI_TEST_CHECK( controlRenderer ); + + //Add renderer to an actor on stage. + Actor actor = Actor::New(); + actor.SetSize( 200.f, 200.f ); + Stage::GetCurrent().Add( actor ); + controlRenderer.SetSize( Vector2( 200.f, 200.f ) ); + controlRenderer.SetOnStage( actor ); + + DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); + + //Attempt to render to queue resource load requests. application.SendNotification(); - application.Render(0); - DALI_TEST_CHECK( gl.GetUniformValue( "blendColor", actualValue ) ); - DALI_TEST_EQUALS( actualValue, Color::GREEN, TEST_LOCATION ); + application.Render( 0 ); - Image bufferImage = CreateBufferImage( 100, 200, Vector4( 1.f, 1.f, 1.f, 1.f ) ); - factory.ResetRenderer( controlRenderer, actor, bufferImage ); + //Tell the platform abstraction that the required resources have been loaded. + TestPlatformAbstraction& platform = application.GetPlatform(); + platform.SetAllResourceRequestsAsLoaded(); - Actor actor2 = Actor::New(); - actor2.SetSize(200.f, 200.f); - Stage::GetCurrent().Add( actor2 ); - controlRenderer.SetSize(Vector2(200.f, 200.f)); - controlRenderer.SetOnStage( actor2 ); + //Render again to upload the now-loaded textures. application.SendNotification(); - application.Render(0); + application.Render( 0 ); + + TestGlAbstraction& gl = application.GetGlAbstraction(); + + Matrix testScaleMatrix; + testScaleMatrix.SetIdentityAndScale( Vector3( 1.0, -1.0, 1.0 ) ); + Matrix actualScaleMatrix; + + //Test to see if the object has been successfully loaded. + DALI_TEST_CHECK( gl.GetUniformValue( "uObjectMatrix", actualScaleMatrix ) ); + DALI_TEST_EQUALS( actualScaleMatrix, testScaleMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION ); + + controlRenderer.SetOffStage( actor ); + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; } -int UtcDaliRendererFactoryResetRenderer2(void) +//Test if mesh loads correctly when supplied with all parameters, an object file, a material file and a directory location. +int UtcDaliRendererFactoryGetMeshRenderer3(void) { ToolkitTestApplication application; - tet_infoline( "UtcDaliRendererFactoryResetRenderer2" ); + tet_infoline( "UtcDaliRendererFactoryGetMeshRenderer3: Request mesh renderer with all parameters correct" ); + + RendererFactory factory = RendererFactory::Get(); + DALI_TEST_CHECK( factory ); + //Set up renderer properties. + Property::Map propertyMap; + propertyMap.Insert( "rendererType", "MESH" ); + propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME ); + propertyMap.Insert( "materialUrl", TEST_MTL_FILE_NAME ); + propertyMap.Insert( "texturesPath", TEST_RESOURCE_DIR "/" ); + + ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap ); + DALI_TEST_CHECK( controlRenderer ); + + //Add renderer to an actor on stage. Actor actor = Actor::New(); - actor.SetSize(200.f, 200.f); + actor.SetSize( 200.f, 200.f ); Stage::GetCurrent().Add( actor ); + controlRenderer.SetSize( Vector2( 200.f, 200.f ) ); + controlRenderer.SetOnStage( actor ); + + DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); + + //Attempt to render to queue resource load requests. + application.SendNotification(); + application.Render( 0 ); + + //Tell the platform abstraction that the required resources have been loaded. + TestPlatformAbstraction& platform = application.GetPlatform(); + platform.SetAllResourceRequestsAsLoaded(); + + //Render again to upload the now-loaded textures. + application.SendNotification(); + application.Render( 0 ); + + TestGlAbstraction& gl = application.GetGlAbstraction(); + + Matrix testScaleMatrix; + testScaleMatrix.SetIdentityAndScale( Vector3( 1.0, -1.0, 1.0 ) ); + Matrix actualScaleMatrix; + + //Test to see if the object has been successfully loaded. + DALI_TEST_CHECK( gl.GetUniformValue( "uObjectMatrix", actualScaleMatrix ) ); + DALI_TEST_EQUALS( actualScaleMatrix, testScaleMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION ); + + controlRenderer.SetOffStage( actor ); + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); + + END_TEST; +} + +//Test if mesh renderer can load a correctly supplied mesh without a normal map or gloss map in the material file. +int UtcDaliRendererFactoryGetMeshRenderer4(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliRendererFactoryGetMeshRenderer4: Request mesh renderer with diffuse texture but not normal or gloss." ); + RendererFactory factory = RendererFactory::Get(); DALI_TEST_CHECK( factory ); - Image resourceImage = ResourceImage::New(TEST_IMAGE_FILE_NAME); - ControlRenderer controlRenderer = factory.GetControlRenderer( resourceImage ); + //Set up renderer properties. + Property::Map propertyMap; + propertyMap.Insert( "rendererType", "MESH" ); + propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME ); + propertyMap.Insert( "materialUrl", TEST_SIMPLE_MTL_FILE_NAME ); + propertyMap.Insert( "texturesPath", TEST_RESOURCE_DIR "/" ); + + ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap ); DALI_TEST_CHECK( controlRenderer ); - controlRenderer.SetSize(Vector2(200.f, 200.f)); + + //Add renderer to an actor on stage. + Actor actor = Actor::New(); + actor.SetSize( 200.f, 200.f ); + Stage::GetCurrent().Add( actor ); + controlRenderer.SetSize( Vector2( 200.f, 200.f ) ); controlRenderer.SetOnStage( actor ); + DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); + //Attempt to render to queue resource load requests. application.SendNotification(); - application.Render(0); + application.Render( 0 ); - Image bufferImage = CreateBufferImage( 100, 200, Vector4( 1.f, 1.f, 1.f, 1.f ) ); - factory.ResetRenderer( controlRenderer, actor, bufferImage ); - application.SendNotification(); - application.Render(0); + //Tell the platform abstraction that the required resources have been loaded. + TestPlatformAbstraction& platform = application.GetPlatform(); + platform.SetAllResourceRequestsAsLoaded(); - factory.ResetRenderer( controlRenderer, actor, Color::RED ); + //Render again to upload the now-loaded textures. + application.SendNotification(); + application.Render( 0 ); - Actor actor2 = Actor::New(); - actor2.SetSize(200.f, 200.f); - Stage::GetCurrent().Add( actor2 ); - controlRenderer.SetSize(Vector2(200.f, 200.f)); - controlRenderer.SetOnStage( actor2 ); TestGlAbstraction& gl = application.GetGlAbstraction(); - application.SendNotification(); - application.Render(0); - Vector4 actualValue(Vector4::ZERO); - DALI_TEST_CHECK( gl.GetUniformValue( "blendColor", actualValue ) ); - DALI_TEST_EQUALS( actualValue, Color::RED, TEST_LOCATION ); + + Matrix testScaleMatrix; + testScaleMatrix.SetIdentityAndScale( Vector3( 1.0, -1.0, 1.0 ) ); + Matrix actualScaleMatrix; + + //Test to see if the object has been successfully loaded. + DALI_TEST_CHECK( gl.GetUniformValue( "uObjectMatrix", actualScaleMatrix ) ); + DALI_TEST_EQUALS( actualScaleMatrix, testScaleMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION ); + + controlRenderer.SetOffStage( actor ); + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; } -int UtcDaliRendererFactoryResetRenderer3(void) +//Test if mesh renderer handles the case of lacking an object file. +int UtcDaliRendererFactoryGetMeshRendererN1(void) { ToolkitTestApplication application; - tet_infoline( "UtcDaliRendererFactoryResetRenderer3" ); + tet_infoline( "UtcDaliRendererFactoryGetMeshRendererN1: Request mesh renderer without object file" ); + + RendererFactory factory = RendererFactory::Get(); + DALI_TEST_CHECK( factory ); + + //Set up renderer properties. + Property::Map propertyMap; + propertyMap.Insert( "rendererType", "MESH" ); + propertyMap.Insert( "materialUrl", TEST_MTL_FILE_NAME ); + propertyMap.Insert( "texturesPath", TEST_RESOURCE_DIR "/" ); + + ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap ); + DALI_TEST_CHECK( controlRenderer ); + //Add renderer to an actor on stage. Actor actor = Actor::New(); - actor.SetSize(200.f, 200.f); + actor.SetSize( 200.f, 200.f ); Stage::GetCurrent().Add( actor ); + controlRenderer.SetSize( Vector2( 200.f, 200.f ) ); + controlRenderer.SetOnStage( actor ); + + DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); + + //Attempt to render to queue resource load requests. + application.SendNotification(); + application.Render( 0 ); + + //Tell the platform abstraction that the required resources have been loaded. + TestPlatformAbstraction& platform = application.GetPlatform(); + platform.SetAllResourceRequestsAsLoaded(); + + //Render again to upload the now-loaded textures. + application.SendNotification(); + application.Render( 0 ); + + TestGlAbstraction& gl = application.GetGlAbstraction(); + + //Test to see if the object has not been loaded, as expected. + Matrix scaleMatrix; + DALI_TEST_CHECK( ! gl.GetUniformValue( "uObjectMatrix", scaleMatrix ) ); + + controlRenderer.SetOffStage( actor ); + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); + + END_TEST; +} + +//Test if mesh renderer handles the case of being passed invalid material and images urls. +int UtcDaliRendererFactoryGetMeshRendererN2(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliRendererFactoryGetMeshRendererN2: Request mesh renderer with invalid material and images urls" ); + RendererFactory factory = RendererFactory::Get(); DALI_TEST_CHECK( factory ); - // Get renderer for rendering a resource image - Image resourceImage = ResourceImage::New(TEST_IMAGE_FILE_NAME); - ControlRenderer controlRenderer = factory.GetControlRenderer( resourceImage ); + //Set up renderer properties. + Property::Map propertyMap; + propertyMap.Insert( "rendererType", "MESH" ); + propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME ); + propertyMap.Insert( "materialUrl", "invalid" ); + propertyMap.Insert( "texturesPath", "also invalid" ); + + ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap ); DALI_TEST_CHECK( controlRenderer ); - controlRenderer.SetSize(Vector2(200.f, 200.f)); + + //Add renderer to an actor on stage. + Actor actor = Actor::New(); + actor.SetSize( 200.f, 200.f ); + Stage::GetCurrent().Add( actor ); + controlRenderer.SetSize( Vector2( 200.f, 200.f ) ); controlRenderer.SetOnStage( actor ); - application.SendNotification(); - application.Render(); DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); - DALI_TEST_CHECK( actor.GetRendererAt(0u).GetMaterial().GetNumberOfTextures() == 1 ); - // reset the renderer to renderer a svg image - factory.ResetRenderer( controlRenderer, actor, TEST_SVG_FILE_NAME, ImageDimensions( 100, 100 ) ); + //Attempt to render to queue resource load requests. application.SendNotification(); - application.Render(); + application.Render( 0 ); + + //Tell the platform abstraction that the required resources have been loaded. + TestPlatformAbstraction& platform = application.GetPlatform(); + platform.SetAllResourceRequestsAsLoaded(); + + //Render again to upload the now-loaded textures. + application.SendNotification(); + application.Render( 0 ); + + TestGlAbstraction& gl = application.GetGlAbstraction(); + + //Test to see if the object has not been loaded, as expected. + Matrix scaleMatrix; + DALI_TEST_CHECK( ! gl.GetUniformValue( "uObjectMatrix", scaleMatrix ) ); + + controlRenderer.SetOffStage( actor ); + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); + + END_TEST; +} + +//Test if mesh renderer handles the case of being passed an invalid object url +int UtcDaliRendererFactoryGetMeshRendererN3(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliRendererFactoryGetMeshRendererN3: Request mesh renderer with invalid object url" ); + + RendererFactory factory = RendererFactory::Get(); + DALI_TEST_CHECK( factory ); + + //Set up renderer properties. + Property::Map propertyMap; + propertyMap.Insert( "rendererType", "MESH" ); + propertyMap.Insert( "objectUrl", "invalid" ); + propertyMap.Insert( "materialUrl", TEST_MTL_FILE_NAME ); + propertyMap.Insert( "texturesPath", TEST_RESOURCE_DIR "/" ); + + ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap ); + DALI_TEST_CHECK( controlRenderer ); + + //Add renderer to an actor on stage. + Actor actor = Actor::New(); + actor.SetSize( 200.f, 200.f ); + Stage::GetCurrent().Add( actor ); + controlRenderer.SetSize( Vector2( 200.f, 200.f ) ); + controlRenderer.SetOnStage( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); - // texture is not added until the rasterization completed. - DALI_TEST_CHECK( actor.GetRendererAt(0u).GetMaterial().GetNumberOfTextures() == 0 ); - EventThreadCallback* eventTrigger = EventThreadCallback::Get(); - CallbackBase* callback = eventTrigger->GetCallback(); + //Attempt to render to queue resource load requests. + application.SendNotification(); + application.Render( 0 ); - eventTrigger->WaitingForTrigger( 1 );// waiting until the svg image is rasterized. - CallbackBase::Execute( *callback ); + //Tell the platform abstraction that the required resources have been loaded. + TestPlatformAbstraction& platform = application.GetPlatform(); + platform.SetAllResourceRequestsAsLoaded(); + + //Render again to upload the now-loaded textures. + application.SendNotification(); + application.Render( 0 ); + + TestGlAbstraction& gl = application.GetGlAbstraction(); + + //Test to see if the object has not been loaded, as expected. + Matrix scaleMatrix; + DALI_TEST_CHECK( ! gl.GetUniformValue( "uObjectMatrix", scaleMatrix ) ); + + controlRenderer.SetOffStage( actor ); + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); + + END_TEST; +} + +//Creates a primitive renderer with the given property map and tests to see if it correctly loads in the given application. +void TestPrimitiveRendererWithProperties( Property::Map& propertyMap, ToolkitTestApplication& application ) +{ + RendererFactory factory = RendererFactory::Get(); + DALI_TEST_CHECK( factory ); + + //Create a primitive renderer. + ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap ); + DALI_TEST_CHECK( controlRenderer ); + + //Create an actor on stage to house the renderer. + Actor actor = Actor::New(); + actor.SetSize( 200.f, 200.f ); + Stage::GetCurrent().Add( actor ); + controlRenderer.SetSize( Vector2( 200.f, 200.f ) ); + controlRenderer.SetOnStage( actor ); + + //Ensure set on stage. + DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); + + //Tell test application to load the renderer. + application.SendNotification(); + application.Render(0); + + Matrix testScaleMatrix; + testScaleMatrix.SetIdentityAndScale( Vector3( 1.0, -1.0, 1.0 ) ); + Matrix actualScaleMatrix; + + //Test to see if the object has been successfully loaded. + DALI_TEST_CHECK( application.GetGlAbstraction().GetUniformValue( "uObjectMatrix", actualScaleMatrix ) ); + DALI_TEST_EQUALS( actualScaleMatrix, testScaleMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION ); + + //Finish by setting off stage, and ensuring this was successful. + controlRenderer.SetOffStage( actor ); + DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); +} + +//Test if primitive shape loads correctly when supplied with only the bare minimum requirements, the shape to use. +int UtcDaliRendererFactoryGetPrimitiveRenderer1(void) +{ + //Set up test application first, so everything else can be handled. + ToolkitTestApplication application; + + tet_infoline( "UtcDaliRendererFactoryGetPrimitiveRenderer1: Request primitive renderer with a shape only" ); + + //Set up renderer properties. + Property::Map propertyMap; + propertyMap.Insert( "rendererType", "PRIMITIVE" ); + propertyMap.Insert( "shape", "CUBE" ); + + //Test to see if shape loads correctly. + TestPrimitiveRendererWithProperties( propertyMap, application ); + + END_TEST; +} + +//Test if primitive shape loads correctly when supplied with all possible parameters +int UtcDaliRendererFactoryGetPrimitiveRenderer2(void) +{ + //Set up test application first, so everything else can be handled. + ToolkitTestApplication application; + + tet_infoline( "UtcDaliRendererFactoryGetPrimitiveRenderer2: Request primitive renderer with everything" ); + + //Set up renderer properties. + Property::Map propertyMap; + propertyMap.Insert( "rendererType", "PRIMITIVE" ); + propertyMap.Insert( "shape", "CUBE" ); + propertyMap.Insert( "color", Vector4( 0.5, 0.5, 0.5, 1.0 ) ); + propertyMap.Insert( "slices", 10 ); + propertyMap.Insert( "stacks", 20 ); + propertyMap.Insert( "scaleTopRadius", 30.0f ); + propertyMap.Insert( "scaleBottomRadius", 40.0f ); + propertyMap.Insert( "scaleHeight", 50.0f ); + propertyMap.Insert( "scaleRadius", 60.0f ); + propertyMap.Insert( "bevelPercentage", 0.7f ); + + //Test to see if shape loads correctly. + TestPrimitiveRendererWithProperties( propertyMap, application ); + + END_TEST; +} + +//Test if primitive shape loads a sphere correctly. +int UtcDaliRendererFactoryGetPrimitiveRenderer3(void) +{ + //Set up test application first, so everything else can be handled. + ToolkitTestApplication application; + + tet_infoline( "UtcDaliRendererFactoryGetPrimitiveRenderer3: Request primitive renderer to display a sphere" ); + + //Set up renderer properties. + Property::Map propertyMap; + propertyMap.Insert( "rendererType", "PRIMITIVE" ); + propertyMap.Insert( "shape", "SPHERE" ); + propertyMap.Insert( "color", Vector4( 0.5, 0.5, 0.5, 1.0 ) ); + propertyMap.Insert( "slices", 10 ); + propertyMap.Insert( "stacks", 20 ); + + //Test to see if shape loads correctly. + TestPrimitiveRendererWithProperties( propertyMap, application ); + + END_TEST; +} + +//Test if primitive shape loads a conic section correctly. +int UtcDaliRendererFactoryGetPrimitiveRenderer4(void) +{ + //Set up test application first, so everything else can be handled. + ToolkitTestApplication application; + + tet_infoline( "UtcDaliRendererFactoryGetPrimitiveRenderer4: Request primitive renderer to display a conic section" ); + + //Set up renderer properties. + Property::Map propertyMap; + propertyMap.Insert( "rendererType", "PRIMITIVE" ); + propertyMap.Insert( "shape", "CONICAL_FRUSTRUM" ); + propertyMap.Insert( "color", Vector4( 0.5, 0.5, 0.5, 1.0 ) ); + propertyMap.Insert( "slices", 10 ); + propertyMap.Insert( "scaleTopRadius", 30.0f ); + propertyMap.Insert( "scaleBottomRadius", 40.0f ); + propertyMap.Insert( "scaleHeight", 50.0f ); + + //Test to see if shape loads correctly. + TestPrimitiveRendererWithProperties( propertyMap, application ); + + END_TEST; +} + +//Test if primitive shape loads a bevelled cube correctly. +int UtcDaliRendererFactoryGetPrimitiveRenderer5(void) +{ + //Set up test application first, so everything else can be handled. + ToolkitTestApplication application; + + tet_infoline( "UtcDaliRendererFactoryGetPrimitiveRenderer5: Request primitive renderer to display a bevelled cube" ); + + //Set up renderer properties. + Property::Map propertyMap; + propertyMap.Insert( "rendererType", "PRIMITIVE" ); + propertyMap.Insert( "shape", "BEVELLED_CUBE" ); + propertyMap.Insert( "color", Vector4( 0.5, 0.5, 0.5, 1.0 ) ); + propertyMap.Insert( "bevelPercentage", 0.7f ); + + //Test to see if shape loads correctly. + TestPrimitiveRendererWithProperties( propertyMap, application ); + + END_TEST; +} + +//Test if primitive shape loads an octahedron correctly. +int UtcDaliRendererFactoryGetPrimitiveRenderer6(void) +{ + //Set up test application first, so everything else can be handled. + ToolkitTestApplication application; + + tet_infoline( "UtcDaliRendererFactoryGetPrimitiveRenderer6: Request primitive renderer to display an octahedron" ); + + //Set up renderer properties. + Property::Map propertyMap; + propertyMap.Insert( "rendererType", "PRIMITIVE" ); + propertyMap.Insert( "shape", "OCTAHEDRON" ); + propertyMap.Insert( "color", Vector4( 0.5, 0.5, 0.5, 1.0 ) ); + + //Test to see if shape loads correctly. + TestPrimitiveRendererWithProperties( propertyMap, application ); + + END_TEST; +} + +//Test if primitive shape loads a cone correctly. +int UtcDaliRendererFactoryGetPrimitiveRenderer7(void) +{ + //Set up test application first, so everything else can be handled. + ToolkitTestApplication application; + + tet_infoline( "UtcDaliRendererFactoryGetPrimitiveRenderer7: Request primitive renderer to display a cone" ); + + //Set up renderer properties. + Property::Map propertyMap; + propertyMap.Insert( "rendererType", "PRIMITIVE" ); + propertyMap.Insert( "shape", "CONE" ); + propertyMap.Insert( "color", Vector4( 0.5, 0.5, 0.5, 1.0 ) ); + propertyMap.Insert( "slices", 10 ); + propertyMap.Insert( "scaleTopRadius", 30.0f ); + propertyMap.Insert( "scaleHeight", 50.0f ); + + //Test to see if shape loads correctly. + TestPrimitiveRendererWithProperties( propertyMap, application ); + + END_TEST; +} + +//Test if primitive shape loads correctly when light position is manually set. +int UtcDaliRendererFactoryGetPrimitiveRenderer8(void) +{ + //Set up test application first, so everything else can be handled. + ToolkitTestApplication application; + + tet_infoline( "UtcDaliRendererFactoryGetPrimitiveRenderer8: Request primitive renderer with set light position" ); + + //Set up renderer properties. + Property::Map propertyMap; + propertyMap.Insert( "rendererType", "PRIMITIVE" ); + propertyMap.Insert( "shape", "SPHERE" ); + propertyMap.Insert( "color", Vector4( 0.5, 0.5, 0.5, 1.0 ) ); + propertyMap.Insert( "uLightPosition", Vector3( 0.0, 1.0, 2.0 ) ); + + //Test to see if shape loads correctly. + TestPrimitiveRendererWithProperties( propertyMap, application ); + + END_TEST; +} + +//Test if primitive shape renderer handles the case of not being passed a specific shape to use. +int UtcDaliRendererFactoryGetPrimitiveRendererN1(void) +{ + //Set up test application first, so everything else can be handled. + ToolkitTestApplication application; + + tet_infoline( "UtcDaliRendererFactoryGetPrimitiveRendererN1: Request primitive renderer without shape" ); + + //Set up renderer properties, without supplying shape. + Property::Map propertyMap; + propertyMap.Insert( "rendererType", "PRIMITIVE" ); - DALI_TEST_CHECK( actor.GetRendererAt(0u).GetMaterial().GetNumberOfTextures() == 1 ); + //Test to see if shape loads regardless of missing input. + TestPrimitiveRendererWithProperties( propertyMap, application ); END_TEST; }