2 * Copyright (c) 2018 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-timer.h>
21 #include <toolkit-event-thread-callback.h>
22 #include <dali-toolkit/dali-toolkit.h>
23 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
24 #include <dali-toolkit/devel-api/visuals/image-visual-properties-devel.h>
25 #include <dali-toolkit/internal/visuals/npatch-loader.h>
26 #include <dali/devel-api/adaptor-framework/image-loading.h>
27 #include "dummy-control.h"
30 using namespace Dali::Toolkit;
34 typedef Toolkit::Internal::NPatchLoader::StretchRanges StretchRanges;
36 const char* TEST_9_PATCH_FILE_NAME = TEST_RESOURCE_DIR "/demo-tile-texture-focused.9.png";
37 const char* TEST_NPATCH_FILE_NAME = TEST_RESOURCE_DIR "/heartsframe.9.png";
38 const char* TEST_SVG_FILE_NAME = TEST_RESOURCE_DIR "/svg1.svg";
39 const char* TEST_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube.obj";
40 const char* TEST_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal.mtl";
41 const char* TEST_SIMPLE_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube-Points-Only.obj";
42 const char* TEST_SIMPLE_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal-Simple.mtl";
43 const char* TEST_AUX_IMAGE = TEST_RESOURCE_DIR "/folder_appicon_empty_bg.png";
44 const char* TEST_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/gallery-small-1.jpg";
46 // resolution: 50*50, frame count: 4, frame delay: 0.2 second for each frame
47 const char* TEST_GIF_FILE_NAME = TEST_RESOURCE_DIR "/anim.gif";
49 // resolution: 34*34, pixel format: RGBA8888
50 static const char* gImage_34_RGBA = TEST_RESOURCE_DIR "/icon-edit.png";
53 Property::Map DefaultTransform()
55 Property::Map transformMap;
57 .Add( Toolkit::Visual::Transform::Property::OFFSET, Vector2(0.0f, 0.0f) )
58 .Add( Toolkit::Visual::Transform::Property::SIZE, Vector2(1.0f, 1.0f) )
59 .Add( Toolkit::Visual::Transform::Property::ORIGIN, Toolkit::Align::CENTER )
60 .Add( Toolkit::Visual::Transform::Property::ANCHOR_POINT, Toolkit::Align::CENTER )
61 .Add( Toolkit::Visual::Transform::Property::OFFSET_POLICY, Vector2( Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::RELATIVE ) )
62 .Add( Toolkit::Visual::Transform::Property::SIZE_POLICY, Vector2( Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::RELATIVE ) );
66 void TestVisualRender( ToolkitTestApplication& application,
68 Visual::Base& visual )
70 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
71 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
73 actor.SetSize( 200.f, 200.f );
74 DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION );
76 Stage::GetCurrent().Add( actor );
78 application.SendNotification();
82 application.SendNotification();
84 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION );
90 void dali_visual_factory_startup(void)
92 test_return_value = TET_UNDEF;
95 void dali_visual_factory_cleanup(void)
97 test_return_value = TET_PASS;
100 int UtcDaliVisualFactoryGet(void)
102 ToolkitTestApplication application;
103 tet_infoline( "UtcDaliVisualFactory" );
107 type = TypeRegistry::Get().GetTypeInfo( "VisualFactory" );
108 DALI_TEST_CHECK( type );
109 BaseHandle handle = type.CreateInstance();
110 DALI_TEST_CHECK( handle );
112 VisualFactory factory;
113 factory = VisualFactory::Get();
114 DALI_TEST_CHECK( factory );
116 VisualFactory newFactory = VisualFactory::Get();
117 DALI_TEST_CHECK( newFactory );
119 // Check that visual factory is a singleton
120 DALI_TEST_CHECK(factory == newFactory);
125 int UtcDaliVisualFactoryCopyAndAssignment(void)
127 ToolkitTestApplication application;
128 tet_infoline( "UtcDaliVisualFactoryCopyAndAssignment" );
129 VisualFactory factory = VisualFactory::Get();
131 VisualFactory factoryCopy( factory );
132 DALI_TEST_CHECK(factory == factoryCopy);
134 VisualFactory emptyFactory;
135 VisualFactory emptyFactoryCopy( emptyFactory );
136 DALI_TEST_CHECK(emptyFactory == emptyFactoryCopy);
138 VisualFactory factoryEquals;
139 factoryEquals = factory;
140 DALI_TEST_CHECK(factory == factoryEquals);
142 VisualFactory emptyFactoryEquals;
143 emptyFactoryEquals = emptyFactory;
144 DALI_TEST_CHECK( emptyFactory == emptyFactoryEquals );
148 DALI_TEST_CHECK( factory = factoryCopy );
153 int UtcDaliVisualFactoryGetColorVisual1(void)
155 ToolkitTestApplication application;
156 tet_infoline( "UtcDaliVisualFactoryGetColorVisual1: Request color visual with a Property::Map" );
158 VisualFactory factory = VisualFactory::Get();
159 DALI_TEST_CHECK( factory );
161 Property::Map propertyMap;
162 Vector4 testColor( 1.f, 0.5f, 0.3f, 0.2f );
163 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
164 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, testColor);
166 Visual::Base visual = factory.CreateVisual(propertyMap);
167 DALI_TEST_CHECK( visual );
169 DummyControl actor = DummyControl::New(true);
170 TestVisualRender( application, actor, visual );
172 Vector3 actualValue(Vector4::ZERO);
173 Vector4 actualColor(Vector4::ZERO);
174 TestGlAbstraction& gl = application.GetGlAbstraction();
175 DALI_TEST_CHECK( gl.GetUniformValue<Vector3>( "mixColor", actualValue ) );
176 DALI_TEST_CHECK( gl.GetUniformValue<Vector4>( "uColor", actualColor ) );
177 DALI_TEST_EQUALS( actualValue, Vector3(testColor), TEST_LOCATION );
178 DALI_TEST_EQUALS( actualColor.a, testColor.a, TEST_LOCATION );
183 int UtcDaliVisualFactoryGetColorVisual2(void)
185 ToolkitTestApplication application;
186 tet_infoline( "UtcDaliVisualFactoryGetColorVisual2: Request color visual with a Vector4" );
188 VisualFactory factory = VisualFactory::Get();
189 DALI_TEST_CHECK( factory );
191 Vector4 testColor( 1.f, 0.5f, 0.3f, 0.2f );
192 Dali::Property::Map map;
193 map[ Toolkit::Visual::Property::TYPE ] = Visual::COLOR;
194 map[ ColorVisual::Property::MIX_COLOR ] = testColor;
195 Visual::Base visual = factory.CreateVisual( map );
196 DALI_TEST_CHECK( visual );
198 DummyControl actor = DummyControl::New(true);
199 TestVisualRender( application, actor, visual );
203 TestGlAbstraction& gl = application.GetGlAbstraction();
204 DALI_TEST_CHECK( gl.GetUniformValue<Vector3>( "mixColor", actualValue ) );
205 DALI_TEST_CHECK( gl.GetUniformValue<Vector4>( "uColor", actualColor ) );
206 DALI_TEST_EQUALS( actualValue, Vector3(testColor), TEST_LOCATION );
207 DALI_TEST_EQUALS( actualColor.a, testColor.a, TEST_LOCATION );
209 Stage::GetCurrent().Remove(actor);
210 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
215 int UtcDaliVisualFactoryGetBorderVisual1(void)
217 ToolkitTestApplication application;
218 tet_infoline( "UtcDaliVisualFactoryGetBorderVisual1: Request border visual with a Property::Map" );
220 VisualFactory factory = VisualFactory::Get();
221 DALI_TEST_CHECK( factory );
223 Property::Map propertyMap;
224 Vector4 testColor( 1.f, 0.5f, 0.3f, 0.2f );
225 float testSize = 5.f;
226 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
227 propertyMap.Insert(BorderVisual::Property::COLOR, testColor);
228 propertyMap.Insert(BorderVisual::Property::SIZE, testSize);
230 Visual::Base visual = factory.CreateVisual(propertyMap);
231 DALI_TEST_CHECK( visual );
233 DummyControl actor = DummyControl::New(true);
234 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
235 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
236 actor.SetSize(200.f, 200.f);
237 Stage::GetCurrent().Add( actor );
238 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
240 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
241 int blendMode = actor.GetRendererAt(0u).GetProperty<int>( Renderer::Property::BLEND_MODE );
242 DALI_TEST_EQUALS( static_cast<BlendMode::Type>(blendMode), BlendMode::ON, TEST_LOCATION );
244 TestGlAbstraction& gl = application.GetGlAbstraction();
246 application.SendNotification();
247 application.Render(0);
249 Vector4 actualColor(Vector4::ZERO);
250 DALI_TEST_CHECK( gl.GetUniformValue<Vector4>( "borderColor", actualColor ) );
251 DALI_TEST_EQUALS( actualColor, testColor, TEST_LOCATION );
253 float actualSize = 0.f;
254 DALI_TEST_CHECK( gl.GetUniformValue<float>( "borderSize", actualSize ) );
255 DALI_TEST_EQUALS( actualSize, testSize, TEST_LOCATION );
258 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
263 int UtcDaliVisualFactoryGetBorderVisual2(void)
265 ToolkitTestApplication application;
266 tet_infoline( "UtcDaliVisualFactoryGetBorderVisual2: Request border visual with a borderSize and a borderColor" );
268 VisualFactory factory = VisualFactory::Get();
269 DALI_TEST_CHECK( factory );
271 Vector4 testColor( 1.f, 0.5f, 0.3f, 1.f );
272 float testSize = 5.f;
274 Dali::Property::Map propertyMap;
275 propertyMap[ Toolkit::Visual::Property::TYPE ] = Visual::BORDER;
276 propertyMap[ BorderVisual::Property::COLOR ] = testColor;
277 propertyMap[ BorderVisual::Property::SIZE ] = testSize;
278 Visual::Base visual = factory.CreateVisual( propertyMap );
279 DALI_TEST_CHECK( visual );
281 DummyControl actor = DummyControl::New(true);
282 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
283 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
284 actor.SetSize(200.f, 200.f);
285 Stage::GetCurrent().Add( actor );
286 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
288 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
290 TestGlAbstraction& gl = application.GetGlAbstraction();
292 application.SendNotification();
293 application.Render(0);
295 int blendMode = actor.GetRendererAt(0u).GetProperty<int>( Renderer::Property::BLEND_MODE );
296 DALI_TEST_EQUALS( static_cast<BlendMode::Type>(blendMode), BlendMode::AUTO, TEST_LOCATION );
298 Vector4 actualColor(Vector4::ZERO);
299 DALI_TEST_CHECK( gl.GetUniformValue<Vector4>( "borderColor", actualColor ) );
300 DALI_TEST_EQUALS( actualColor, testColor, TEST_LOCATION );
302 float actualSize = 0.f;
303 DALI_TEST_CHECK( gl.GetUniformValue<float>( "borderSize", actualSize ) );
304 DALI_TEST_EQUALS( actualSize, testSize, TEST_LOCATION );
308 // enable the anti-aliasing
309 Dali::Property::Map map;
310 map[ Toolkit::Visual::Property::TYPE ] = Visual::BORDER;
311 map[ BorderVisual::Property::COLOR ] = testColor;
312 map[ BorderVisual::Property::SIZE ] = testSize;
313 map[ BorderVisual::Property::ANTI_ALIASING ] = true;
314 visual = factory.CreateVisual( map );
316 dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual );
317 Stage::GetCurrent().Add( actor );
319 blendMode = actor.GetRendererAt(0u).GetProperty<int>( Renderer::Property::BLEND_MODE );
320 DALI_TEST_EQUALS( static_cast<BlendMode::Type>(blendMode), BlendMode::ON, TEST_LOCATION );
325 int UtcDaliVisualFactoryGetLinearGradientVisual(void)
327 ToolkitTestApplication application;
328 tet_infoline("UtcDaliVisualFactoryGetRadialGradientVisual");
330 VisualFactory factory = VisualFactory::Get();
331 DALI_TEST_CHECK( factory );
333 Property::Map propertyMap;
334 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
336 Vector2 start(-1.f, -1.f);
337 Vector2 end(1.f, 1.f);
338 propertyMap.Insert(GradientVisual::Property::START_POSITION, start);
339 propertyMap.Insert(GradientVisual::Property::END_POSITION, end);
340 propertyMap.Insert(GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT);
342 Property::Array stopOffsets;
343 stopOffsets.PushBack( 0.2f );
344 stopOffsets.PushBack( 0.8f );
345 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, stopOffsets);
347 Property::Array stopColors;
348 stopColors.PushBack( Color::RED );
349 stopColors.PushBack( Color::GREEN );
350 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
352 Visual::Base visual = factory.CreateVisual(propertyMap);
353 DALI_TEST_CHECK( visual );
355 // A lookup texture is generated and pass to shader as sampler
356 DummyControl actor = DummyControl::New(true);
357 TestVisualRender( application, actor, visual );
362 int UtcDaliVisualFactoryGetRadialGradientVisual(void)
364 ToolkitTestApplication application;
365 tet_infoline("UtcDaliVisualFactoryGetRadialGradientVisual");
367 VisualFactory factory = VisualFactory::Get();
368 DALI_TEST_CHECK( factory );
370 Property::Map propertyMap;
371 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
373 Vector2 center(100.f, 100.f);
374 float radius = 100.f;
375 propertyMap.Insert(GradientVisual::Property::UNITS, GradientVisual::Units::USER_SPACE);
376 propertyMap.Insert(GradientVisual::Property::CENTER, center);
377 propertyMap.Insert(GradientVisual::Property::RADIUS, radius);
379 Property::Array stopOffsets;
380 stopOffsets.PushBack( 0.0f );
381 stopOffsets.PushBack( 1.f );
382 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, stopOffsets);
384 Property::Array stopColors;
385 stopColors.PushBack( Color::RED );
386 stopColors.PushBack( Color::GREEN );
387 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
389 Visual::Base visual = factory.CreateVisual(propertyMap);
390 DALI_TEST_CHECK( visual );
392 // A lookup texture is generated and pass to shader as sampler
393 DummyControl actor = DummyControl::New(true);
394 TestVisualRender( application, actor, visual );
396 Matrix3 alignMatrix( radius, 0.f, 0.f, 0.f, radius, 0.f, center.x, center.y, 1.f );
397 alignMatrix.Invert();
399 Matrix3 actualValue( Matrix3::IDENTITY );
400 TestGlAbstraction& gl = application.GetGlAbstraction();
401 DALI_TEST_CHECK( gl.GetUniformValue<Matrix3>( "uAlignmentMatrix", actualValue ) );
402 DALI_TEST_EQUALS( actualValue, alignMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION );
407 int UtcDaliVisualFactoryDefaultOffsetsGradientVisual(void)
409 ToolkitTestApplication application;
410 tet_infoline("UtcDaliVisualFactoryGetRadialGradientVisual");
412 VisualFactory factory = VisualFactory::Get();
413 DALI_TEST_CHECK( factory );
415 Property::Map propertyMap;
416 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
418 Vector2 start(-1.f, -1.f);
419 Vector2 end(1.f, 1.f);
420 propertyMap.Insert(GradientVisual::Property::START_POSITION, start);
421 propertyMap.Insert(GradientVisual::Property::END_POSITION, end);
422 propertyMap.Insert(GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT);
424 Property::Array stopColors;
425 stopColors.PushBack( Color::RED );
426 stopColors.PushBack( Color::GREEN );
427 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
429 Visual::Base visual = factory.CreateVisual(propertyMap);
430 DALI_TEST_CHECK( visual );
432 // A lookup texture is generated and pass to shader as sampler
433 DummyControl actor = DummyControl::New(true);
434 TestVisualRender( application, actor, visual );
436 Stage::GetCurrent().Remove( actor );
437 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
442 int UtcDaliVisualFactoryGetNPatchVisual1(void)
444 ToolkitTestApplication application;
445 tet_infoline( "UtcDaliVisualFactoryGetNPatchVisual1: Request 9-patch visual with a Property::Map" );
447 VisualFactory factory = VisualFactory::Get();
448 DALI_TEST_CHECK( factory );
450 // Get actual size of test image
451 ImageDimensions imageSize = Dali::GetClosestImageSize( TEST_9_PATCH_FILE_NAME );
453 Property::Map propertyMap;
454 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::N_PATCH );
455 propertyMap.Insert( ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME );
457 tet_infoline( "whole grid" );
458 Visual::Base visual = factory.CreateVisual( propertyMap );
459 DALI_TEST_CHECK( visual );
461 TestGlAbstraction& gl = application.GetGlAbstraction();
462 TraceCallStack& textureTrace = gl.GetTextureTrace();
463 textureTrace.Enable(true);
465 DummyControl actor = DummyControl::New(true);
466 TestVisualRender( application, actor, visual );
468 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
470 Vector2 naturalSize( 0.0f, 0.0f );
471 visual.GetNaturalSize( naturalSize );
472 DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f ), TEST_LOCATION );
475 propertyMap.Insert( ImageVisual::Property::BORDER_ONLY, true );
477 tet_infoline( "border only" );
478 Visual::Base visual = factory.CreateVisual( propertyMap );
479 DALI_TEST_CHECK( visual );
481 TestGlAbstraction& gl = application.GetGlAbstraction();
482 TraceCallStack& textureTrace = gl.GetTextureTrace();
483 textureTrace.Enable(true);
485 DummyControl actor = DummyControl::New(true);
486 TestVisualRender( application, actor, visual );
488 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
490 Vector2 naturalSize( 0.0f, 0.0f );
491 visual.GetNaturalSize( naturalSize );
492 DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f ), TEST_LOCATION );
498 int UtcDaliVisualFactoryGetNPatchVisual2(void)
500 ToolkitTestApplication application;
501 tet_infoline( "UtcDaliVisualFactoryGetNPatchVisual1: Request 9-patch visual with a Property::Map including border" );
503 VisualFactory factory = VisualFactory::Get();
504 DALI_TEST_CHECK( factory );
506 // Get actual size of test image
507 ImageDimensions imageSize = Dali::GetClosestImageSize( gImage_34_RGBA );
509 Property::Map propertyMap;
510 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::N_PATCH );
511 propertyMap.Insert( ImageVisual::Property::URL, gImage_34_RGBA );
512 propertyMap.Insert( ImageVisual::Property::BORDER, Rect< int >( 2, 2, 2, 2 ) );
514 tet_infoline( "whole grid" );
515 Visual::Base visual = factory.CreateVisual( propertyMap );
516 DALI_TEST_CHECK( visual );
518 TestGlAbstraction& gl = application.GetGlAbstraction();
519 TraceCallStack& textureTrace = gl.GetTextureTrace();
520 textureTrace.Enable(true);
522 DummyControl actor = DummyControl::New(true);
523 TestVisualRender( application, actor, visual );
525 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
527 Vector2 naturalSize( 0.0f, 0.0f );
528 visual.GetNaturalSize( naturalSize );
529 DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth(), imageSize.GetHeight() ), TEST_LOCATION );
532 propertyMap.Insert( ImageVisual::Property::BORDER_ONLY, true );
534 tet_infoline( "border only" );
535 Visual::Base visual = factory.CreateVisual( propertyMap );
536 DALI_TEST_CHECK( visual );
538 TestGlAbstraction& gl = application.GetGlAbstraction();
539 TraceCallStack& textureTrace = gl.GetTextureTrace();
540 textureTrace.Enable(true);
542 DummyControl actor = DummyControl::New(true);
543 TestVisualRender( application, actor, visual );
545 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
547 Vector2 naturalSize( 0.0f, 0.0f );
548 visual.GetNaturalSize( naturalSize );
549 DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth(), imageSize.GetHeight() ), TEST_LOCATION );
553 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::N_PATCH );
554 propertyMap.Insert( ImageVisual::Property::URL, gImage_34_RGBA );
555 propertyMap.Insert( ImageVisual::Property::BORDER, Rect< int >( 1, 1, 1, 1 ) );
557 tet_infoline( "whole grid" );
558 Visual::Base visual = factory.CreateVisual( propertyMap );
559 DALI_TEST_CHECK( visual );
561 TestGlAbstraction& gl = application.GetGlAbstraction();
562 TraceCallStack& textureTrace = gl.GetTextureTrace();
563 textureTrace.Enable(true);
565 DummyControl actor = DummyControl::New(true);
566 TestVisualRender( application, actor, visual );
568 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
570 Vector2 naturalSize( 0.0f, 0.0f );
571 visual.GetNaturalSize( naturalSize );
572 DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth(), imageSize.GetHeight() ), TEST_LOCATION );
578 int UtcDaliVisualFactoryGetNPatchVisual3(void)
580 ToolkitTestApplication application;
581 tet_infoline( "UtcDaliVisualFactoryGetNPatchVisual2: Request n-patch visual with a Property::Map" );
583 VisualFactory factory = VisualFactory::Get();
584 DALI_TEST_CHECK( factory );
586 // Get actual size of test image
587 ImageDimensions imageSize = Dali::GetClosestImageSize( TEST_NPATCH_FILE_NAME );
589 Property::Map propertyMap;
590 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::N_PATCH );
591 propertyMap.Insert( ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME );
593 Visual::Base visual = factory.CreateVisual( propertyMap );
594 DALI_TEST_CHECK( visual );
596 TestGlAbstraction& gl = application.GetGlAbstraction();
597 TraceCallStack& textureTrace = gl.GetTextureTrace();
598 textureTrace.Enable(true);
600 DummyControl actor = DummyControl::New(true);
601 TestVisualRender( application, actor, visual );
603 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
605 Stage::GetCurrent().Remove( actor );
606 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
608 Vector2 naturalSize( 0.0f, 0.0f );
609 visual.GetNaturalSize( naturalSize );
610 DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f ), TEST_LOCATION );
613 propertyMap.Insert( ImageVisual::Property::BORDER_ONLY, true );
615 tet_infoline( "border only" );
616 Visual::Base visual = factory.CreateVisual( propertyMap );
617 DALI_TEST_CHECK( visual );
619 TestGlAbstraction& gl = application.GetGlAbstraction();
620 TraceCallStack& textureTrace = gl.GetTextureTrace();
621 textureTrace.Enable(true);
622 DummyControl actor = DummyControl::New(true);
623 TestVisualRender( application, actor, visual );
625 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
627 Vector2 naturalSize( 0.0f, 0.0f );
628 visual.GetNaturalSize( naturalSize );
629 DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f ), TEST_LOCATION );
631 Stage::GetCurrent().Remove( actor );
632 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
638 int UtcDaliVisualFactoryGetNPatchVisual4(void)
640 ToolkitTestApplication application;
641 tet_infoline( "UtcDaliVisualFactoryGetNPatchVisual4: Request 9-patch visual with an image url" );
643 // Get actual size of test image
644 ImageDimensions imageSize = Dali::GetClosestImageSize( TEST_9_PATCH_FILE_NAME );
646 VisualFactory factory = VisualFactory::Get();
647 DALI_TEST_CHECK( factory );
649 Visual::Base visual = factory.CreateVisual( TEST_9_PATCH_FILE_NAME, ImageDimensions() );
650 DALI_TEST_CHECK( visual );
652 TestGlAbstraction& gl = application.GetGlAbstraction();
653 TraceCallStack& textureTrace = gl.GetTextureTrace();
654 textureTrace.Enable(true);
656 DummyControl actor = DummyControl::New(true);
657 TestVisualRender( application, actor, visual );
659 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
661 Vector2 naturalSize( 0.0f, 0.0f );
662 visual.GetNaturalSize( naturalSize );
663 DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f ), TEST_LOCATION );
665 textureTrace.Reset();
667 ResourceImage image = ResourceImage::New( TEST_9_PATCH_FILE_NAME );
668 Visual::Base nPatchVisual = factory.CreateVisual( image );
670 DummyControl actor1 = DummyControl::New(true);
671 TestVisualRender( application, actor1, nPatchVisual );
673 DALI_TEST_EQUALS( textureTrace.CountMethod("BindTexture"), 0, TEST_LOCATION ); // The same texture should be used with the first visual.
675 naturalSize = Vector2( 0.0f, 0.0f );
676 nPatchVisual.GetNaturalSize( naturalSize );
677 DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f ), TEST_LOCATION );
682 int UtcDaliVisualFactoryGetNPatchVisual5(void)
684 ToolkitTestApplication application;
685 tet_infoline( "UtcDaliVisualFactoryGetNPatchVisual5: Request n-patch visual with an image url" );
687 // Get actual size of test image
688 ImageDimensions imageSize = Dali::GetClosestImageSize( TEST_NPATCH_FILE_NAME );
690 VisualFactory factory = VisualFactory::Get();
691 DALI_TEST_CHECK( factory );
693 Visual::Base visual = factory.CreateVisual( TEST_NPATCH_FILE_NAME, ImageDimensions() );
694 DALI_TEST_CHECK( visual );
696 TestGlAbstraction& gl = application.GetGlAbstraction();
697 TraceCallStack& textureTrace = gl.GetTextureTrace();
698 textureTrace.Enable(true);
700 DummyControl actor = DummyControl::New(true);
701 TestVisualRender( application, actor, visual );
703 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
705 Vector2 naturalSize( 0.0f, 0.0f );
706 visual.GetNaturalSize( naturalSize );
707 DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f ), TEST_LOCATION );
712 int UtcDaliVisualFactoryGetNPatchVisual6(void)
714 ToolkitTestApplication application;
715 tet_infoline( "UtcDaliVisualFactoryGetNPatchVisual6: Request n-patch visual with a general image" );
717 VisualFactory factory = VisualFactory::Get();
718 DALI_TEST_CHECK( factory );
721 // Get actual size of test image
722 ImageDimensions imageSize = Dali::GetClosestImageSize( gImage_34_RGBA );
724 Property::Map propertyMap;
725 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::N_PATCH );
726 propertyMap.Insert( ImageVisual::Property::URL, gImage_34_RGBA );
728 Visual::Base visual = factory.CreateVisual( propertyMap );
729 DALI_TEST_CHECK( visual );
731 TestGlAbstraction& gl = application.GetGlAbstraction();
732 TraceCallStack& textureTrace = gl.GetTextureTrace();
733 textureTrace.Enable(true);
735 DummyControl actor = DummyControl::New(true);
736 TestVisualRender( application, actor, visual );
738 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
740 Vector2 naturalSize( 0.0f, 0.0f );
741 visual.GetNaturalSize( naturalSize );
742 DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f ), TEST_LOCATION );
744 Stage::GetCurrent().Remove( actor );
745 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
749 // Get actual size of test image
750 ImageDimensions imageSize = Dali::GetClosestImageSize( TEST_IMAGE_FILE_NAME );
752 Property::Map propertyMap;
753 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::N_PATCH );
754 propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
756 Visual::Base visual = factory.CreateVisual( propertyMap );
757 DALI_TEST_CHECK( visual );
759 TestGlAbstraction& gl = application.GetGlAbstraction();
760 TraceCallStack& textureTrace = gl.GetTextureTrace();
761 textureTrace.Enable(true);
763 DummyControl actor = DummyControl::New(true);
764 TestVisualRender( application, actor, visual );
766 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
768 Vector2 naturalSize( 0.0f, 0.0f );
769 visual.GetNaturalSize( naturalSize );
770 DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f ), TEST_LOCATION );
772 Stage::GetCurrent().Remove( actor );
773 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
779 int UtcDaliNPatchVisualAuxiliaryImage(void)
781 ToolkitTestApplication application;
782 tet_infoline( "NPatchVisual with aux image" );
784 VisualFactory factory = VisualFactory::Get();
785 Property::Map properties;
786 Property::Map shader;
788 Property::Map transformMap;
789 transformMap["size"] = Vector2( 0.5f, 0.5f ) ;
790 transformMap["offset"] = Vector2( 20.0f, 0.0f ) ;
791 transformMap["offsetPolicy"] = Vector2( Visual::Transform::Policy::ABSOLUTE, Visual::Transform::Policy::ABSOLUTE );
792 transformMap["anchorPoint"] = Align::CENTER;
793 transformMap["origin"] = Align::CENTER;
794 properties[Visual::Property::TRANSFORM] = transformMap;
796 properties[Visual::Property::TYPE] = Visual::IMAGE;
797 properties[Visual::Property::MIX_COLOR] = Color::BLUE;
798 properties[Visual::Property::SHADER]=shader;
799 properties[ImageVisual::Property::URL] = TEST_9_PATCH_FILE_NAME;
800 properties[DevelImageVisual::Property::AUXILIARY_IMAGE] = TEST_AUX_IMAGE;
801 properties[DevelImageVisual::Property::AUXILIARY_IMAGE_ALPHA] = 0.9f;
803 Visual::Base visual = factory.CreateVisual( properties );
805 // trigger creation through setting on stage
806 DummyControl dummy = DummyControl::New(true);
807 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummy.GetImplementation());
808 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
809 dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transformMap );
810 dummy.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
811 dummy.SetParentOrigin(ParentOrigin::CENTER);
812 Stage::GetCurrent().Add(dummy);
813 application.SendNotification();
814 application.Render();
816 Renderer renderer = dummy.GetRendererAt( 0 );
817 auto textures = renderer.GetTextures();
818 DALI_TEST_EQUALS( textures.GetTextureCount(), 2, TEST_LOCATION );
824 int UtcDaliVisualFactoryGetNPatchVisualN1(void)
826 //This should still load but display an error image
828 ToolkitTestApplication application;
829 tet_infoline( "UtcDaliVisualFactoryGetNPatchVisualN: Request n-patch visual with an invalid image url" );
831 VisualFactory factory = VisualFactory::Get();
832 DALI_TEST_CHECK( factory );
834 Visual::Base visual = factory.CreateVisual( "ERROR.9.jpg", ImageDimensions() );
835 DALI_TEST_CHECK( visual );
837 TestGlAbstraction& gl = application.GetGlAbstraction();
838 TraceCallStack& textureTrace = gl.GetTextureTrace();
839 textureTrace.Enable(true);
841 DummyControl actor = DummyControl::New(true);
842 TestVisualRender( application, actor, visual );
844 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
849 int UtcDaliVisualFactoryGetNPatchVisualN2(void)
851 //This should still load but display an error image
853 ToolkitTestApplication application;
854 tet_infoline( "UtcDaliVisualFactoryGetNPatchVisualN: Request n-patch visual with an invalid URL" );
856 VisualFactory factory = VisualFactory::Get();
857 DALI_TEST_CHECK( factory );
859 Property::Map propertyMap;
860 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::N_PATCH );
861 propertyMap.Insert( ImageVisual::Property::URL, "ERROR.9.jpg" );
863 Visual::Base visual = factory.CreateVisual( propertyMap );
864 DALI_TEST_CHECK( visual );
866 TestGlAbstraction& gl = application.GetGlAbstraction();
867 TraceCallStack& textureTrace = gl.GetTextureTrace();
868 textureTrace.Enable(true);
869 TraceCallStack& drawTrace = gl.GetDrawTrace();
870 drawTrace.Enable(true);
872 DummyControl actor = DummyControl::New(true);
873 TestVisualRender( application, actor, visual );
875 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
880 int UtcDaliVisualFactoryGetNPatchVisualN3(void)
882 // Passing in an invalid visual type so we should not get a visual
884 ToolkitTestApplication application;
885 tet_infoline( "UtcDaliVisualFactoryGetNPatchVisualN: Request n-patch visual with an invalid visual type" );
887 VisualFactory factory = VisualFactory::Get();
888 DALI_TEST_CHECK( factory );
890 Property::Map propertyMap;
891 propertyMap.Insert( Toolkit::Visual::Property::TYPE, 111 );
892 propertyMap.Insert( ImageVisual::Property::URL, "ERROR.9.jpg" );
894 Visual::Base visual = factory.CreateVisual( propertyMap );
895 DALI_TEST_CHECK( !visual );
900 int UtcDaliVisualFactoryGetSvgVisual(void)
902 ToolkitTestApplication application;
903 tet_infoline( "UtcDaliVisualFactoryGetSvgVisual: Request svg visual with a svg url" );
905 VisualFactory factory = VisualFactory::Get();
906 Visual::Base visual = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
907 DALI_TEST_CHECK( visual );
909 TestGlAbstraction& gl = application.GetGlAbstraction();
910 TraceCallStack& textureTrace = gl.GetTextureTrace();
911 textureTrace.Enable(true);
913 DummyControl actor = DummyControl::New(true);
914 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
915 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
916 actor.SetSize( 200.f, 200.f );
917 Stage::GetCurrent().Add( actor );
918 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f) );
920 application.SendNotification();
921 application.Render();
923 // renderer is not added to actor until the rasterization is completed.
924 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
926 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
928 // renderer is added to actor
929 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
931 // waiting for the resource uploading
932 application.SendNotification();
933 application.Render();
935 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
940 int UtcDaliVisualFactoryGetSvgVisualLarge(void)
942 ToolkitTestApplication application;
943 tet_infoline( "UtcDaliVisualFactoryGetSvgVisual: Request svg visual with a svg url" );
945 VisualFactory factory = VisualFactory::Get();
946 Visual::Base visual = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions( 2000, 2000 ) );
947 DALI_TEST_CHECK( visual );
949 TestGlAbstraction& gl = application.GetGlAbstraction();
950 TraceCallStack& textureTrace = gl.GetTextureTrace();
951 textureTrace.Enable(true);
953 DummyControl actor = DummyControl::New(true);
954 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
955 actor.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); // Only rasterizes when it knows control size.
956 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
957 Stage::GetCurrent().Add( actor );
959 application.SendNotification();
960 application.Render();
962 // renderer is not added to actor until the rasterization is completed.
963 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
965 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
967 // renderer is added to actor
968 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
970 // waiting for the resource uploading
971 application.SendNotification();
972 application.Render();
974 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
979 int UtcDaliVisualFactoryGetSvgVisualAtlas(void)
981 ToolkitTestApplication application;
982 tet_infoline( "UtcDaliVisualFactoryGetSvgVisual: Request svg visual with enabled atlas" );
984 VisualFactory factory = VisualFactory::Get();
986 Property::Map propertyMap;
987 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::SVG );
988 propertyMap.Insert( ImageVisual::Property::URL, TEST_SVG_FILE_NAME );
989 propertyMap.Insert( ImageVisual::Property::ATLASING, true );
991 Visual::Base visual = factory.CreateVisual( propertyMap );
992 DALI_TEST_CHECK( visual );
994 TestGlAbstraction& gl = application.GetGlAbstraction();
995 TraceCallStack& textureTrace = gl.GetTextureTrace();
996 textureTrace.Enable(true);
998 DummyControl actor = DummyControl::New(true);
999 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1000 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1001 actor.SetSize( 200.f, 200.f );
1002 Stage::GetCurrent().Add( actor );
1003 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f) );
1005 application.SendNotification();
1006 application.Render();
1008 // renderer is not added to actor until the rasterization is completed.
1009 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
1011 DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
1013 // renderer is added to actor
1014 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
1016 // waiting for the resource uploading
1017 application.SendNotification();
1018 application.Render();
1020 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
1025 //Creates a mesh visual from the given propertyMap and tries to load it on stage in the given application.
1026 //This is expected to succeed, which will then pass the test.
1027 void MeshVisualLoadsCorrectlyTest( Property::Map& propertyMap, ToolkitTestApplication& application )
1029 VisualFactory factory = VisualFactory::Get();
1030 DALI_TEST_CHECK( factory );
1032 //Create a mesh visual.
1033 Visual::Base visual = factory.CreateVisual( propertyMap );
1034 DALI_TEST_CHECK( visual );
1036 //Create an actor on stage to house the visual.
1037 DummyControl actor = DummyControl::New(true);
1038 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1039 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1040 actor.SetSize( 200.f, 200.f );
1041 Stage::GetCurrent().Add( actor );
1042 visual.SetTransformAndSize(DefaultTransform(), Vector2( 200.f, 200.f ) );
1044 //Ensure set on stage.
1045 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION );
1047 //Attempt to render to queue resource load requests.
1048 application.SendNotification();
1049 application.Render( 0 );
1051 //Render again to upload the now-loaded textures.
1052 application.SendNotification();
1053 application.Render( 0 );
1055 Matrix testScaleMatrix;
1056 testScaleMatrix.SetIdentityAndScale( Vector3( 1.0, -1.0, 1.0 ) );
1057 Matrix actualScaleMatrix;
1059 //Test to see if the object has been successfully loaded.
1060 DALI_TEST_CHECK( application.GetGlAbstraction().GetUniformValue<Matrix>( "uObjectMatrix", actualScaleMatrix ) );
1061 DALI_TEST_EQUALS( actualScaleMatrix, testScaleMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1063 //Finish by setting off stage, and ensuring this was successful.
1065 DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION );
1068 //Creates a mesh visual from the given propertyMap and tries to load it on stage in the given application.
1069 //This is expected to fail, which will then pass the test.
1070 void MeshVisualDoesNotLoadCorrectlyTest( Property::Map& propertyMap, ToolkitTestApplication& application )
1072 VisualFactory factory = VisualFactory::Get();
1073 DALI_TEST_CHECK( factory );
1075 //Create a mesh visual.
1076 Visual::Base visual = factory.CreateVisual( propertyMap );
1077 DALI_TEST_CHECK( visual );
1079 //Create an actor on stage to house the visual.
1080 DummyControl actor = DummyControl::New(true);
1081 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1082 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1083 actor.SetSize( 200.f, 200.f );
1084 Stage::GetCurrent().Add( actor );
1085 visual.SetTransformAndSize(DefaultTransform(), Vector2( 200.f, 200.f ) );
1087 //Ensure set on stage.
1088 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION );
1090 //Attempt to render to queue resource load requests.
1091 application.SendNotification();
1092 application.Render( 0 );
1094 //Render again to upload the now-loaded textures.
1095 application.SendNotification();
1096 application.Render( 0 );
1098 //Test to see if the object has not been loaded, as expected.
1100 DALI_TEST_CHECK( !application.GetGlAbstraction().GetUniformValue<Matrix>( "uObjectMatrix", scaleMatrix ) );
1102 //Finish by setting off stage, and ensuring this was successful.
1104 DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION );
1107 //Test if mesh loads correctly when supplied with only the bare minimum requirements, an object file.
1108 int UtcDaliVisualFactoryGetMeshVisual1(void)
1110 //Set up test application first, so everything else can be handled.
1111 ToolkitTestApplication application;
1113 tet_infoline( "UtcDaliVisualFactoryGetMeshVisual1: Request mesh visual with a valid object file only" );
1116 //Set up visual properties.
1117 Property::Map propertyMap;
1118 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::MESH );
1119 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
1121 //Test to see if mesh loads correctly.
1122 MeshVisualLoadsCorrectlyTest( propertyMap, application );
1128 //Test if mesh loads correctly when supplied with an object file as well as a blank material file and images directory.
1129 int UtcDaliVisualFactoryGetMeshVisual2(void)
1131 //Set up test application first, so everything else can be handled.
1132 ToolkitTestApplication application;
1134 tet_infoline( "UtcDaliVisualFactoryGetMeshVisual2: Request mesh visual with blank material file and images directory" );
1136 //Set up visual properties.
1137 Property::Map propertyMap;
1138 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::MESH );
1139 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
1140 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, "" );
1141 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, "" );
1143 //Test to see if mesh loads correctly.
1144 MeshVisualLoadsCorrectlyTest( propertyMap, application );
1149 //Test if mesh loads correctly when supplied with all main parameters, an object file, a material file and a directory location, but duff optional parameters
1150 int UtcDaliVisualFactoryGetMeshVisual3b(void)
1152 //Set up test application first, so everything else can be handled.
1153 ToolkitTestApplication application;
1155 tet_infoline( "UtcDaliVisualFactoryGetMeshVisual3: Request mesh visual with all parameters correct" );
1157 //Set up visual properties.
1158 Property::Map propertyMap;
1159 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::MESH );
1160 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
1161 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
1162 propertyMap.Insert( MeshVisual::Property::USE_MIPMAPPING, Color::GREEN ); // Test that wrong property types don't prevent the object load
1163 propertyMap.Insert( MeshVisual::Property::USE_SOFT_NORMALS, 1.0f );
1164 propertyMap.Insert( MeshVisual::Property::LIGHT_POSITION, 1.0f );
1165 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/" );
1167 //Test to see if mesh loads correctly.
1168 MeshVisualLoadsCorrectlyTest( propertyMap, application );
1173 //Test if mesh loads correctly when supplied with all main parameters, an object file, a material file and a directory location.
1174 int UtcDaliVisualFactoryGetMeshVisual3(void)
1176 //Set up test application first, so everything else can be handled.
1177 ToolkitTestApplication application;
1179 tet_infoline( "UtcDaliVisualFactoryGetMeshVisual3: Request mesh visual with all parameters correct" );
1181 //Set up visual properties.
1182 Property::Map propertyMap;
1183 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::MESH );
1184 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
1185 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
1186 propertyMap.Insert( MeshVisual::Property::USE_MIPMAPPING, false );
1187 propertyMap.Insert( MeshVisual::Property::USE_SOFT_NORMALS, false );
1188 propertyMap.Insert( MeshVisual::Property::LIGHT_POSITION, Vector3::XAXIS );
1189 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/" );
1191 //Test to see if mesh loads correctly.
1192 MeshVisualLoadsCorrectlyTest( propertyMap, application );
1197 //Test if mesh visual can load a correctly supplied mesh without a normal map or gloss map in the material file.
1198 int UtcDaliVisualFactoryGetMeshVisual4(void)
1200 //Set up test application first, so everything else can be handled.
1201 ToolkitTestApplication application;
1203 tet_infoline( "UtcDaliVisualFactoryGetMeshVisual4: Request mesh visual with diffuse texture but not normal or gloss." );
1206 //Set up visual properties.
1207 Property::Map propertyMap;
1208 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::MESH );
1209 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
1210 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_SIMPLE_MTL_FILE_NAME );
1211 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/" );
1213 //Test to see if mesh loads correctly.
1214 MeshVisualLoadsCorrectlyTest( propertyMap, application );
1219 //Test if mesh visual can load when made to use diffuse textures only.
1220 int UtcDaliVisualFactoryGetMeshVisual5(void)
1222 //Set up test application first, so everything else can be handled.
1223 ToolkitTestApplication application;
1225 tet_infoline( "UtcDaliVisualFactoryGetMeshVisual5: Request mesh visual and make it only use diffuse textures." );
1227 //Set up visual properties.
1228 Property::Map propertyMap;
1229 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::MESH );
1230 propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME );
1231 propertyMap.Insert( "materialUrl", TEST_MTL_FILE_NAME );
1232 propertyMap.Insert( "texturesPath", TEST_RESOURCE_DIR "/" );
1233 propertyMap.Insert( "useMipmapping", false );
1234 propertyMap.Insert( "useSoftNormals", false );
1235 propertyMap.Insert( "lightPosition", Vector3::ZAXIS );
1236 propertyMap.Insert( "shadingMode", MeshVisual::ShadingMode::TEXTURED_WITH_SPECULAR_LIGHTING );
1238 //Test to see if mesh loads correctly.
1239 MeshVisualLoadsCorrectlyTest( propertyMap, application );
1245 //Test if mesh visual can load when made to not use the supplied textures.
1246 int UtcDaliVisualFactoryGetMeshVisual6(void)
1248 //Set up test application first, so everything else can be handled.
1249 ToolkitTestApplication application;
1251 tet_infoline( "UtcDaliVisualFactoryGetMeshVisual6: Request mesh visual and make it not use any textures." );
1253 //Set up visual properties.
1254 Property::Map propertyMap;
1255 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::MESH );
1256 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
1257 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
1258 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/" );
1259 propertyMap.Insert( MeshVisual::Property::SHADING_MODE, MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
1261 //Test to see if mesh loads correctly.
1262 MeshVisualLoadsCorrectlyTest( propertyMap, application );
1266 //Test if mesh visual loads correctly when light position is manually set.
1267 int UtcDaliVisualFactoryGetMeshVisual7(void)
1269 //Set up test application first, so everything else can be handled.
1270 ToolkitTestApplication application;
1273 tet_infoline( "UtcDaliVisualFactoryGetMeshVisual7: Request mesh visual with custom light position." );
1275 //Set up visual properties.
1276 Property::Map propertyMap;
1277 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::MESH );
1278 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
1279 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
1280 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/" );
1281 propertyMap.Insert( MeshVisual::Property::LIGHT_POSITION, Vector3( 0.0, 1.0, 2.0 ) );
1283 //Test to see if mesh loads correctly.
1284 MeshVisualLoadsCorrectlyTest( propertyMap, application );
1289 //Test if mesh visual loads correctly when supplied an object file without face normals or texture points.
1290 //Note that this notably tests object loader functionality.
1291 int UtcDaliVisualFactoryGetMeshVisual8(void)
1293 //Set up test application first, so everything else can be handled.
1294 ToolkitTestApplication application;
1296 tet_infoline( "UtcDaliVisualFactoryGetMeshVisual5: Request mesh visual with normal-less object file." );
1298 //Set up visual properties.
1299 Property::Map propertyMap;
1300 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::MESH );
1301 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_SIMPLE_OBJ_FILE_NAME );
1302 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
1303 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/" );
1305 //Test to see if mesh loads correctly.
1306 MeshVisualLoadsCorrectlyTest( propertyMap, application );
1311 //Test if mesh visual handles the case of lacking an object file.
1312 int UtcDaliVisualFactoryGetMeshVisualN1(void)
1314 //Set up test application first, so everything else can be handled.
1315 ToolkitTestApplication application;
1317 tet_infoline( "UtcDaliVisualFactoryGetMeshVisualN1: Request mesh visual without object file" );
1319 //Set up visual properties.
1320 Property::Map propertyMap;
1321 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::MESH );
1322 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
1323 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/" );
1325 //Test to see if mesh doesn't load with these properties, as expected.
1326 MeshVisualDoesNotLoadCorrectlyTest( propertyMap, application );
1332 //Test if mesh visual handles the case of being passed invalid material and images urls.
1333 int UtcDaliVisualFactoryGetMeshVisualN2(void)
1335 //Set up test application first, so everything else can be handled.
1336 ToolkitTestApplication application;
1338 tet_infoline( "UtcDaliVisualFactoryGetMeshVisualN2: Request mesh visual with invalid material and images urls" );
1340 //Set up visual properties.
1341 Property::Map propertyMap;
1342 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::MESH );
1343 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
1344 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, "invalid" );
1345 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, "also invalid" );
1347 //Test to see if mesh doesn't load with these properties, as expected.
1348 MeshVisualDoesNotLoadCorrectlyTest( propertyMap, application );
1354 //Test if mesh visual handles the case of being passed an invalid object url
1355 int UtcDaliVisualFactoryGetMeshVisualN3(void)
1357 //Set up test application first, so everything else can be handled.
1358 ToolkitTestApplication application;
1359 tet_infoline( "UtcDaliVisualFactoryGetMeshVisualN3: Request mesh visual with invalid object url" );
1362 //Set up visual properties.
1363 Property::Map propertyMap;
1364 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::MESH );
1365 propertyMap.Insert( MeshVisual::Property::OBJECT_URL, "invalid" );
1366 propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
1367 propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/" );
1369 //Test to see if mesh doesn't load with these properties, as expected.
1370 MeshVisualDoesNotLoadCorrectlyTest( propertyMap, application );
1375 //Creates a primitive visual with the given property map and tests to see if it correctly loads in the given application.
1376 void TestPrimitiveVisualWithProperties( Property::Map& propertyMap, ToolkitTestApplication& application )
1378 VisualFactory factory = VisualFactory::Get();
1379 DALI_TEST_CHECK( factory );
1381 //Create a primitive visual.
1382 Visual::Base visual = factory.CreateVisual( propertyMap );
1383 DALI_TEST_CHECK( visual );
1385 //Create an actor on stage to house the visual.
1386 DummyControl actor = DummyControl::New(true);
1387 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1388 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1390 actor.SetSize( 200.f, 200.f );
1391 Stage::GetCurrent().Add( actor );
1392 visual.SetTransformAndSize(DefaultTransform(), Vector2( 200.f, 200.f ) );
1394 //Ensure set on stage.
1395 DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION );
1397 //Tell test application to load the visual.
1398 application.SendNotification();
1399 application.Render(0);
1401 Matrix testScaleMatrix;
1402 testScaleMatrix.SetIdentityAndScale( Vector3( 1.0, -1.0, 1.0 ) );
1403 Matrix actualScaleMatrix;
1405 //Test to see if the object has been successfully loaded.
1406 DALI_TEST_CHECK( application.GetGlAbstraction().GetUniformValue<Matrix>( "uObjectMatrix", actualScaleMatrix ) );
1407 DALI_TEST_EQUALS( actualScaleMatrix, testScaleMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1409 //Finish by setting off stage, and ensuring this was successful.
1411 DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION );
1414 //Test if primitive shape loads correctly when supplied with only the bare minimum requirements, the shape to use.
1415 int UtcDaliVisualFactoryGetPrimitiveVisual1(void)
1417 //Set up test application first, so everything else can be handled.
1418 ToolkitTestApplication application;
1420 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual1: Request primitive visual with a shape only" );
1422 //Set up visual properties.
1423 Property::Map propertyMap;
1424 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1425 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE );
1427 //Test to see if shape loads correctly.
1428 TestPrimitiveVisualWithProperties( propertyMap, application );
1433 //Test if primitive shape loads correctly when supplied with all possible parameters
1434 int UtcDaliVisualFactoryGetPrimitiveVisual2(void)
1436 //Set up test application first, so everything else can be handled.
1437 ToolkitTestApplication application;
1439 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual2: Request primitive visual with everything" );
1441 //Set up visual properties.
1442 Property::Map propertyMap;
1443 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1444 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE );
1445 propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, Vector4( 0.5, 0.5, 0.5, 1.0 ) );
1446 propertyMap.Insert( PrimitiveVisual::Property::SLICES, 10 );
1447 propertyMap.Insert( PrimitiveVisual::Property::STACKS, 20 );
1448 propertyMap.Insert( PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f );
1449 propertyMap.Insert( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f );
1450 propertyMap.Insert( PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f );
1451 propertyMap.Insert( PrimitiveVisual::Property::SCALE_RADIUS, 60.0f );
1452 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_PERCENTAGE, 0.7f );
1453 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, 0.8f );
1454 propertyMap.Insert( MeshVisual::Property::LIGHT_POSITION, Vector3( 0.9, 1.0, 1.1 ) );
1456 //Test to see if shape loads correctly.
1457 TestPrimitiveVisualWithProperties( propertyMap, application );
1462 //Test if primitive shape loads a sphere correctly.
1463 int UtcDaliVisualFactoryGetPrimitiveVisual3(void)
1465 //Set up test application first, so everything else can be handled.
1466 ToolkitTestApplication application;
1468 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual3: Request primitive visual to display a sphere" );
1470 //Set up visual properties.
1471 Property::Map propertyMap;
1472 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1473 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE );
1474 propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, Vector4( 0.5, 0.5, 0.5, 1.0 ) );
1475 propertyMap.Insert( PrimitiveVisual::Property::SLICES, 10 );
1476 propertyMap.Insert( PrimitiveVisual::Property::STACKS, 20 );
1478 //Test to see if shape loads correctly.
1479 TestPrimitiveVisualWithProperties( propertyMap, application );
1484 //Test if primitive shape loads a conic section correctly.
1485 int UtcDaliVisualFactoryGetPrimitiveVisual4(void)
1487 //Set up test application first, so everything else can be handled.
1488 ToolkitTestApplication application;
1490 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual4: Request primitive visual to display a conic section" );
1492 //Set up visual properties.
1493 Property::Map propertyMap;
1494 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1495 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CONICAL_FRUSTRUM );
1496 propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, Vector4( 0.5, 0.5, 0.5, 1.0 ) );
1497 propertyMap.Insert( PrimitiveVisual::Property::SLICES, 10 );
1498 propertyMap.Insert( PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f );
1499 propertyMap.Insert( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f );
1500 propertyMap.Insert( PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f );
1502 //Test to see if shape loads correctly.
1503 TestPrimitiveVisualWithProperties( propertyMap, application );
1508 //Test if primitive shape loads a bevelled cube correctly.
1509 int UtcDaliVisualFactoryGetPrimitiveVisual5(void)
1511 //Set up test application first, so everything else can be handled.
1512 ToolkitTestApplication application;
1514 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual5: Request primitive visual to display a bevelled cube" );
1516 //Set up visual properties.
1517 Property::Map propertyMap;
1518 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1519 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::BEVELLED_CUBE );
1520 propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, Vector4( 0.5, 0.5, 0.5, 1.0 ) );
1521 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_PERCENTAGE, 0.7f );
1523 //Test to see if shape loads correctly.
1524 TestPrimitiveVisualWithProperties( propertyMap, application );
1529 //Test if primitive shape loads an octahedron correctly.
1530 int UtcDaliVisualFactoryGetPrimitiveVisual6(void)
1532 //Set up test application first, so everything else can be handled.
1533 ToolkitTestApplication application;
1535 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual6: Request primitive visual to display an octahedron" );
1537 //Set up visual properties.
1538 Property::Map propertyMap;
1539 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1540 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::OCTAHEDRON );
1541 propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, Vector4( 0.5, 0.5, 0.5, 1.0 ) );
1543 //Test to see if shape loads correctly.
1544 TestPrimitiveVisualWithProperties( propertyMap, application );
1549 //Test if primitive shape loads a cone correctly.
1550 int UtcDaliVisualFactoryGetPrimitiveVisual7(void)
1552 //Set up test application first, so everything else can be handled.
1553 ToolkitTestApplication application;
1555 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual7: Request primitive visual to display a cone" );
1557 //Set up visual properties.
1558 Property::Map propertyMap;
1559 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1560 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CONE );
1561 propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, Vector4( 0.5, 0.5, 0.5, 1.0 ) );
1562 propertyMap.Insert( PrimitiveVisual::Property::SLICES, 10 );
1563 propertyMap.Insert( PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f );
1564 propertyMap.Insert( PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f );
1566 //Test to see if shape loads correctly.
1567 TestPrimitiveVisualWithProperties( propertyMap, application );
1572 //Test if primitive shape loads correctly when light position is manually set.
1573 int UtcDaliVisualFactoryGetPrimitiveVisual8(void)
1575 //Set up test application first, so everything else can be handled.
1576 ToolkitTestApplication application;
1578 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual8: Request primitive visual with set light position" );
1580 //Set up visual properties.
1581 Property::Map propertyMap;
1582 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1583 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE );
1584 propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, Vector4( 0.5, 0.5, 0.5, 1.0 ) );
1585 propertyMap.Insert( MeshVisual::Property::LIGHT_POSITION, Vector3( 0.0, 1.0, 2.0 ) );
1587 //Test to see if shape loads correctly.
1588 TestPrimitiveVisualWithProperties( propertyMap, application );
1593 //Test if primitive shape loads correctly when told to use too many slices.
1594 int UtcDaliVisualFactoryGetPrimitiveVisual9(void)
1596 //Set up test application first, so everything else can be handled.
1597 ToolkitTestApplication application;
1599 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual9: Request primitive visual with above-cap slices." );
1601 //Set up visual properties.
1602 Property::Map propertyMap;
1603 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1604 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE );
1605 propertyMap.Insert( PrimitiveVisual::Property::SLICES, Property::Value( 1000000 ) );
1607 //Test to see if shape loads correctly.
1608 TestPrimitiveVisualWithProperties( propertyMap, application );
1613 //Test if primitive shape loads correctly when told to use too few slices. (2 slices or less.)
1614 int UtcDaliVisualFactoryGetPrimitiveVisual10(void)
1616 //Set up test application first, so everything else can be handled.
1617 ToolkitTestApplication application;
1619 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual10: Request primitive visual with too few slices." );
1621 //Set up visual properties.
1622 Property::Map propertyMap;
1623 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1624 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE );
1625 propertyMap.Insert( PrimitiveVisual::Property::SLICES, Property::Value( 2 ) );
1627 //Test to see if shape loads correctly.
1628 TestPrimitiveVisualWithProperties( propertyMap, application );
1633 //Test if primitive shape loads correctly when told to use too many stacks.
1634 int UtcDaliVisualFactoryGetPrimitiveVisual11(void)
1636 //Set up test application first, so everything else can be handled.
1637 ToolkitTestApplication application;
1639 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual11: Request primitive visual with too many stacks." );
1641 //Set up visual properties.
1642 Property::Map propertyMap;
1643 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1644 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE );
1645 propertyMap.Insert( PrimitiveVisual::Property::STACKS, Property::Value( 1000000 ) );
1647 //Test to see if shape loads correctly.
1648 TestPrimitiveVisualWithProperties( propertyMap, application );
1653 //Test if primitive shape loads correctly when told to use too few stacks. (1 stack or less.)
1654 int UtcDaliVisualFactoryGetPrimitiveVisual12(void)
1656 //Set up test application first, so everything else can be handled.
1657 ToolkitTestApplication application;
1659 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual12: Request primitive visual with too few stacks." );
1661 //Set up visual properties.
1662 Property::Map propertyMap;
1663 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1664 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE );
1665 propertyMap.Insert( PrimitiveVisual::Property::STACKS, Property::Value( 1 ) );
1667 //Test to see if shape loads correctly.
1668 TestPrimitiveVisualWithProperties( propertyMap, application );
1673 //Test if primitive shape loads correctly when told to use invalid (zero or negative) dimensions.
1674 int UtcDaliVisualFactoryGetPrimitiveVisual13(void)
1676 //Set up test application first, so everything else can be handled.
1677 ToolkitTestApplication application;
1679 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual13: Request primitive visual with invalid scale dimensions." );
1681 //Set up visual properties.
1682 Property::Map propertyMap;
1683 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1684 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE );
1685 propertyMap.Insert( PrimitiveVisual::Property::SCALE_DIMENSIONS, Vector3::ZERO );
1687 //Test to see if shape loads correctly.
1688 TestPrimitiveVisualWithProperties( propertyMap, application );
1693 //Test if primitive shape loads correctly when told to use too low a bevel percentage.
1694 int UtcDaliVisualFactoryGetPrimitiveVisual14(void)
1696 //Set up test application first, so everything else can be handled.
1697 ToolkitTestApplication application;
1699 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual14: Request primitive visual with too low a bevel percentage." );
1701 //Set up visual properties.
1702 Property::Map propertyMap;
1703 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1704 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE );
1705 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_PERCENTAGE, Property::Value( -1.0f ) );
1707 //Test to see if shape loads correctly.
1708 TestPrimitiveVisualWithProperties( propertyMap, application );
1713 //Test if primitive shape loads correctly when told to use too high a bevel percentage.
1714 int UtcDaliVisualFactoryGetPrimitiveVisual15(void)
1716 //Set up test application first, so everything else can be handled.
1717 ToolkitTestApplication application;
1719 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual15: Request primitive visual with too high a bevel percentage." );
1721 //Set up visual properties.
1722 Property::Map propertyMap;
1723 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1724 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE );
1725 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_PERCENTAGE, Property::Value( 2.0f ) );
1727 //Test to see if shape loads correctly.
1728 TestPrimitiveVisualWithProperties( propertyMap, application );
1733 //Test if primitive shape loads correctly when told to use too low a bevel smoothness.
1734 int UtcDaliVisualFactoryGetPrimitiveVisual16(void)
1736 //Set up test application first, so everything else can be handled.
1737 ToolkitTestApplication application;
1739 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual16: Request primitive visual with too low a bevel smoothness." );
1741 //Set up visual properties.
1742 Property::Map propertyMap;
1743 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1744 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE );
1745 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, Property::Value( -1.0f ) );
1747 //Test to see if shape loads correctly.
1748 TestPrimitiveVisualWithProperties( propertyMap, application );
1753 //Test if primitive shape loads correctly when told to use too high a bevel smoothness.
1754 int UtcDaliVisualFactoryGetPrimitiveVisual17(void)
1756 //Set up test application first, so everything else can be handled.
1757 ToolkitTestApplication application;
1759 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual17: Request primitive visual with too high a bevel smoothness." );
1761 //Set up visual properties.
1762 Property::Map propertyMap;
1763 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1764 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE );
1765 propertyMap.Insert( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, Property::Value( 2.0f ) );
1767 //Test to see if shape loads correctly.
1768 TestPrimitiveVisualWithProperties( propertyMap, application );
1773 //Test if primitive shape loads a conic section correctly.
1774 int UtcDaliVisualFactoryGetPrimitiveVisual18(void)
1776 //Set up test application first, so everything else can be handled.
1777 ToolkitTestApplication application;
1779 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisual18: Request primitive visual to display a conic section" );
1781 //Set up visual properties.
1782 Property::Map propertyMap;
1783 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1784 propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CONICAL_FRUSTUM );
1785 propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, Vector4( 0.5, 0.5, 0.5, 1.0 ) );
1786 propertyMap.Insert( PrimitiveVisual::Property::SLICES, 10 );
1787 propertyMap.Insert( PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f );
1788 propertyMap.Insert( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f );
1789 propertyMap.Insert( PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f );
1791 //Test to see if shape loads correctly.
1792 TestPrimitiveVisualWithProperties( propertyMap, application );
1797 //Test if primitive shape visual handles the case of not being passed a specific shape to use.
1798 int UtcDaliVisualFactoryGetPrimitiveVisualN1(void)
1800 //Set up test application first, so everything else can be handled.
1801 ToolkitTestApplication application;
1803 tet_infoline( "UtcDaliVisualFactoryGetPrimitiveVisualN1: Request primitive visual without shape" );
1805 //Set up visual properties, without supplying shape.
1806 Property::Map propertyMap;
1807 propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE );
1809 //Test to see if shape loads regardless of missing input.
1810 TestPrimitiveVisualWithProperties( propertyMap, application );
1815 int UtcDaliVisualFactoryGetAnimatedImageVisual1(void)
1817 ToolkitTestApplication application;
1818 tet_infoline( "UtcDaliVisualFactoryGetAnimatedImageVisual1: Request animated image visual with a gif url" );
1820 TestGlAbstraction& gl = application.GetGlAbstraction();
1821 TraceCallStack& textureTrace = gl.GetTextureTrace();
1822 textureTrace.Enable(true);
1824 VisualFactory factory = VisualFactory::Get();
1825 Visual::Base visual = factory.CreateVisual( TEST_GIF_FILE_NAME, ImageDimensions() );
1826 DALI_TEST_CHECK( visual );
1828 DummyControl actor = DummyControl::New(true);
1829 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1830 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1831 actor.SetSize( 200.0f, 200.0f );
1832 Stage::GetCurrent().Add( actor );
1834 application.SendNotification();
1835 application.Render();
1837 // renderer is added to actor
1838 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
1839 Renderer renderer = actor.GetRendererAt( 0u );
1840 DALI_TEST_CHECK( renderer );
1842 DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION );
1843 textureTrace.Reset();
1845 // Force the timer used by the animatedImageVisual to tick,
1846 Dali::Timer timer = Timer::New( 0 );
1847 timer.MockEmitSignal();
1848 application.SendNotification();
1849 application.Render();
1850 DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION );
1851 textureTrace.Reset();
1854 // Force the timer used by the animatedImageVisual to tick,
1855 timer.MockEmitSignal();
1856 application.SendNotification();
1857 application.Render();
1858 DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION );
1859 textureTrace.Reset();
1861 // Force the timer used by the animatedImageVisual to tick,
1862 timer.MockEmitSignal();
1863 application.SendNotification();
1864 application.Render();
1865 DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION );
1866 textureTrace.Reset();
1868 // Test SetOffStage().
1870 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
1875 int UtcDaliVisualFactoryGetAnimatedImageVisual2(void)
1877 ToolkitTestApplication application;
1878 tet_infoline( "UtcDaliVisualFactoryGetAnimatedImageVisual2: Request animated image visual with a Property::Map, test custom wrap mode and pixel area" );
1880 const Vector4 pixelArea(-0.5f, -0.5f, 2.f, 2.f);
1881 Property::Map propertyMap;
1882 propertyMap.Add( Toolkit::Visual::Property::TYPE, Visual::IMAGE )
1883 .Add( ImageVisual::Property::URL, TEST_GIF_FILE_NAME )
1884 .Add( ImageVisual::Property::PIXEL_AREA, pixelArea )
1885 .Add( ImageVisual::Property::WRAP_MODE_U, WrapMode::MIRRORED_REPEAT )
1886 .Add( ImageVisual::Property::WRAP_MODE_V, WrapMode::REPEAT );
1888 Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
1889 DALI_TEST_CHECK( visual );
1891 TestGlAbstraction& gl = application.GetGlAbstraction();
1892 TraceCallStack& textureTrace = gl.GetTextureTrace();
1893 textureTrace.Enable(true);
1894 TraceCallStack& texParameterTrace = gl.GetTexParameterTrace();
1895 texParameterTrace.Enable( true );
1897 DummyControl actor = DummyControl::New(true);
1898 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1899 dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual );
1900 actor.SetSize( 200.0f, 200.0f );
1901 Stage::GetCurrent().Add( actor );
1903 application.SendNotification();
1904 application.Render();
1906 DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
1908 DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION );
1910 // For animated image visual, the wrapping is handled manually in shader, so the following gl function should not be called
1911 std::stringstream out;
1912 out << GL_TEXTURE_2D << ", " << GL_TEXTURE_WRAP_S << ", " << GL_MIRRORED_REPEAT;
1913 DALI_TEST_CHECK( !texParameterTrace.FindMethodAndParams("TexParameteri", out.str()) );
1915 out << GL_TEXTURE_2D << ", " << GL_TEXTURE_WRAP_T << ", " << GL_REPEAT;
1916 DALI_TEST_CHECK( !texParameterTrace.FindMethodAndParams("TexParameteri", out.str()) );
1918 // test the uniforms which used to handle the wrap mode
1919 Renderer renderer = actor.GetRendererAt( 0u );
1920 DALI_TEST_CHECK( renderer );
1922 Property::Value pixelAreaValue = renderer.GetProperty( renderer.GetPropertyIndex( "pixelArea" ) );
1923 DALI_TEST_EQUALS( pixelAreaValue.Get<Vector4>(), pixelArea, TEST_LOCATION );
1924 Vector4 pixelAreaUniform;
1925 DALI_TEST_CHECK( gl.GetUniformValue<Vector4>( "pixelArea", pixelAreaUniform ) );
1926 DALI_TEST_EQUALS( pixelArea, pixelAreaUniform, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1928 Property::Value wrapModeValue = renderer.GetProperty( renderer.GetPropertyIndex( "wrapMode" ) );
1929 Vector2 wrapMode( WrapMode::MIRRORED_REPEAT-1, WrapMode::REPEAT-1 );
1930 DALI_TEST_EQUALS( wrapModeValue.Get<Vector2>(), wrapMode, TEST_LOCATION );
1931 Vector2 wrapModeUniform;
1932 DALI_TEST_CHECK( gl.GetUniformValue<Vector2>( "wrapMode", wrapModeUniform ) );
1933 DALI_TEST_EQUALS( wrapMode, wrapModeUniform, Math::MACHINE_EPSILON_100, TEST_LOCATION );
1936 DALI_TEST_CHECK( actor.GetRendererCount() == 0u );