2 * Copyright (c) 2016 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include <dali-toolkit-test-suite-utils.h>
20 #include <toolkit-event-thread-callback.h>
21 #include <dali/public-api/rendering/renderer.h>
22 #include <dali/public-api/rendering/texture-set.h>
23 #include <dali/public-api/rendering/shader.h>
24 #include <dali-toolkit/devel-api/controls/renderer-factory/renderer-factory.h>
27 using namespace Dali::Toolkit;
31 typedef NinePatchImage::StretchRanges StretchRanges;
33 const char* TEST_IMAGE_FILE_NAME = "gallery_image_01.jpg";
34 const char* TEST_NPATCH_FILE_NAME = "gallery_image_01.9.png";
36 const char* TEST_SVG_FILE_NAME = TEST_RESOURCE_DIR "/svg1.svg";
37 const char* TEST_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube.obj";
38 const char* TEST_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal.mtl";
39 const char* TEST_SIMPLE_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal-Simple.mtl";
41 Integration::Bitmap* CreateBitmap( unsigned int imageWidth, unsigned int imageHeight, unsigned int initialColor, Pixel::Format pixelFormat )
43 Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_RETAIN );
44 Integration::PixelBuffer* pixbuffer = bitmap->GetPackedPixelsProfile()->ReserveBuffer( pixelFormat, imageWidth, imageHeight, imageWidth, imageHeight );
45 unsigned int bytesPerPixel = GetBytesPerPixel( pixelFormat );
47 memset( pixbuffer, initialColor, imageHeight * imageWidth * bytesPerPixel );
52 void InitialiseRegionsToZeroAlpha( Integration::Bitmap* image, unsigned int imageWidth, unsigned int imageHeight, Pixel::Format pixelFormat )
54 PixelBuffer* pixbuffer = image->GetBuffer();
55 unsigned int bytesPerPixel = GetBytesPerPixel( pixelFormat );
57 for( unsigned int row = 0; row < imageWidth; ++row )
59 unsigned int pixelOffset = row * bytesPerPixel;
60 pixbuffer[ pixelOffset + 3 ] = 0x00;
61 pixelOffset += ( imageHeight - 1 ) * imageWidth * bytesPerPixel;
62 pixbuffer[ pixelOffset + 3 ] = 0x00;
65 for ( unsigned int column = 0; column < imageHeight; ++column )
67 unsigned int pixelOffset = column * imageWidth * bytesPerPixel;
68 pixbuffer[ pixelOffset + 3 ] = 0x00;
69 pixelOffset += ( imageWidth -1 ) * bytesPerPixel;
70 pixbuffer[ pixelOffset + 3 ] = 0x00;
74 void AddStretchRegionsToImage( Integration::Bitmap* image, unsigned int imageWidth, unsigned int imageHeight, const StretchRanges& stretchRangesX, const StretchRanges& stretchRangesY, Pixel::Format pixelFormat )
76 PixelBuffer* pixbuffer = image->GetBuffer();
77 unsigned int bytesPerPixel = GetBytesPerPixel( pixelFormat );
79 for(StretchRanges::ConstIterator it = stretchRangesX.Begin(); it != stretchRangesX.End(); ++it)
81 const Uint16Pair& range = *it;
82 //since the stretch range is in the cropped image space, we need to offset by 1 to get it to the uncropped image space
83 for( unsigned int column = range.GetX() + 1u; column < range.GetY() + 1u; ++column )
85 unsigned int pixelOffset = column * bytesPerPixel;
86 pixbuffer[ pixelOffset ] = 0x00;
87 pixbuffer[ pixelOffset + 1 ] = 0x00;
88 pixbuffer[ pixelOffset + 2 ] = 0x00;
89 pixbuffer[ pixelOffset + 3 ] = 0xFF;
94 for(StretchRanges::ConstIterator it = stretchRangesY.Begin(); it != stretchRangesY.End(); ++it)
96 const Uint16Pair& range = *it;
97 //since the stretch range is in the cropped image space, we need to offset by 1 to get it to the uncropped image space
98 for( unsigned int row = range.GetX() + 1u; row < range.GetY() + 1u; ++row )
100 unsigned int pixelOffset = row * imageWidth * bytesPerPixel;
101 pixbuffer[ pixelOffset ] = 0x00;
102 pixbuffer[ pixelOffset + 1 ] = 0x00;
103 pixbuffer[ pixelOffset + 2 ] = 0x00;
104 pixbuffer[ pixelOffset + 3 ] = 0xFF;
109 void AddChildRegionsToImage( Integration::Bitmap* image, unsigned int imageWidth, unsigned int imageHeight, const Vector4& requiredChildRegion, Pixel::Format pixelFormat )
111 PixelBuffer* pixbuffer = image->GetBuffer();
112 unsigned int bytesPerPixel = GetBytesPerPixel( pixelFormat );
114 Integration::Bitmap::PackedPixelsProfile* srcProfile = image->GetPackedPixelsProfile();
115 unsigned int bufferStride = srcProfile->GetBufferStride();
117 // Add bottom child region
118 for( unsigned int column = requiredChildRegion.x; column < imageWidth - requiredChildRegion.z; ++column )
120 unsigned int pixelOffset = column * bytesPerPixel;
121 pixelOffset += ( imageHeight - 1 ) * bufferStride;
122 pixbuffer[ pixelOffset ] = 0x00;
123 pixbuffer[ pixelOffset + 1 ] = 0x00;
124 pixbuffer[ pixelOffset + 2 ] = 0x00;
125 pixbuffer[ pixelOffset + 3 ] = 0xFF;
128 // Add right child region
129 for ( unsigned int row = requiredChildRegion.y; row < imageHeight - requiredChildRegion.w; ++row )
131 unsigned int pixelOffset = row * bufferStride + ( imageWidth - 1 ) * bytesPerPixel;
132 pixbuffer[ pixelOffset ] = 0x00;
133 pixbuffer[ pixelOffset + 1 ] = 0x00;
134 pixbuffer[ pixelOffset + 2 ] = 0x00;
135 pixbuffer[ pixelOffset + 3 ] = 0xFF;
139 Integration::ResourcePointer CustomizeNinePatch( TestApplication& application,
140 unsigned int ninePatchImageWidth,
141 unsigned int ninePatchImageHeight,
142 const StretchRanges& stretchRangesX,
143 const StretchRanges& stretchRangesY,
144 bool addChildRegion = false,
145 Vector4 requiredChildRegion = Vector4::ZERO )
147 TestPlatformAbstraction& platform = application.GetPlatform();
149 Pixel::Format pixelFormat = Pixel::RGBA8888;
151 tet_infoline("Create Bitmap");
152 platform.SetClosestImageSize(Vector2( ninePatchImageWidth, ninePatchImageHeight));
153 Integration::Bitmap* bitmap = CreateBitmap( ninePatchImageWidth, ninePatchImageHeight, 0xFF, pixelFormat );
155 tet_infoline("Clear border regions");
156 InitialiseRegionsToZeroAlpha( bitmap, ninePatchImageWidth, ninePatchImageHeight, pixelFormat );
158 tet_infoline("Add Stretch regions to Bitmap");
159 AddStretchRegionsToImage( bitmap, ninePatchImageWidth, ninePatchImageHeight, stretchRangesX, stretchRangesY, pixelFormat );
163 tet_infoline("Add Child regions to Bitmap");
164 AddChildRegionsToImage( bitmap, ninePatchImageWidth, ninePatchImageHeight, requiredChildRegion, pixelFormat );
167 tet_infoline("Getting resource");
168 Integration::ResourcePointer resourcePtr(bitmap);
169 //platform.SetResourceLoaded( 0, Dali::Integration::ResourceBitmap, resourcePtr );
170 platform.SetSynchronouslyLoadedResource( resourcePtr);
175 void TestControlRendererRender( ToolkitTestApplication& application,
177 ControlRenderer& controlRenderer,
178 std::size_t expectedSamplers = 0,
179 ImageDimensions imageDimensions = ImageDimensions(),
180 Integration::ResourcePointer resourcePtr = Integration::ResourcePointer())
184 // set the image size, for test case, this needs to be set before loading started
185 application.GetPlatform().SetClosestImageSize( Vector2(imageDimensions.GetWidth(), imageDimensions.GetHeight()) );
188 actor.SetSize( 200.f, 200.f );
189 Stage::GetCurrent().Add( actor );
190 controlRenderer.SetSize( Vector2(200.f, 200.f) );
191 controlRenderer.SetOnStage( actor );
193 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
195 application.SendNotification();
196 application.Render();
200 Integration::ResourceRequest* request = application.GetPlatform().GetRequest();
203 application.GetPlatform().SetResourceLoaded(request->GetId(), request->GetType()->id, resourcePtr );
207 application.Render();
208 application.SendNotification();
212 DALI_TEST_CHECK( application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceFunc) ||
213 application.GetPlatform().WasCalled(TestPlatformAbstraction::LoadResourceSynchronouslyFunc ));
216 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
223 void dali_renderer_factory_startup(void)
225 test_return_value = TET_UNDEF;
228 void dali_renderer_factory_cleanup(void)
230 test_return_value = TET_PASS;
233 int UtcDaliRendererFactoryGet(void)
235 ToolkitTestApplication application;
236 tet_infoline( "UtcDaliRendererFactory" );
240 type = TypeRegistry::Get().GetTypeInfo( "RendererFactory" );
241 DALI_TEST_CHECK( type );
242 BaseHandle handle = type.CreateInstance();
243 DALI_TEST_CHECK( handle );
245 RendererFactory factory;
246 factory = RendererFactory::Get();
247 DALI_TEST_CHECK( factory );
249 RendererFactory newFactory = RendererFactory::Get();
250 DALI_TEST_CHECK( newFactory );
252 // Check that renderer factory is a singleton
253 DALI_TEST_CHECK(factory == newFactory);
258 int UtcDaliRendererFactoryCopyAndAssignment(void)
260 ToolkitTestApplication application;
261 tet_infoline( "UtcDaliRendererFactoryCopyAndAssignment" );
262 RendererFactory factory = RendererFactory::Get();
264 RendererFactory factoryCopy( factory );
265 DALI_TEST_CHECK(factory == factoryCopy);
267 RendererFactory emptyFactory;
268 RendererFactory emptyFactoryCopy( emptyFactory );
269 DALI_TEST_CHECK(emptyFactory == emptyFactoryCopy);
271 RendererFactory factoryEquals;
272 factoryEquals = factory;
273 DALI_TEST_CHECK(factory == factoryEquals);
275 RendererFactory emptyFactoryEquals;
276 emptyFactoryEquals = emptyFactory;
277 DALI_TEST_CHECK( emptyFactory == emptyFactoryEquals );
281 DALI_TEST_CHECK( factory = factoryCopy );
286 int UtcDaliRendererFactoryGetColorRenderer1(void)
288 ToolkitTestApplication application;
289 tet_infoline( "UtcDaliRendererFactoryGetColorRenderer1: Request color renderer with a Property::Map" );
291 RendererFactory factory = RendererFactory::Get();
292 DALI_TEST_CHECK( factory );
294 Property::Map propertyMap;
295 Vector4 testColor( 1.f, 0.5f, 0.3f, 0.2f );
296 propertyMap.Insert("rendererType", "color");
297 propertyMap.Insert("mixColor", testColor);
299 ControlRenderer controlRenderer = factory.CreateControlRenderer(propertyMap);
300 DALI_TEST_CHECK( controlRenderer );
302 Actor actor = Actor::New();
303 TestControlRendererRender( application, actor, controlRenderer );
305 Vector4 actualValue(Vector4::ZERO);
306 TestGlAbstraction& gl = application.GetGlAbstraction();
307 DALI_TEST_CHECK( gl.GetUniformValue<Vector4>( "mixColor", actualValue ) );
308 DALI_TEST_EQUALS( actualValue, testColor, TEST_LOCATION );
313 int UtcDaliRendererFactoryGetColorRenderer2(void)
315 ToolkitTestApplication application;
316 tet_infoline( "UtcDaliRendererFactoryGetColorRenderer2: Request color renderer with a Vector4" );
318 RendererFactory factory = RendererFactory::Get();
319 DALI_TEST_CHECK( factory );
321 Vector4 testColor( 1.f, 0.5f, 0.3f, 0.2f );
322 Dali::Property::Map map;
323 map[ "rendererType" ] = "color";
324 map[ "mixColor" ] = testColor;
325 ControlRenderer controlRenderer = factory.CreateControlRenderer( map );
326 DALI_TEST_CHECK( controlRenderer );
328 Actor actor = Actor::New();
329 TestControlRendererRender( application, actor, controlRenderer );
331 Vector4 actualValue(Vector4::ZERO);
332 TestGlAbstraction& gl = application.GetGlAbstraction();
333 DALI_TEST_CHECK( gl.GetUniformValue<Vector4>( "mixColor", actualValue ) );
334 DALI_TEST_EQUALS( actualValue, testColor, TEST_LOCATION );
336 controlRenderer.SetOffStage( actor );
337 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
342 int UtcDaliRendererFactoryGetBorderRenderer1(void)
344 ToolkitTestApplication application;
345 tet_infoline( "UtcDaliRendererFactoryGetBorderRenderer1: Request border renderer with a Property::Map" );
347 RendererFactory factory = RendererFactory::Get();
348 DALI_TEST_CHECK( factory );
350 Property::Map propertyMap;
351 Vector4 testColor( 1.f, 0.5f, 0.3f, 0.2f );
352 float testSize = 5.f;
353 propertyMap.Insert("rendererType", "border");
354 propertyMap.Insert("borderColor", testColor);
355 propertyMap.Insert("borderSize", testSize);
357 ControlRenderer controlRenderer = factory.CreateControlRenderer(propertyMap);
358 DALI_TEST_CHECK( controlRenderer );
360 Actor actor = Actor::New();
361 actor.SetSize(200.f, 200.f);
362 Stage::GetCurrent().Add( actor );
363 controlRenderer.SetSize(Vector2(200.f, 200.f));
364 controlRenderer.SetOnStage( actor );
366 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
367 int blendMode = actor.GetRendererAt(0u).GetProperty<int>( Renderer::Property::BLEND_MODE );
368 DALI_TEST_EQUALS( static_cast<BlendingMode::Type>(blendMode), BlendingMode::ON, TEST_LOCATION );
370 TestGlAbstraction& gl = application.GetGlAbstraction();
372 application.SendNotification();
373 application.Render(0);
375 Vector4 actualColor(Vector4::ZERO);
376 DALI_TEST_CHECK( gl.GetUniformValue<Vector4>( "borderColor", actualColor ) );
377 DALI_TEST_EQUALS( actualColor, testColor, TEST_LOCATION );
379 float actualSize = 0.f;
380 DALI_TEST_CHECK( gl.GetUniformValue<float>( "borderSize", actualSize ) );
381 DALI_TEST_EQUALS( actualSize, testSize, TEST_LOCATION );
383 controlRenderer.SetOffStage( actor );
384 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
389 int UtcDaliRendererFactoryGetBorderRenderer2(void)
391 ToolkitTestApplication application;
392 tet_infoline( "UtcDaliRendererFactoryGetBorderRenderer2: Request border renderer with a borderSize and a borderColor" );
394 RendererFactory factory = RendererFactory::Get();
395 DALI_TEST_CHECK( factory );
397 Vector4 testColor( 1.f, 0.5f, 0.3f, 1.f );
398 float testSize = 5.f;
400 Dali::Property::Map propertyMap;
401 propertyMap[ "rendererType" ] = "border";
402 propertyMap[ "borderColor" ] = testColor;
403 propertyMap[ "borderSize" ] = testSize;
404 ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap );
405 DALI_TEST_CHECK( controlRenderer );
407 Actor actor = Actor::New();
408 actor.SetSize(200.f, 200.f);
409 Stage::GetCurrent().Add( actor );
410 controlRenderer.SetSize(Vector2(200.f, 200.f));
411 controlRenderer.SetOnStage( actor );
413 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
415 TestGlAbstraction& gl = application.GetGlAbstraction();
417 application.SendNotification();
418 application.Render(0);
420 int blendMode = actor.GetRendererAt(0u).GetProperty<int>( Renderer::Property::BLEND_MODE );
421 DALI_TEST_EQUALS( static_cast<BlendingMode::Type>(blendMode), BlendingMode::AUTO, TEST_LOCATION );
423 Vector4 actualColor(Vector4::ZERO);
424 DALI_TEST_CHECK( gl.GetUniformValue<Vector4>( "borderColor", actualColor ) );
425 DALI_TEST_EQUALS( actualColor, testColor, TEST_LOCATION );
427 float actualSize = 0.f;
428 DALI_TEST_CHECK( gl.GetUniformValue<float>( "borderSize", actualSize ) );
429 DALI_TEST_EQUALS( actualSize, testSize, TEST_LOCATION );
431 controlRenderer.SetOffStage( actor );
433 // enable the anti-aliasing
434 Dali::Property::Map map;
435 map[ "rendererType" ] = "border";
436 map[ "borderColor" ] = testColor;
437 map[ "borderSize" ] = testSize;
438 map[ "antiAliasing" ] = true;
439 controlRenderer = factory.CreateControlRenderer( map );
440 controlRenderer.SetOnStage( actor );
442 application.SendNotification();
443 application.Render(0);
444 blendMode = actor.GetRendererAt(0u).GetProperty<int>( Renderer::Property::BLEND_MODE );
445 DALI_TEST_EQUALS( static_cast<BlendingMode::Type>(blendMode), BlendingMode::ON, TEST_LOCATION );
450 int UtcDaliRendererFactoryGetLinearGradientRenderer(void)
452 ToolkitTestApplication application;
453 tet_infoline("UtcDaliRendererFactoryGetRadialGradientRenderer");
455 RendererFactory factory = RendererFactory::Get();
456 DALI_TEST_CHECK( factory );
458 Property::Map propertyMap;
459 propertyMap.Insert("rendererType", "gradient");
461 Vector2 start(-1.f, -1.f);
462 Vector2 end(1.f, 1.f);
463 propertyMap.Insert("startPosition", start);
464 propertyMap.Insert("endPosition", end);
465 propertyMap.Insert("spreadMethod", "repeat");
467 Property::Array stopOffsets;
468 stopOffsets.PushBack( 0.2f );
469 stopOffsets.PushBack( 0.8f );
470 propertyMap.Insert("stopOffset", stopOffsets);
472 Property::Array stopColors;
473 stopColors.PushBack( Color::RED );
474 stopColors.PushBack( Color::GREEN );
475 propertyMap.Insert("stopColor", stopColors);
477 ControlRenderer controlRenderer = factory.CreateControlRenderer(propertyMap);
478 DALI_TEST_CHECK( controlRenderer );
480 // A lookup texture is generated and pass to shader as sampler
481 Actor actor = Actor::New();
482 TestControlRendererRender( application, actor, controlRenderer, 1u );
484 controlRenderer.SetOffStage( actor );
485 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
490 int UtcDaliRendererFactoryGetRadialGradientRenderer(void)
492 ToolkitTestApplication application;
493 tet_infoline("UtcDaliRendererFactoryGetRadialGradientRenderer");
495 RendererFactory factory = RendererFactory::Get();
496 DALI_TEST_CHECK( factory );
498 Property::Map propertyMap;
499 propertyMap.Insert("rendererType", "gradient");
501 Vector2 center(100.f, 100.f);
502 float radius = 100.f;
503 propertyMap.Insert("units", "userSpace");
504 propertyMap.Insert("center", center);
505 propertyMap.Insert("radius", radius);
507 Property::Array stopOffsets;
508 stopOffsets.PushBack( 0.0f );
509 stopOffsets.PushBack( 1.f );
510 propertyMap.Insert("stopOffset", stopOffsets);
512 Property::Array stopColors;
513 stopColors.PushBack( Color::RED );
514 stopColors.PushBack( Color::GREEN );
515 propertyMap.Insert("stopColor", stopColors);
517 ControlRenderer controlRenderer = factory.CreateControlRenderer(propertyMap);
518 DALI_TEST_CHECK( controlRenderer );
520 // A lookup texture is generated and pass to shader as sampler
521 Actor actor = Actor::New();
522 TestControlRendererRender( application, actor, controlRenderer, 1u );
524 Matrix3 alignMatrix( radius, 0.f, 0.f, 0.f, radius, 0.f, center.x, center.y, 1.f );
525 alignMatrix.Invert();
527 Matrix3 actualValue( Matrix3::IDENTITY );
528 TestGlAbstraction& gl = application.GetGlAbstraction();
529 DALI_TEST_CHECK( gl.GetUniformValue<Matrix3>( "uAlignmentMatrix", actualValue ) );
530 DALI_TEST_EQUALS( actualValue, alignMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION );
535 int UtcDaliRendererFactoryDefaultOffsetsGradientRenderer(void)
537 ToolkitTestApplication application;
538 tet_infoline("UtcDaliRendererFactoryGetRadialGradientRenderer");
540 RendererFactory factory = RendererFactory::Get();
541 DALI_TEST_CHECK( factory );
543 Property::Map propertyMap;
544 propertyMap.Insert("rendererType", "gradient");
546 Vector2 start(-1.f, -1.f);
547 Vector2 end(1.f, 1.f);
548 propertyMap.Insert("startPosition", start);
549 propertyMap.Insert("endPosition", end);
550 propertyMap.Insert("spreadMethod", "repeat");
552 Property::Array stopColors;
553 stopColors.PushBack( Color::RED );
554 stopColors.PushBack( Color::GREEN );
555 propertyMap.Insert("stopColor", stopColors);
557 ControlRenderer controlRenderer = factory.CreateControlRenderer(propertyMap);
558 DALI_TEST_CHECK( controlRenderer );
560 // A lookup texture is generated and pass to shader as sampler
561 Actor actor = Actor::New();
562 TestControlRendererRender( application, actor, controlRenderer, 1u );
564 controlRenderer.SetOffStage( actor );
565 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
570 int UtcDaliRendererFactoryGetImageRenderer1(void)
572 ToolkitTestApplication application;
573 tet_infoline( "UtcDaliRendererFactoryGetImageRenderer1: Request image renderer with a Property::Map" );
575 RendererFactory factory = RendererFactory::Get();
576 DALI_TEST_CHECK( factory );
578 Property::Map propertyMap;
579 propertyMap.Insert( "rendererType", "image" );
580 propertyMap.Insert( "url", TEST_IMAGE_FILE_NAME );
582 ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap );
583 DALI_TEST_CHECK( controlRenderer );
585 Actor actor = Actor::New();
586 // For tesing the LoadResourceFunc is called, a big image size should be set, so the atlasing is not applied.
587 // Image with a size smaller than 512*512 will be uploaded as a part of the atlas.
590 const int height=513;
591 TestGlAbstraction& gl = application.GetGlAbstraction();
592 TraceCallStack& textureTrace = gl.GetTextureTrace();
593 textureTrace.Enable(true);
595 Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_DISCARD );
596 bitmap->GetPackedPixelsProfile()->ReserveBuffer( Pixel::RGBA8888, width, height,width, height );
598 TestControlRendererRender( application, actor, controlRenderer, 1u,
599 ImageDimensions(width, height),
600 Integration::ResourcePointer( bitmap ) );
602 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
604 controlRenderer.SetOffStage( actor );
605 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
610 int UtcDaliRendererFactoryGetImageRenderer2(void)
612 ToolkitTestApplication application;
613 tet_infoline( "UtcDaliRendererFactoryGetImageRenderer2: Request image renderer with an image handle" );
615 RendererFactory factory = RendererFactory::Get();
616 DALI_TEST_CHECK( factory );
618 Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME);
619 ControlRenderer controlRenderer = factory.CreateControlRenderer( image );
621 Actor actor = Actor::New();
622 // For tesing the LoadResourceFunc is called, a big image size should be set, so the atlasing is not applied.
623 // Image with a size smaller than 512*512 will be uploaded as a part of the atlas.
626 const int height=513;
628 Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_DISCARD );
629 bitmap->GetPackedPixelsProfile()->ReserveBuffer( Pixel::RGBA8888, width, height,width, height );
631 TestGlAbstraction& gl = application.GetGlAbstraction();
632 TraceCallStack& textureTrace = gl.GetTextureTrace();
633 textureTrace.Enable(true);
635 TestControlRendererRender( application, actor, controlRenderer, 1u,
636 ImageDimensions(width, height),
637 Integration::ResourcePointer(bitmap) );
639 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
644 int UtcDaliRendererFactoryGetNPatchRenderer1(void)
646 ToolkitTestApplication application;
647 tet_infoline( "UtcDaliRendererFactoryGetNPatchRenderer1: Request 9-patch renderer with a Property::Map" );
649 RendererFactory factory = RendererFactory::Get();
650 DALI_TEST_CHECK( factory );
652 const unsigned int ninePatchImageHeight = 18;
653 const unsigned int ninePatchImageWidth = 28;
654 StretchRanges stretchRangesX;
655 stretchRangesX.PushBack( Uint16Pair( 2, 3 ) );
656 StretchRanges stretchRangesY;
657 stretchRangesY.PushBack( Uint16Pair( 4, 5 ) );
658 Integration::ResourcePointer ninePatchResource = CustomizeNinePatch( application, ninePatchImageWidth, ninePatchImageHeight, stretchRangesX, stretchRangesY );
660 Property::Map propertyMap;
661 propertyMap.Insert( "rendererType", "image" );
662 propertyMap.Insert( "url", TEST_NPATCH_FILE_NAME );
664 tet_infoline( "whole grid" );
665 ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap );
666 DALI_TEST_CHECK( controlRenderer );
668 Actor actor = Actor::New();
670 TestGlAbstraction& gl = application.GetGlAbstraction();
671 TraceCallStack& textureTrace = gl.GetTextureTrace();
672 textureTrace.Enable(true);
674 TestControlRendererRender( application, actor, controlRenderer, 1u,
675 ImageDimensions(ninePatchImageWidth, ninePatchImageHeight),
678 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
681 propertyMap.Insert( "borderOnly", true );
683 tet_infoline( "border only" );
684 ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap );
685 DALI_TEST_CHECK( controlRenderer );
687 Actor actor = Actor::New();
689 TestGlAbstraction& gl = application.GetGlAbstraction();
690 TraceCallStack& textureTrace = gl.GetTextureTrace();
691 textureTrace.Enable(true);
693 TestControlRendererRender( application, actor, controlRenderer, 1u,
694 ImageDimensions(ninePatchImageWidth, ninePatchImageHeight),
697 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
703 int UtcDaliRendererFactoryGetNPatchRenderer2(void)
705 ToolkitTestApplication application;
706 tet_infoline( "UtcDaliRendererFactoryGetNPatchRenderer2: Request n-patch renderer with a Property::Map" );
708 RendererFactory factory = RendererFactory::Get();
709 DALI_TEST_CHECK( factory );
711 const unsigned int ninePatchImageWidth = 18;
712 const unsigned int ninePatchImageHeight = 28;
713 StretchRanges stretchRangesX;
714 stretchRangesX.PushBack( Uint16Pair( 2, 3 ) );
715 stretchRangesX.PushBack( Uint16Pair( 5, 7 ) );
716 stretchRangesX.PushBack( Uint16Pair( 12, 15 ) );
717 StretchRanges stretchRangesY;
718 stretchRangesY.PushBack( Uint16Pair( 4, 5 ) );
719 stretchRangesY.PushBack( Uint16Pair( 8, 12 ) );
720 stretchRangesY.PushBack( Uint16Pair( 15, 16 ) );
721 stretchRangesY.PushBack( Uint16Pair( 25, 27 ) );
722 Integration::ResourcePointer ninePatchResource = CustomizeNinePatch( application, ninePatchImageWidth, ninePatchImageHeight, stretchRangesX, stretchRangesY );
724 Property::Map propertyMap;
725 propertyMap.Insert( "rendererType", "image" );
726 propertyMap.Insert( "url", TEST_NPATCH_FILE_NAME );
728 ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap );
729 DALI_TEST_CHECK( controlRenderer );
731 Actor actor = Actor::New();
732 TestGlAbstraction& gl = application.GetGlAbstraction();
733 TraceCallStack& textureTrace = gl.GetTextureTrace();
734 textureTrace.Enable(true);
736 TestControlRendererRender( application, actor, controlRenderer, 1u,
737 ImageDimensions(ninePatchImageWidth, ninePatchImageHeight),
741 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
743 controlRenderer.SetOffStage( actor );
744 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
747 propertyMap.Insert( "borderOnly", true );
749 tet_infoline( "border only" );
750 ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap );
751 DALI_TEST_CHECK( controlRenderer );
753 TestGlAbstraction& gl = application.GetGlAbstraction();
754 TraceCallStack& textureTrace = gl.GetTextureTrace();
755 textureTrace.Enable(true);
756 Actor actor = Actor::New();
757 TestControlRendererRender( application, actor, controlRenderer, 1u,
758 ImageDimensions(ninePatchImageWidth, ninePatchImageHeight),
762 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
764 controlRenderer.SetOffStage( actor );
765 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
771 int UtcDaliRendererFactoryGetNPatchRenderer3(void)
773 ToolkitTestApplication application;
774 tet_infoline( "UtcDaliRendererFactoryGetNPatchRenderer3: Request 9-patch renderer with an image url" );
776 RendererFactory factory = RendererFactory::Get();
777 DALI_TEST_CHECK( factory );
779 const unsigned int ninePatchImageHeight = 18;
780 const unsigned int ninePatchImageWidth = 28;
781 StretchRanges stretchRangesX;
782 stretchRangesX.PushBack( Uint16Pair( 2, 3 ) );
783 StretchRanges stretchRangesY;
784 stretchRangesY.PushBack( Uint16Pair( 4, 5 ) );
785 Integration::ResourcePointer ninePatchResource = CustomizeNinePatch( application, ninePatchImageWidth, ninePatchImageHeight, stretchRangesX, stretchRangesY );
787 ControlRenderer controlRenderer = factory.CreateControlRenderer( TEST_NPATCH_FILE_NAME, ImageDimensions() );
788 DALI_TEST_CHECK( controlRenderer );
790 Actor actor = Actor::New();
792 TestGlAbstraction& gl = application.GetGlAbstraction();
793 TraceCallStack& textureTrace = gl.GetTextureTrace();
794 textureTrace.Enable(true);
796 TestControlRendererRender( application, actor, controlRenderer, 1u,
797 ImageDimensions(ninePatchImageWidth, ninePatchImageHeight),
800 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
805 int UtcDaliRendererFactoryGetNPatchRenderer4(void)
807 ToolkitTestApplication application;
808 tet_infoline( "UtcDaliRendererFactoryGetNPatchRenderer4: Request n-patch renderer with an image url" );
810 RendererFactory factory = RendererFactory::Get();
811 DALI_TEST_CHECK( factory );
813 const unsigned int ninePatchImageHeight = 18;
814 const unsigned int ninePatchImageWidth = 28;
815 StretchRanges stretchRangesX;
816 stretchRangesX.PushBack( Uint16Pair( 2, 3 ) );
817 stretchRangesX.PushBack( Uint16Pair( 5, 7 ) );
818 stretchRangesX.PushBack( Uint16Pair( 12, 15 ) );
819 StretchRanges stretchRangesY;
820 stretchRangesY.PushBack( Uint16Pair( 4, 5 ) );
821 stretchRangesY.PushBack( Uint16Pair( 8, 12 ) );
822 stretchRangesY.PushBack( Uint16Pair( 15, 16 ) );
823 stretchRangesY.PushBack( Uint16Pair( 25, 27 ) );
824 Integration::ResourcePointer ninePatchResource = CustomizeNinePatch( application, ninePatchImageWidth, ninePatchImageHeight, stretchRangesX, stretchRangesY );
826 ControlRenderer controlRenderer = factory.CreateControlRenderer( TEST_NPATCH_FILE_NAME, ImageDimensions() );
827 DALI_TEST_CHECK( controlRenderer );
829 Actor actor = Actor::New();
831 TestGlAbstraction& gl = application.GetGlAbstraction();
832 TraceCallStack& textureTrace = gl.GetTextureTrace();
833 textureTrace.Enable(true);
835 TestControlRendererRender( application, actor, controlRenderer, 1u,
836 ImageDimensions(ninePatchImageWidth, ninePatchImageHeight),
839 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
844 int UtcDaliRendererFactoryGetNPatchRendererN1(void)
846 //This should still load but display an error image
848 ToolkitTestApplication application;
849 tet_infoline( "UtcDaliRendererFactoryGetNPatchRendererN: Request n-patch renderer with an invalid image url" );
851 RendererFactory factory = RendererFactory::Get();
852 DALI_TEST_CHECK( factory );
854 ControlRenderer controlRenderer = factory.CreateControlRenderer( "ERROR.9.jpg", ImageDimensions() );
855 DALI_TEST_CHECK( controlRenderer );
857 Actor actor = Actor::New();
859 //The testkit still has to load a bitmap for the broken renderer image
860 Integration::Bitmap* bitmap = Integration::Bitmap::New(Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_DISCARD);
861 bitmap->GetPackedPixelsProfile()->ReserveBuffer( Pixel::RGBA8888, 100, 100, 100, 100 );
863 TestGlAbstraction& gl = application.GetGlAbstraction();
864 TraceCallStack& textureTrace = gl.GetTextureTrace();
865 textureTrace.Enable(true);
867 TestControlRendererRender( application, actor, controlRenderer, 1u,
869 Integration::ResourcePointer(bitmap) );
871 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
876 int UtcDaliRendererFactoryGetNPatchRendererN2(void)
878 //This should still load but display an error image
880 ToolkitTestApplication application;
881 tet_infoline( "UtcDaliRendererFactoryGetNPatchRendererN: Request n-patch renderer with an invalid Property::Map" );
883 RendererFactory factory = RendererFactory::Get();
884 DALI_TEST_CHECK( factory );
886 Property::Map propertyMap;
887 propertyMap.Insert( "rendererType", 111 );
888 propertyMap.Insert( "url", "ERROR.9.jpg" );
890 ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap );
891 DALI_TEST_CHECK( controlRenderer );
893 Actor actor = Actor::New();
895 //The testkit still has to load a bitmap for the broken renderer image
896 Integration::Bitmap* bitmap = Integration::Bitmap::New(Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_DISCARD);
897 bitmap->GetPackedPixelsProfile()->ReserveBuffer( Pixel::RGBA8888, 100, 100, 100, 100 );
899 TestGlAbstraction& gl = application.GetGlAbstraction();
900 TraceCallStack& textureTrace = gl.GetTextureTrace();
901 textureTrace.Enable(true);
903 TestControlRendererRender( application, actor, controlRenderer, 1u,
905 Integration::ResourcePointer(bitmap) );
907 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
912 int UtcDaliRendererFactoryGetSvgRenderer(void)
914 ToolkitTestApplication application;
915 tet_infoline( "UtcDaliRendererFactoryGetSvgRenderer: Request svg renderer with a svg url" );
917 RendererFactory factory = RendererFactory::Get();
918 ControlRenderer controlRenderer = factory.CreateControlRenderer( TEST_SVG_FILE_NAME, ImageDimensions() );
919 DALI_TEST_CHECK( controlRenderer );
921 TestGlAbstraction& gl = application.GetGlAbstraction();
922 TraceCallStack& textureTrace = gl.GetTextureTrace();
923 textureTrace.Enable(true);
925 Actor actor = Actor::New();
926 actor.SetSize( 200.f, 200.f );
927 Stage::GetCurrent().Add( actor );
928 controlRenderer.SetSize( Vector2(200.f, 200.f) );
929 controlRenderer.SetOnStage( actor );
930 application.SendNotification();
931 application.Render();
933 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
935 EventThreadCallback* eventTrigger = EventThreadCallback::Get();
936 CallbackBase* callback = eventTrigger->GetCallback();
938 eventTrigger->WaitingForTrigger( 1 );// waiting until the svg image is rasterized.
939 CallbackBase::Execute( *callback );
941 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
943 // waiting for the resource uploading
944 application.SendNotification();
945 application.Render();
947 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
952 //Test if mesh loads correctly when supplied with only the bare minimum requirements, an object file.
953 int UtcDaliRendererFactoryGetMeshRenderer1(void)
955 ToolkitTestApplication application;
956 tet_infoline( "UtcDaliRendererFactoryGetMeshRenderer1: Request mesh renderer with a valid object file only" );
958 RendererFactory factory = RendererFactory::Get();
959 DALI_TEST_CHECK( factory );
961 //Set up renderer properties.
962 Property::Map propertyMap;
963 propertyMap.Insert( "rendererType", "mesh" );
964 propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME );
966 ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap );
967 DALI_TEST_CHECK( controlRenderer );
969 Actor actor = Actor::New();
970 actor.SetSize( 200.f, 200.f );
971 Stage::GetCurrent().Add( actor );
972 controlRenderer.SetSize( Vector2( 200.f, 200.f ) );
973 controlRenderer.SetOnStage( actor );
975 application.SendNotification();
976 application.Render( 0 );
978 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
980 //Tell the platform abstraction that the required resources have been loaded.
981 TestPlatformAbstraction& platform = application.GetPlatform();
982 platform.SetAllResourceRequestsAsLoaded();
984 //Render again to upload the now-loaded textures.
985 application.SendNotification();
986 application.Render( 0 );
988 TestGlAbstraction& gl = application.GetGlAbstraction();
990 Matrix testScaleMatrix;
991 testScaleMatrix.SetIdentityAndScale( Vector3( 1.0, -1.0, 1.0 ) );
992 Matrix actualScaleMatrix;
994 //Test to see if the object has been successfully loaded.
995 DALI_TEST_CHECK( gl.GetUniformValue<Matrix>( "uObjectMatrix", actualScaleMatrix ) );
996 DALI_TEST_EQUALS( actualScaleMatrix, testScaleMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION );
998 controlRenderer.SetOffStage( actor );
999 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
1004 //Test if mesh loads correctly when supplied with an object file as well as a blank material file and images directory.
1005 int UtcDaliRendererFactoryGetMeshRenderer2(void)
1007 ToolkitTestApplication application;
1008 tet_infoline( "UtcDaliRendererFactoryGetMeshRenderer2: Request mesh renderer with blank material file and images directory" );
1010 RendererFactory factory = RendererFactory::Get();
1011 DALI_TEST_CHECK( factory );
1013 //Set up renderer properties.
1014 Property::Map propertyMap;
1015 propertyMap.Insert( "rendererType", "mesh" );
1016 propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME );
1017 propertyMap.Insert( "materialUrl", "" );
1018 propertyMap.Insert( "texturesPath", "" );
1020 ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap );
1021 DALI_TEST_CHECK( controlRenderer );
1023 //Add renderer to an actor on stage.
1024 Actor actor = Actor::New();
1025 actor.SetSize( 200.f, 200.f );
1026 Stage::GetCurrent().Add( actor );
1027 controlRenderer.SetSize( Vector2( 200.f, 200.f ) );
1028 controlRenderer.SetOnStage( actor );
1030 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
1032 //Attempt to render to queue resource load requests.
1033 application.SendNotification();
1034 application.Render( 0 );
1036 //Tell the platform abstraction that the required resources have been loaded.
1037 TestPlatformAbstraction& platform = application.GetPlatform();
1038 platform.SetAllResourceRequestsAsLoaded();
1040 //Render again to upload the now-loaded textures.
1041 application.SendNotification();
1042 application.Render( 0 );
1044 TestGlAbstraction& gl = application.GetGlAbstraction();
1046 Matrix testScaleMatrix;
1047 testScaleMatrix.SetIdentityAndScale( Vector3( 1.0, -1.0, 1.0 ) );
1048 Matrix actualScaleMatrix;
1050 //Test to see if the object has been successfully loaded.
1051 DALI_TEST_CHECK( gl.GetUniformValue<Matrix>( "uObjectMatrix", actualScaleMatrix ) );
1052 DALI_TEST_EQUALS( actualScaleMatrix, testScaleMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1054 controlRenderer.SetOffStage( actor );
1055 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
1060 //Test if mesh loads correctly when supplied with all parameters, an object file, a material file and a directory location.
1061 int UtcDaliRendererFactoryGetMeshRenderer3(void)
1063 ToolkitTestApplication application;
1064 tet_infoline( "UtcDaliRendererFactoryGetMeshRenderer3: Request mesh renderer with all parameters correct" );
1066 RendererFactory factory = RendererFactory::Get();
1067 DALI_TEST_CHECK( factory );
1069 //Set up renderer properties.
1070 Property::Map propertyMap;
1071 propertyMap.Insert( "rendererType", "mesh" );
1072 propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME );
1073 propertyMap.Insert( "materialUrl", TEST_MTL_FILE_NAME );
1074 propertyMap.Insert( "texturesPath", TEST_RESOURCE_DIR "/" );
1076 ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap );
1077 DALI_TEST_CHECK( controlRenderer );
1079 //Add renderer to an actor on stage.
1080 Actor actor = Actor::New();
1081 actor.SetSize( 200.f, 200.f );
1082 Stage::GetCurrent().Add( actor );
1083 controlRenderer.SetSize( Vector2( 200.f, 200.f ) );
1084 controlRenderer.SetOnStage( actor );
1086 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
1088 //Attempt to render to queue resource load requests.
1089 application.SendNotification();
1090 application.Render( 0 );
1092 //Tell the platform abstraction that the required resources have been loaded.
1093 TestPlatformAbstraction& platform = application.GetPlatform();
1094 platform.SetAllResourceRequestsAsLoaded();
1096 //Render again to upload the now-loaded textures.
1097 application.SendNotification();
1098 application.Render( 0 );
1100 TestGlAbstraction& gl = application.GetGlAbstraction();
1102 Matrix testScaleMatrix;
1103 testScaleMatrix.SetIdentityAndScale( Vector3( 1.0, -1.0, 1.0 ) );
1104 Matrix actualScaleMatrix;
1106 //Test to see if the object has been successfully loaded.
1107 DALI_TEST_CHECK( gl.GetUniformValue<Matrix>( "uObjectMatrix", actualScaleMatrix ) );
1108 DALI_TEST_EQUALS( actualScaleMatrix, testScaleMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1110 controlRenderer.SetOffStage( actor );
1111 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
1116 //Test if mesh renderer can load a correctly supplied mesh without a normal map or gloss map in the material file.
1117 int UtcDaliRendererFactoryGetMeshRenderer4(void)
1119 ToolkitTestApplication application;
1120 tet_infoline( "UtcDaliRendererFactoryGetMeshRenderer4: Request mesh renderer with diffuse texture but not normal or gloss." );
1122 RendererFactory factory = RendererFactory::Get();
1123 DALI_TEST_CHECK( factory );
1125 //Set up renderer properties.
1126 Property::Map propertyMap;
1127 propertyMap.Insert( "rendererType", "mesh" );
1128 propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME );
1129 propertyMap.Insert( "materialUrl", TEST_SIMPLE_MTL_FILE_NAME );
1130 propertyMap.Insert( "texturesPath", TEST_RESOURCE_DIR "/" );
1132 ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap );
1133 DALI_TEST_CHECK( controlRenderer );
1135 //Add renderer to an actor on stage.
1136 Actor actor = Actor::New();
1137 actor.SetSize( 200.f, 200.f );
1138 Stage::GetCurrent().Add( actor );
1139 controlRenderer.SetSize( Vector2( 200.f, 200.f ) );
1140 controlRenderer.SetOnStage( actor );
1142 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
1144 //Attempt to render to queue resource load requests.
1145 application.SendNotification();
1146 application.Render( 0 );
1148 //Tell the platform abstraction that the required resources have been loaded.
1149 TestPlatformAbstraction& platform = application.GetPlatform();
1150 platform.SetAllResourceRequestsAsLoaded();
1152 //Render again to upload the now-loaded textures.
1153 application.SendNotification();
1154 application.Render( 0 );
1156 TestGlAbstraction& gl = application.GetGlAbstraction();
1158 Matrix testScaleMatrix;
1159 testScaleMatrix.SetIdentityAndScale( Vector3( 1.0, -1.0, 1.0 ) );
1160 Matrix actualScaleMatrix;
1162 //Test to see if the object has been successfully loaded.
1163 DALI_TEST_CHECK( gl.GetUniformValue<Matrix>( "uObjectMatrix", actualScaleMatrix ) );
1164 DALI_TEST_EQUALS( actualScaleMatrix, testScaleMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1166 controlRenderer.SetOffStage( actor );
1167 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
1172 //Test if mesh renderer handles the case of lacking an object file.
1173 int UtcDaliRendererFactoryGetMeshRendererN1(void)
1175 ToolkitTestApplication application;
1176 tet_infoline( "UtcDaliRendererFactoryGetMeshRendererN1: Request mesh renderer without object file" );
1178 RendererFactory factory = RendererFactory::Get();
1179 DALI_TEST_CHECK( factory );
1181 //Set up renderer properties.
1182 Property::Map propertyMap;
1183 propertyMap.Insert( "rendererType", "mesh" );
1184 propertyMap.Insert( "materialUrl", TEST_MTL_FILE_NAME );
1185 propertyMap.Insert( "texturesPath", TEST_RESOURCE_DIR "/" );
1187 ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap );
1188 DALI_TEST_CHECK( controlRenderer );
1190 //Add renderer to an actor on stage.
1191 Actor actor = Actor::New();
1192 actor.SetSize( 200.f, 200.f );
1193 Stage::GetCurrent().Add( actor );
1194 controlRenderer.SetSize( Vector2( 200.f, 200.f ) );
1195 controlRenderer.SetOnStage( actor );
1197 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
1199 //Attempt to render to queue resource load requests.
1200 application.SendNotification();
1201 application.Render( 0 );
1203 //Tell the platform abstraction that the required resources have been loaded.
1204 TestPlatformAbstraction& platform = application.GetPlatform();
1205 platform.SetAllResourceRequestsAsLoaded();
1207 //Render again to upload the now-loaded textures.
1208 application.SendNotification();
1209 application.Render( 0 );
1211 TestGlAbstraction& gl = application.GetGlAbstraction();
1213 //Test to see if the object has not been loaded, as expected.
1215 DALI_TEST_CHECK( ! gl.GetUniformValue<Matrix>( "uObjectMatrix", scaleMatrix ) );
1217 controlRenderer.SetOffStage( actor );
1218 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
1223 //Test if mesh renderer handles the case of being passed invalid material and images urls.
1224 int UtcDaliRendererFactoryGetMeshRendererN2(void)
1226 ToolkitTestApplication application;
1227 tet_infoline( "UtcDaliRendererFactoryGetMeshRendererN2: Request mesh renderer with invalid material and images urls" );
1229 RendererFactory factory = RendererFactory::Get();
1230 DALI_TEST_CHECK( factory );
1232 //Set up renderer properties.
1233 Property::Map propertyMap;
1234 propertyMap.Insert( "rendererType", "mesh" );
1235 propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME );
1236 propertyMap.Insert( "materialUrl", "invalid" );
1237 propertyMap.Insert( "texturesPath", "also invalid" );
1239 ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap );
1240 DALI_TEST_CHECK( controlRenderer );
1242 //Add renderer to an actor on stage.
1243 Actor actor = Actor::New();
1244 actor.SetSize( 200.f, 200.f );
1245 Stage::GetCurrent().Add( actor );
1246 controlRenderer.SetSize( Vector2( 200.f, 200.f ) );
1247 controlRenderer.SetOnStage( actor );
1249 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
1251 //Attempt to render to queue resource load requests.
1252 application.SendNotification();
1253 application.Render( 0 );
1255 //Tell the platform abstraction that the required resources have been loaded.
1256 TestPlatformAbstraction& platform = application.GetPlatform();
1257 platform.SetAllResourceRequestsAsLoaded();
1259 //Render again to upload the now-loaded textures.
1260 application.SendNotification();
1261 application.Render( 0 );
1263 TestGlAbstraction& gl = application.GetGlAbstraction();
1265 //Test to see if the object has not been loaded, as expected.
1267 DALI_TEST_CHECK( ! gl.GetUniformValue<Matrix>( "uObjectMatrix", scaleMatrix ) );
1269 controlRenderer.SetOffStage( actor );
1270 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
1275 //Test if mesh renderer handles the case of being passed an invalid object url
1276 int UtcDaliRendererFactoryGetMeshRendererN3(void)
1278 ToolkitTestApplication application;
1279 tet_infoline( "UtcDaliRendererFactoryGetMeshRendererN3: Request mesh renderer with invalid object url" );
1281 RendererFactory factory = RendererFactory::Get();
1282 DALI_TEST_CHECK( factory );
1284 //Set up renderer properties.
1285 Property::Map propertyMap;
1286 propertyMap.Insert( "rendererType", "mesh" );
1287 propertyMap.Insert( "objectUrl", "invalid" );
1288 propertyMap.Insert( "materialUrl", TEST_MTL_FILE_NAME );
1289 propertyMap.Insert( "texturesPath", TEST_RESOURCE_DIR "/" );
1291 ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap );
1292 DALI_TEST_CHECK( controlRenderer );
1294 //Add renderer to an actor on stage.
1295 Actor actor = Actor::New();
1296 actor.SetSize( 200.f, 200.f );
1297 Stage::GetCurrent().Add( actor );
1298 controlRenderer.SetSize( Vector2( 200.f, 200.f ) );
1299 controlRenderer.SetOnStage( actor );
1301 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
1303 //Attempt to render to queue resource load requests.
1304 application.SendNotification();
1305 application.Render( 0 );
1307 //Tell the platform abstraction that the required resources have been loaded.
1308 TestPlatformAbstraction& platform = application.GetPlatform();
1309 platform.SetAllResourceRequestsAsLoaded();
1311 //Render again to upload the now-loaded textures.
1312 application.SendNotification();
1313 application.Render( 0 );
1315 TestGlAbstraction& gl = application.GetGlAbstraction();
1317 //Test to see if the object has not been loaded, as expected.
1319 DALI_TEST_CHECK( ! gl.GetUniformValue<Matrix>( "uObjectMatrix", scaleMatrix ) );
1321 controlRenderer.SetOffStage( actor );
1322 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );