2 * Copyright (c) 2022 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.
20 #include <toolkit-event-thread-callback.h>
21 #include <toolkit-timer.h>
22 #include "dummy-control.h"
24 #include <dali-toolkit-test-suite-utils.h>
25 #include <dali-toolkit/dali-toolkit.h>
26 #include <dali-toolkit/devel-api/utility/npatch-utilities.h>
27 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
28 #include <dali-toolkit/devel-api/visuals/image-visual-properties-devel.h>
29 #include <dali-toolkit/internal/visuals/npatch-loader.h>
30 #include <dali/devel-api/adaptor-framework/image-loading.h>
31 #include <dali/integration-api/debug.h>
32 #include <dali/integration-api/adaptor-framework/shader-precompiler.h>
35 using namespace Dali::Toolkit;
39 typedef Toolkit::NPatchUtility::StretchRanges StretchRanges;
41 const char* TEST_9_PATCH_FILE_NAME = TEST_RESOURCE_DIR "/demo-tile-texture-focused.9.png";
42 const char* TEST_NPATCH_FILE_NAME = TEST_RESOURCE_DIR "/heartsframe.9.png";
43 const char* TEST_SVG_FILE_NAME = TEST_RESOURCE_DIR "/svg1.svg";
44 const char* TEST_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube.obj";
45 const char* TEST_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal.mtl";
46 const char* TEST_SIMPLE_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube-Points-Only.obj";
47 const char* TEST_SIMPLE_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal-Simple.mtl";
48 const char* TEST_AUX_IMAGE = TEST_RESOURCE_DIR "/folder_appicon_empty_bg.png";
49 const char* TEST_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/gallery-small-1.jpg";
51 // resolution: 50*50, frame count: 4, frame delay: 0.2 second for each frame
52 const char* TEST_GIF_FILE_NAME = TEST_RESOURCE_DIR "/anim.gif";
54 // resolution: 34*34, pixel format: RGBA8888
55 static const char* gImage_34_RGBA = TEST_RESOURCE_DIR "/icon-edit.png";
57 Property::Map DefaultTransform()
59 Property::Map transformMap;
61 .Add(Toolkit::Visual::Transform::Property::OFFSET, Vector2(0.0f, 0.0f))
62 .Add(Toolkit::Visual::Transform::Property::SIZE, Vector2(1.0f, 1.0f))
63 .Add(Toolkit::Visual::Transform::Property::ORIGIN, Toolkit::Align::CENTER)
64 .Add(Toolkit::Visual::Transform::Property::ANCHOR_POINT, Toolkit::Align::CENTER)
65 .Add(Toolkit::Visual::Transform::Property::OFFSET_POLICY, Vector2(Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::RELATIVE))
66 .Add(Toolkit::Visual::Transform::Property::SIZE_POLICY, Vector2(Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::RELATIVE));
70 void TestVisualRender(ToolkitTestApplication& application,
74 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
75 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
77 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
78 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
80 application.GetScene().Add(actor);
82 application.SendNotification();
86 application.SendNotification();
88 DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION);
91 void TestVisualAsynchronousRender(ToolkitTestApplication& application,
95 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
96 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
98 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
99 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
101 application.GetScene().Add(actor);
103 application.SendNotification();
104 application.Render();
106 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
108 application.SendNotification();
109 application.Render();
111 DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION);
114 int gResourceReadySignalCounter;
116 void OnResourceReadySignal(Control control)
118 gResourceReadySignalCounter++;
123 void dali_visual_factory_startup(void)
125 test_return_value = TET_UNDEF;
128 void dali_visual_factory_cleanup(void)
130 test_return_value = TET_PASS;
133 int UtcDaliVisualFactoryGet(void)
135 ToolkitTestApplication application;
136 tet_infoline("UtcDaliVisualFactory");
140 type = TypeRegistry::Get().GetTypeInfo("VisualFactory");
141 DALI_TEST_CHECK(type);
142 BaseHandle handle = type.CreateInstance();
143 DALI_TEST_CHECK(handle);
145 VisualFactory factory;
146 factory = VisualFactory::Get();
147 DALI_TEST_CHECK(factory);
149 VisualFactory newFactory = VisualFactory::Get();
150 DALI_TEST_CHECK(newFactory);
152 // Check that visual factory is a singleton
153 DALI_TEST_CHECK(factory == newFactory);
158 int UtcDaliVisualFactoryCopyAndAssignment(void)
160 ToolkitTestApplication application;
161 tet_infoline("UtcDaliVisualFactoryCopyAndAssignment");
162 VisualFactory factory = VisualFactory::Get();
164 VisualFactory factoryCopy(factory);
165 DALI_TEST_CHECK(factory == factoryCopy);
167 VisualFactory emptyFactory;
168 VisualFactory emptyFactoryCopy(emptyFactory);
169 DALI_TEST_CHECK(emptyFactory == emptyFactoryCopy);
171 VisualFactory factoryEquals;
172 factoryEquals = factory;
173 DALI_TEST_CHECK(factory == factoryEquals);
175 VisualFactory emptyFactoryEquals;
176 emptyFactoryEquals = emptyFactory;
177 DALI_TEST_CHECK(emptyFactory == emptyFactoryEquals);
181 DALI_TEST_CHECK(factory = factoryCopy);
186 int UtcDaliVisualFactoryGetColorVisual1(void)
188 ToolkitTestApplication application;
189 tet_infoline("UtcDaliVisualFactoryGetColorVisual1: Request color visual with a Property::Map");
191 static std::vector<UniformData> customUniforms =
193 UniformData("mixColor", Property::Type::VECTOR3),
196 TestGraphicsController& graphics = application.GetGraphicsController();
197 graphics.AddCustomUniforms(customUniforms);
199 VisualFactory factory = VisualFactory::Get();
200 DALI_TEST_CHECK(factory);
202 Property::Map propertyMap;
203 Vector4 testColor(1.f, 0.5f, 0.3f, 0.2f);
204 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
205 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, testColor);
207 Visual::Base visual = factory.CreateVisual(propertyMap);
208 DALI_TEST_CHECK(visual);
210 DummyControl actor = DummyControl::New(true);
211 TestVisualRender(application, actor, visual);
213 Vector3 actualValue(Vector4::ZERO);
214 Vector4 actualColor(Vector4::ZERO);
215 TestGlAbstraction& gl = application.GetGlAbstraction();
216 DALI_TEST_CHECK(gl.GetUniformValue<Vector3>("mixColor", actualValue));
217 DALI_TEST_CHECK(gl.GetUniformValue<Vector4>("uColor", actualColor));
218 DALI_TEST_EQUALS(actualValue, Vector3(testColor), TEST_LOCATION);
219 DALI_TEST_EQUALS(actualColor.a, testColor.a, TEST_LOCATION);
224 int UtcDaliVisualFactoryGetColorVisual2(void)
226 ToolkitTestApplication application;
227 tet_infoline("UtcDaliVisualFactoryGetColorVisual2: Request color visual with a Vector4");
229 static std::vector<UniformData> customUniforms =
231 UniformData("mixColor", Property::Type::VECTOR3),
234 TestGraphicsController& graphics = application.GetGraphicsController();
235 graphics.AddCustomUniforms(customUniforms);
237 VisualFactory factory = VisualFactory::Get();
238 DALI_TEST_CHECK(factory);
240 Vector4 testColor(1.f, 0.5f, 0.3f, 0.2f);
241 Dali::Property::Map map;
242 map[Toolkit::Visual::Property::TYPE] = Visual::COLOR;
243 map[ColorVisual::Property::MIX_COLOR] = testColor;
244 Visual::Base visual = factory.CreateVisual(map);
245 DALI_TEST_CHECK(visual);
247 DummyControl actor = DummyControl::New(true);
248 TestVisualRender(application, actor, visual);
252 TestGlAbstraction& gl = application.GetGlAbstraction();
253 DALI_TEST_CHECK(gl.GetUniformValue<Vector3>("mixColor", actualValue));
254 DALI_TEST_CHECK(gl.GetUniformValue<Vector4>("uColor", actualColor));
255 DALI_TEST_EQUALS(actualValue, Vector3(testColor), TEST_LOCATION);
256 DALI_TEST_EQUALS(actualColor.a, testColor.a, TEST_LOCATION);
258 application.GetScene().Remove(actor);
259 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
264 int UtcDaliVisualFactoryGetBorderVisual1(void)
266 ToolkitTestApplication application;
267 tet_infoline("UtcDaliVisualFactoryGetBorderVisual1: Request border visual with a Property::Map");
269 static std::vector<UniformData> customUniforms =
271 UniformData("borderColor", Property::Type::VECTOR4),
272 UniformData("borderSize", Property::Type::FLOAT),
275 TestGraphicsController& graphics = application.GetGraphicsController();
276 graphics.AddCustomUniforms(customUniforms);
278 VisualFactory factory = VisualFactory::Get();
279 DALI_TEST_CHECK(factory);
281 Property::Map propertyMap;
282 Vector4 testColor(1.f, 0.5f, 0.3f, 0.2f);
283 float testSize = 5.f;
284 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
285 propertyMap.Insert(BorderVisual::Property::COLOR, testColor);
286 propertyMap.Insert(BorderVisual::Property::SIZE, testSize);
288 Visual::Base visual = factory.CreateVisual(propertyMap);
289 DALI_TEST_CHECK(visual);
291 DummyControl actor = DummyControl::New(true);
292 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
293 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
294 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
295 application.GetScene().Add(actor);
296 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
298 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
299 int blendMode = actor.GetRendererAt(0u).GetProperty<int>(Renderer::Property::BLEND_MODE);
300 DALI_TEST_EQUALS(static_cast<BlendMode::Type>(blendMode), BlendMode::ON, TEST_LOCATION);
302 TestGlAbstraction& gl = application.GetGlAbstraction();
304 application.SendNotification();
305 application.Render(0);
307 Vector4 actualColor(Vector4::ZERO);
308 DALI_TEST_CHECK(gl.GetUniformValue<Vector4>("borderColor", actualColor));
309 DALI_TEST_EQUALS(actualColor, testColor, TEST_LOCATION);
311 float actualSize = 0.f;
312 DALI_TEST_CHECK(gl.GetUniformValue<float>("borderSize", actualSize));
313 DALI_TEST_EQUALS(actualSize, testSize, TEST_LOCATION);
316 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
321 int UtcDaliVisualFactoryGetBorderVisual2(void)
323 ToolkitTestApplication application;
324 tet_infoline("UtcDaliVisualFactoryGetBorderVisual2: Request border visual with a borderSize and a borderColor");
326 static std::vector<UniformData> customUniforms =
328 UniformData("borderColor", Property::Type::VECTOR4),
329 UniformData("borderSize", Property::Type::FLOAT),
332 TestGraphicsController& graphics = application.GetGraphicsController();
333 graphics.AddCustomUniforms(customUniforms);
335 VisualFactory factory = VisualFactory::Get();
336 DALI_TEST_CHECK(factory);
338 Vector4 testColor(1.f, 0.5f, 0.3f, 1.f);
339 float testSize = 5.f;
341 Dali::Property::Map propertyMap;
342 propertyMap[Toolkit::Visual::Property::TYPE] = Visual::BORDER;
343 propertyMap[BorderVisual::Property::COLOR] = testColor;
344 propertyMap[BorderVisual::Property::SIZE] = testSize;
345 Visual::Base visual = factory.CreateVisual(propertyMap);
346 DALI_TEST_CHECK(visual);
348 DummyControl actor = DummyControl::New(true);
349 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
350 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
351 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
352 application.GetScene().Add(actor);
353 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
355 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
357 TestGlAbstraction& gl = application.GetGlAbstraction();
359 application.SendNotification();
360 application.Render(0);
362 int blendMode = actor.GetRendererAt(0u).GetProperty<int>(Renderer::Property::BLEND_MODE);
363 DALI_TEST_EQUALS(static_cast<BlendMode::Type>(blendMode), BlendMode::AUTO, TEST_LOCATION);
365 Vector4 actualColor(Vector4::ZERO);
366 DALI_TEST_CHECK(gl.GetUniformValue<Vector4>("borderColor", actualColor));
367 DALI_TEST_EQUALS(actualColor, testColor, TEST_LOCATION);
369 float actualSize = 0.f;
370 DALI_TEST_CHECK(gl.GetUniformValue<float>("borderSize", actualSize));
371 DALI_TEST_EQUALS(actualSize, testSize, TEST_LOCATION);
375 // enable the anti-aliasing
376 Dali::Property::Map map;
377 map[Toolkit::Visual::Property::TYPE] = Visual::BORDER;
378 map[BorderVisual::Property::COLOR] = testColor;
379 map[BorderVisual::Property::SIZE] = testSize;
380 map[BorderVisual::Property::ANTI_ALIASING] = true;
381 visual = factory.CreateVisual(map);
383 dummyImpl.RegisterVisual(Control::CONTROL_PROPERTY_END_INDEX + 1, visual);
384 application.GetScene().Add(actor);
386 blendMode = actor.GetRendererAt(0u).GetProperty<int>(Renderer::Property::BLEND_MODE);
387 DALI_TEST_EQUALS(static_cast<BlendMode::Type>(blendMode), BlendMode::ON, TEST_LOCATION);
392 int UtcDaliVisualFactoryGetLinearGradientVisual(void)
394 ToolkitTestApplication application;
395 tet_infoline("UtcDaliVisualFactoryGetRadialGradientVisual");
397 static std::vector<UniformData> customUniforms =
399 UniformData("uAlignmentMatrix", Property::Type::MATRIX),
402 TestGraphicsController& graphics = application.GetGraphicsController();
403 graphics.AddCustomUniforms(customUniforms);
405 VisualFactory factory = VisualFactory::Get();
406 DALI_TEST_CHECK(factory);
408 Property::Map propertyMap;
409 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
411 Vector2 start(-1.f, -1.f);
412 Vector2 end(1.f, 1.f);
413 propertyMap.Insert(GradientVisual::Property::START_POSITION, start);
414 propertyMap.Insert(GradientVisual::Property::END_POSITION, end);
415 propertyMap.Insert(GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT);
417 Property::Array stopOffsets;
418 stopOffsets.PushBack(0.2f);
419 stopOffsets.PushBack(0.8f);
420 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, stopOffsets);
422 Property::Array stopColors;
423 stopColors.PushBack(Color::RED);
424 stopColors.PushBack(Color::GREEN);
425 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
427 Visual::Base visual = factory.CreateVisual(propertyMap);
428 DALI_TEST_CHECK(visual);
430 // A lookup texture is generated and pass to shader as sampler
431 DummyControl actor = DummyControl::New(true);
432 TestVisualRender(application, actor, visual);
437 int UtcDaliVisualFactoryGetRadialGradientVisual(void)
439 ToolkitTestApplication application;
440 tet_infoline("UtcDaliVisualFactoryGetRadialGradientVisual");
442 static std::vector<UniformData> customUniforms =
444 UniformData("uAlignmentMatrix", Property::Type::MATRIX3),
447 TestGraphicsController& graphics = application.GetGraphicsController();
448 graphics.AddCustomUniforms(customUniforms);
450 VisualFactory factory = VisualFactory::Get();
451 DALI_TEST_CHECK(factory);
453 Property::Map propertyMap;
454 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
456 Vector2 center(100.f, 100.f);
457 float radius = 100.f;
458 propertyMap.Insert(GradientVisual::Property::UNITS, GradientVisual::Units::USER_SPACE);
459 propertyMap.Insert(GradientVisual::Property::CENTER, center);
460 propertyMap.Insert(GradientVisual::Property::RADIUS, radius);
462 Property::Array stopOffsets;
463 stopOffsets.PushBack(0.0f);
464 stopOffsets.PushBack(1.f);
465 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, stopOffsets);
467 Property::Array stopColors;
468 stopColors.PushBack(Color::RED);
469 stopColors.PushBack(Color::GREEN);
470 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
472 Visual::Base visual = factory.CreateVisual(propertyMap);
473 DALI_TEST_CHECK(visual);
475 // A lookup texture is generated and pass to shader as sampler
476 DummyControl actor = DummyControl::New(true);
477 TestVisualRender(application, actor, visual);
479 Matrix3 alignMatrix(radius, 0.f, 0.f, 0.f, radius, 0.f, center.x, center.y, 1.f);
480 alignMatrix.Invert();
482 Matrix3 actualValue(Matrix3::IDENTITY);
483 TestGlAbstraction& gl = application.GetGlAbstraction();
484 DALI_TEST_CHECK(gl.GetUniformValue<Matrix3>("uAlignmentMatrix", actualValue));
485 DALI_TEST_EQUALS(actualValue, alignMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION);
490 int UtcDaliVisualFactoryDefaultOffsetsGradientVisual(void)
492 ToolkitTestApplication application;
493 tet_infoline("UtcDaliVisualFactoryGetRadialGradientVisual");
495 VisualFactory factory = VisualFactory::Get();
496 DALI_TEST_CHECK(factory);
498 Property::Map propertyMap;
499 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
501 Vector2 start(-1.f, -1.f);
502 Vector2 end(1.f, 1.f);
503 propertyMap.Insert(GradientVisual::Property::START_POSITION, start);
504 propertyMap.Insert(GradientVisual::Property::END_POSITION, end);
505 propertyMap.Insert(GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT);
507 Property::Array stopColors;
508 stopColors.PushBack(Color::RED);
509 stopColors.PushBack(Color::GREEN);
510 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
512 Visual::Base visual = factory.CreateVisual(propertyMap);
513 DALI_TEST_CHECK(visual);
515 // A lookup texture is generated and pass to shader as sampler
516 DummyControl actor = DummyControl::New(true);
517 TestVisualRender(application, actor, visual);
519 application.GetScene().Remove(actor);
520 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
525 int UtcDaliVisualFactoryGetNPatchVisualSynchronousLoad1(void)
527 ToolkitTestApplication application;
528 tet_infoline("UtcDaliVisualFactoryGetNPatchVisualSynchronousLoad1: Request 9-patch visual with a Property::Map");
530 VisualFactory factory = VisualFactory::Get();
531 DALI_TEST_CHECK(factory);
533 // Get actual size of test image
534 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_9_PATCH_FILE_NAME);
536 Property::Map propertyMap;
537 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
538 propertyMap.Insert(ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME);
539 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
541 tet_infoline("whole grid");
542 Visual::Base visual = factory.CreateVisual(propertyMap);
543 DALI_TEST_CHECK(visual);
545 TestGlAbstraction& gl = application.GetGlAbstraction();
546 TraceCallStack& textureTrace = gl.GetTextureTrace();
547 textureTrace.Enable(true);
549 DummyControl actor = DummyControl::New(true);
550 TestVisualRender(application, actor, visual);
552 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
554 Vector2 naturalSize(0.0f, 0.0f);
555 visual.GetNaturalSize(naturalSize);
556 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
559 propertyMap.Insert(ImageVisual::Property::BORDER_ONLY, true);
561 tet_infoline("border only");
562 Visual::Base visual = factory.CreateVisual(propertyMap);
563 DALI_TEST_CHECK(visual);
565 TestGlAbstraction& gl = application.GetGlAbstraction();
566 TraceCallStack& textureTrace = gl.GetTextureTrace();
567 textureTrace.Enable(true);
569 DummyControl actor = DummyControl::New(true);
570 TestVisualRender(application, actor, visual);
572 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
574 Vector2 naturalSize(0.0f, 0.0f);
575 visual.GetNaturalSize(naturalSize);
576 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
582 int UtcDaliVisualFactoryGetNPatchVisualSynchronousLoad2(void)
584 ToolkitTestApplication application;
585 tet_infoline("UtcDaliVisualFactoryGetNPatchVisualSynchronousLoad2: Request 9-patch visual with a Property::Map including border");
587 VisualFactory factory = VisualFactory::Get();
588 DALI_TEST_CHECK(factory);
590 // Get actual size of test image
591 ImageDimensions imageSize = Dali::GetClosestImageSize(gImage_34_RGBA);
593 Property::Map propertyMap;
594 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
595 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
596 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(2, 2, 2, 2));
597 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
599 tet_infoline("whole grid");
600 Visual::Base visual = factory.CreateVisual(propertyMap);
601 DALI_TEST_CHECK(visual);
603 TestGlAbstraction& gl = application.GetGlAbstraction();
604 TraceCallStack& textureTrace = gl.GetTextureTrace();
605 textureTrace.Enable(true);
607 DummyControl actor = DummyControl::New(true);
608 TestVisualRender(application, actor, visual);
610 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
612 Vector2 naturalSize(0.0f, 0.0f);
613 visual.GetNaturalSize(naturalSize);
614 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
617 propertyMap.Insert(ImageVisual::Property::BORDER_ONLY, true);
619 tet_infoline("border only");
620 Visual::Base visual = factory.CreateVisual(propertyMap);
621 DALI_TEST_CHECK(visual);
623 TestGlAbstraction& gl = application.GetGlAbstraction();
624 TraceCallStack& textureTrace = gl.GetTextureTrace();
625 textureTrace.Enable(true);
627 DummyControl actor = DummyControl::New(true);
628 TestVisualRender(application, actor, visual);
630 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
632 Vector2 naturalSize(0.0f, 0.0f);
633 visual.GetNaturalSize(naturalSize);
634 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
638 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
639 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
640 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(1, 1, 1, 1));
641 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
643 tet_infoline("whole grid");
644 Visual::Base visual = factory.CreateVisual(propertyMap);
645 DALI_TEST_CHECK(visual);
647 TestGlAbstraction& gl = application.GetGlAbstraction();
648 TraceCallStack& textureTrace = gl.GetTextureTrace();
649 textureTrace.Enable(true);
651 DummyControl actor = DummyControl::New(true);
652 TestVisualRender(application, actor, visual);
654 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
656 Vector2 naturalSize(0.0f, 0.0f);
657 visual.GetNaturalSize(naturalSize);
658 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
664 int UtcDaliVisualFactoryGetNPatchVisual1(void)
666 ToolkitTestApplication application;
667 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual1: Request 9-patch visual with a Property::Map");
669 VisualFactory factory = VisualFactory::Get();
670 DALI_TEST_CHECK(factory);
672 // Get actual size of test image
673 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_9_PATCH_FILE_NAME);
675 Property::Map propertyMap;
676 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
677 propertyMap.Insert(ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME);
678 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, false);
680 tet_infoline("whole grid");
681 Visual::Base visual = factory.CreateVisual(propertyMap);
682 DALI_TEST_CHECK(visual);
684 Vector2 naturalSize(0.0f, 0.0f);
685 visual.GetNaturalSize(naturalSize);
686 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
688 TestGlAbstraction& gl = application.GetGlAbstraction();
689 TraceCallStack& textureTrace = gl.GetTextureTrace();
690 textureTrace.Enable(true);
692 DummyControl actor = DummyControl::New(true);
693 TestVisualAsynchronousRender(application, actor, visual);
695 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
697 visual.GetNaturalSize(naturalSize);
698 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
701 propertyMap.Insert(ImageVisual::Property::BORDER_ONLY, true);
703 tet_infoline("border only");
704 Visual::Base visual = factory.CreateVisual(propertyMap);
705 DALI_TEST_CHECK(visual);
707 TestGlAbstraction& gl = application.GetGlAbstraction();
708 TraceCallStack& textureTrace = gl.GetTextureTrace();
709 textureTrace.Enable(true);
711 DummyControl actor = DummyControl::New(true);
712 TestVisualRender(application, actor, visual);
714 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
716 Vector2 naturalSize(0.0f, 0.0f);
717 visual.GetNaturalSize(naturalSize);
718 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
724 int UtcDaliVisualFactoryGetNPatchVisual2(void)
726 ToolkitTestApplication application;
727 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual2: Request 9-patch visual with a Property::Map including border");
729 VisualFactory factory = VisualFactory::Get();
730 DALI_TEST_CHECK(factory);
732 // Get actual size of test image
733 ImageDimensions imageSize = Dali::GetClosestImageSize(gImage_34_RGBA);
735 Property::Map propertyMap;
736 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
737 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
738 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(2, 2, 2, 2));
740 tet_infoline("whole grid (2,2,2,2) async");
741 Visual::Base visual = factory.CreateVisual(propertyMap);
742 DALI_TEST_CHECK(visual);
744 TestGlAbstraction& gl = application.GetGlAbstraction();
745 TraceCallStack& textureTrace = gl.GetTextureTrace();
746 textureTrace.Enable(true);
748 DummyControl actor = DummyControl::New(true);
749 TestVisualAsynchronousRender(application, actor, visual);
751 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
753 Vector2 naturalSize(0.0f, 0.0f);
754 visual.GetNaturalSize(naturalSize);
755 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
758 propertyMap.Insert(ImageVisual::Property::BORDER_ONLY, true);
760 tet_infoline("border only");
761 Visual::Base visual = factory.CreateVisual(propertyMap);
762 DALI_TEST_CHECK(visual);
764 TestGlAbstraction& gl = application.GetGlAbstraction();
765 TraceCallStack& textureTrace = gl.GetTextureTrace();
766 textureTrace.Enable(true);
768 DummyControl actor = DummyControl::New(true);
769 TestVisualRender(application, actor, visual);
771 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
773 Vector2 naturalSize(0.0f, 0.0f);
774 visual.GetNaturalSize(naturalSize);
775 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
779 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
780 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
781 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(2, 2, 2, 2));
782 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
784 tet_infoline("whole grid (2,2,2,2) sync");
785 Visual::Base visual = factory.CreateVisual(propertyMap);
786 DALI_TEST_CHECK(visual);
788 TestGlAbstraction& gl = application.GetGlAbstraction();
789 TraceCallStack& textureTrace = gl.GetTextureTrace();
790 textureTrace.Enable(true);
792 DummyControl actor = DummyControl::New(true);
793 TestVisualRender(application, actor, visual);
795 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
797 Vector2 naturalSize(0.0f, 0.0f);
798 visual.GetNaturalSize(naturalSize);
799 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
803 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
804 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
805 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(1, 1, 1, 1));
806 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
808 tet_infoline("whole grid (1,1,1,1) sync : for testing same image, different border");
809 Visual::Base visual = factory.CreateVisual(propertyMap);
810 DALI_TEST_CHECK(visual);
812 TestGlAbstraction& gl = application.GetGlAbstraction();
813 TraceCallStack& textureTrace = gl.GetTextureTrace();
814 textureTrace.Enable(true);
816 DummyControl actor = DummyControl::New(true);
817 TestVisualRender(application, actor, visual);
819 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
821 Vector2 naturalSize(0.0f, 0.0f);
822 visual.GetNaturalSize(naturalSize);
823 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
827 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
828 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
829 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(1, 1, 1, 1));
831 tet_infoline("whole grid (1,1,1,1) async");
832 Visual::Base visual = factory.CreateVisual(propertyMap);
833 DALI_TEST_CHECK(visual);
835 TestGlAbstraction& gl = application.GetGlAbstraction();
836 TraceCallStack& textureTrace = gl.GetTextureTrace();
837 textureTrace.Enable(true);
839 DummyControl actor = DummyControl::New(true);
840 TestVisualRender(application, actor, visual);
842 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
844 Vector2 naturalSize(0.0f, 0.0f);
845 visual.GetNaturalSize(naturalSize);
846 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
850 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
851 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
852 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(3, 3, 3, 3));
854 tet_infoline("whole grid (3,3,3,3) async");
855 Visual::Base visual = factory.CreateVisual(propertyMap);
856 DALI_TEST_CHECK(visual);
858 TestGlAbstraction& gl = application.GetGlAbstraction();
859 TraceCallStack& textureTrace = gl.GetTextureTrace();
860 textureTrace.Enable(true);
862 DummyControl actor = DummyControl::New(true);
863 TestVisualRender(application, actor, visual);
865 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
867 Vector2 naturalSize(0.0f, 0.0f);
868 visual.GetNaturalSize(naturalSize);
869 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
875 int UtcDaliVisualFactoryGetNPatchVisual3(void)
877 ToolkitTestApplication application;
878 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual3: Request n-patch visual with a Property::Map");
880 VisualFactory factory = VisualFactory::Get();
881 DALI_TEST_CHECK(factory);
883 // Get actual size of test image
884 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_NPATCH_FILE_NAME);
886 Property::Map propertyMap;
887 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
888 propertyMap.Insert(ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME);
890 Visual::Base visual = factory.CreateVisual(propertyMap);
891 DALI_TEST_CHECK(visual);
893 TestGlAbstraction& gl = application.GetGlAbstraction();
894 TraceCallStack& textureTrace = gl.GetTextureTrace();
895 textureTrace.Enable(true);
897 DummyControl actor = DummyControl::New(true);
898 TestVisualAsynchronousRender(application, actor, visual);
900 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
902 Vector2 naturalSize(0.0f, 0.0f);
903 visual.GetNaturalSize(naturalSize);
904 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
907 propertyMap.Insert(ImageVisual::Property::BORDER_ONLY, true);
909 tet_infoline("border only");
910 Visual::Base visual = factory.CreateVisual(propertyMap);
911 DALI_TEST_CHECK(visual);
913 TestGlAbstraction& gl = application.GetGlAbstraction();
914 TraceCallStack& textureTrace = gl.GetTextureTrace();
915 textureTrace.Enable(true);
916 DummyControl actor = DummyControl::New(true);
917 TestVisualRender(application, actor, visual);
919 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
921 Vector2 naturalSize(0.0f, 0.0f);
922 visual.GetNaturalSize(naturalSize);
923 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
925 application.GetScene().Remove(actor);
926 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
932 int UtcDaliVisualFactoryGetNPatchVisual4(void)
934 ToolkitTestApplication application;
935 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual4: Request 9-patch visual with an image url");
937 // Get actual size of test image
938 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_9_PATCH_FILE_NAME);
940 VisualFactory factory = VisualFactory::Get();
941 DALI_TEST_CHECK(factory);
943 Visual::Base visual = factory.CreateVisual(TEST_9_PATCH_FILE_NAME, ImageDimensions());
944 DALI_TEST_CHECK(visual);
946 TestGlAbstraction& gl = application.GetGlAbstraction();
947 TraceCallStack& textureTrace = gl.GetTextureTrace();
948 textureTrace.Enable(true);
949 DummyControl actor = DummyControl::New(true);
950 TestVisualAsynchronousRender(application, actor, visual);
952 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
954 Vector2 naturalSize(0.0f, 0.0f);
955 visual.GetNaturalSize(naturalSize);
956 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
958 textureTrace.Reset();
963 int UtcDaliVisualFactoryGetNPatchVisual5(void)
965 ToolkitTestApplication application;
966 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual5: Request n-patch visual with an image url");
968 // Get actual size of test image
969 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_NPATCH_FILE_NAME);
971 VisualFactory factory = VisualFactory::Get();
972 DALI_TEST_CHECK(factory);
974 Visual::Base visual = factory.CreateVisual(TEST_NPATCH_FILE_NAME, ImageDimensions());
975 DALI_TEST_CHECK(visual);
977 TestGlAbstraction& gl = application.GetGlAbstraction();
978 TraceCallStack& textureTrace = gl.GetTextureTrace();
979 textureTrace.Enable(true);
981 DummyControl actor = DummyControl::New(true);
982 TestVisualAsynchronousRender(application, actor, visual);
984 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
986 Vector2 naturalSize(0.0f, 0.0f);
987 visual.GetNaturalSize(naturalSize);
988 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
993 int UtcDaliVisualFactoryGetNPatchVisual6(void)
995 ToolkitTestApplication application;
996 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual6: Request n-patch visual with a general image");
998 VisualFactory factory = VisualFactory::Get();
999 DALI_TEST_CHECK(factory);
1002 // Get actual size of test image
1003 ImageDimensions imageSize = Dali::GetClosestImageSize(gImage_34_RGBA);
1005 Property::Map propertyMap;
1006 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1007 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
1009 Visual::Base visual = factory.CreateVisual(propertyMap);
1010 DALI_TEST_CHECK(visual);
1012 TestGlAbstraction& gl = application.GetGlAbstraction();
1013 TraceCallStack& textureTrace = gl.GetTextureTrace();
1014 textureTrace.Enable(true);
1016 DummyControl actor = DummyControl::New(true);
1017 TestVisualAsynchronousRender(application, actor, visual);
1019 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1021 Vector2 naturalSize(0.0f, 0.0f);
1022 visual.GetNaturalSize(naturalSize);
1023 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
1025 application.GetScene().Remove(actor);
1026 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
1030 // Get actual size of test image
1031 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_IMAGE_FILE_NAME);
1033 Property::Map propertyMap;
1034 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1035 propertyMap.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME);
1037 Visual::Base visual = factory.CreateVisual(propertyMap);
1038 DALI_TEST_CHECK(visual);
1040 TestGlAbstraction& gl = application.GetGlAbstraction();
1041 TraceCallStack& textureTrace = gl.GetTextureTrace();
1042 textureTrace.Enable(true);
1044 DummyControl actor = DummyControl::New(true);
1045 TestVisualAsynchronousRender(application, actor, visual);
1047 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1049 Vector2 naturalSize(0.0f, 0.0f);
1050 visual.GetNaturalSize(naturalSize);
1051 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
1053 application.GetScene().Remove(actor);
1054 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
1060 int UtcDaliVisualFactoryGetNPatchVisual7(void)
1062 ToolkitTestApplication application;
1063 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual7: Add 9-patch visual on stage and instantly remove it.");
1065 VisualFactory factory = VisualFactory::Get();
1066 DALI_TEST_CHECK(factory);
1068 // Get actual size of test image
1069 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_9_PATCH_FILE_NAME);
1071 Property::Map propertyMap;
1072 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1073 propertyMap.Insert(ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME);
1074 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, false);
1076 Visual::Base visual = factory.CreateVisual(propertyMap);
1077 DALI_TEST_CHECK(visual);
1079 Vector2 naturalSize(0.0f, 0.0f);
1080 visual.GetNaturalSize(naturalSize);
1081 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
1083 TestGlAbstraction& gl = application.GetGlAbstraction();
1084 TraceCallStack& textureTrace = gl.GetTextureTrace();
1085 textureTrace.Enable(true);
1087 DummyControl actor = DummyControl::New(true);
1089 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1090 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1092 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1093 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1095 application.GetScene().Add(actor);
1098 application.SendNotification();
1099 application.Render();
1101 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1103 application.SendNotification();
1104 application.Render();
1106 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1112 int UtcDaliVisualFactoryGetNPatchVisual8(void)
1114 ToolkitTestApplication application;
1115 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual8: Add 9-patch visual on stage, instantly remove it and add new 9-patch visual with same propertyMap");
1117 VisualFactory factory = VisualFactory::Get();
1118 DALI_TEST_CHECK(factory);
1120 // Get actual size of test image
1121 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_9_PATCH_FILE_NAME);
1123 Property::Map propertyMap;
1124 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1125 propertyMap.Insert(ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME);
1126 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, false);
1128 Visual::Base visual = factory.CreateVisual(propertyMap);
1129 DALI_TEST_CHECK(visual);
1131 Vector2 naturalSize(0.0f, 0.0f);
1132 visual.GetNaturalSize(naturalSize);
1133 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
1135 TestGlAbstraction& gl = application.GetGlAbstraction();
1136 TraceCallStack& textureTrace = gl.GetTextureTrace();
1137 textureTrace.Enable(true);
1139 DummyControl actor = DummyControl::New(true);
1141 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1142 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1144 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1145 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1147 application.GetScene().Add(actor);
1150 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1152 application.SendNotification();
1153 application.Render();
1155 visual = factory.CreateVisual(propertyMap);
1156 DALI_TEST_CHECK(visual);
1158 visual.GetNaturalSize(naturalSize);
1159 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
1161 actor = DummyControl::New(true);
1163 DummyControlImpl& dummyImpl2 = static_cast<DummyControlImpl&>(actor.GetImplementation());
1164 dummyImpl2.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1166 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1167 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1169 application.GetScene().Add(actor);
1171 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1173 application.SendNotification();
1174 application.Render();
1176 Renderer renderer = actor.GetRendererAt(0);
1177 auto textures = renderer.GetTextures();
1179 DALI_TEST_EQUALS(textures.GetTextureCount(), 1, TEST_LOCATION);
1185 int UtcDaliVisualFactoryGetNPatchVisual9(void)
1187 ToolkitTestApplication application;
1188 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual9: Request n-patch visual sync during another n-patch visual load image asynchronously");
1190 VisualFactory factory = VisualFactory::Get();
1191 DALI_TEST_CHECK(factory);
1193 Property::Map propertyMap;
1194 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1195 propertyMap.Insert(ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME);
1196 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, false);
1197 Visual::Base visual = factory.CreateVisual(propertyMap);
1198 DALI_TEST_CHECK(visual);
1200 TestGlAbstraction& gl = application.GetGlAbstraction();
1201 TraceCallStack& textureTrace = gl.GetTextureTrace();
1202 textureTrace.Enable(true);
1204 DummyControl actor = DummyControl::New(true);
1206 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1207 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1209 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1210 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1212 application.GetScene().Add(actor);
1214 propertyMap.Clear();
1215 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1216 propertyMap.Insert(ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME);
1217 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
1218 Visual::Base visual2 = factory.CreateVisual(propertyMap);
1219 DALI_TEST_CHECK(visual2);
1221 DummyControl actor2 = DummyControl::New(true);
1223 DummyControlImpl& dummyImpl2 = static_cast<DummyControlImpl&>(actor2.GetImplementation());
1224 dummyImpl2.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual2);
1226 actor2.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1227 DALI_TEST_EQUALS(actor2.GetRendererCount(), 0u, TEST_LOCATION);
1229 application.GetScene().Add(actor2);
1230 application.Render();
1232 // Async loading is not finished yet.
1234 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1236 // Sync loading is finished.
1238 Renderer renderer = actor2.GetRendererAt(0);
1239 auto textures = renderer.GetTextures();
1241 DALI_TEST_EQUALS(textures.GetTextureCount(), 1, TEST_LOCATION);
1243 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1245 application.SendNotification();
1246 application.Render();
1247 // Async loading is finished.
1249 Renderer renderer = actor.GetRendererAt(0);
1250 auto textures = renderer.GetTextures();
1252 DALI_TEST_EQUALS(textures.GetTextureCount(), 1, TEST_LOCATION);
1258 int UtcDaliVisualFactoryGetNPatchVisual10(void)
1260 ToolkitTestApplication application;
1261 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual10: Request same 9-patch visual with a different border");
1263 VisualFactory factory = VisualFactory::Get();
1264 DALI_TEST_CHECK(factory);
1266 // Get actual size of test image
1267 ImageDimensions imageSize = Dali::GetClosestImageSize(gImage_34_RGBA);
1269 Property::Map propertyMap;
1270 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1271 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
1272 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(2, 2, 2, 2));
1274 tet_infoline("whole grid (2,2,2,2) async");
1275 Visual::Base visual = factory.CreateVisual(propertyMap);
1276 DALI_TEST_CHECK(visual);
1278 TestGlAbstraction& gl = application.GetGlAbstraction();
1279 TraceCallStack& textureTrace = gl.GetTextureTrace();
1280 textureTrace.Enable(true);
1282 DummyControl actor = DummyControl::New(true);
1283 TestVisualAsynchronousRender(application, actor, visual);
1285 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1287 Vector2 naturalSize(0.0f, 0.0f);
1288 visual.GetNaturalSize(naturalSize);
1289 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
1292 propertyMap.Clear();
1293 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1294 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
1295 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(1, 1, 1, 1));
1297 tet_infoline("whole grid (1,1,1,1) async. Check whether we use cached texture");
1298 // We don't use dummyControl here
1300 const int expectResourceReadySignalCounter = 10;
1301 gResourceReadySignalCounter = 0;
1303 for(int i = 0; i < expectResourceReadySignalCounter; i++)
1305 ImageView imageView = ImageView::New();
1306 imageView[Toolkit::ImageView::Property::IMAGE] = propertyMap;
1307 imageView.ResourceReadySignal().Connect(&OnResourceReadySignal);
1308 application.GetScene().Add(imageView);
1311 // Dont wait for loading. All border use cached texture.
1313 DALI_TEST_EQUALS(gResourceReadySignalCounter, expectResourceReadySignalCounter, TEST_LOCATION);
1316 propertyMap.Clear();
1317 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1318 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
1319 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(1, 2, 1, 2));
1321 tet_infoline("whole grid (1,2,1,2) async. Check whether we use cached texture");
1322 // We don't use dummyControl here
1324 const int expectResourceReadySignalCounter = 10;
1325 gResourceReadySignalCounter = 0;
1327 for(int i = 0; i < expectResourceReadySignalCounter; i++)
1329 ImageView imageView = ImageView::New();
1330 imageView[Toolkit::ImageView::Property::IMAGE] = propertyMap;
1331 imageView.ResourceReadySignal().Connect(&OnResourceReadySignal);
1332 application.GetScene().Add(imageView);
1335 // Dont wait for loading. All border use cached texture.
1337 DALI_TEST_EQUALS(gResourceReadySignalCounter, expectResourceReadySignalCounter, TEST_LOCATION);
1343 int UtcDaliNPatchVisualAuxiliaryImage01(void)
1345 ToolkitTestApplication application;
1346 tet_infoline("NPatchVisual with aux image");
1348 VisualFactory factory = VisualFactory::Get();
1349 Property::Map properties;
1350 Property::Map shader;
1352 Property::Map transformMap;
1353 transformMap["size"] = Vector2(0.5f, 0.5f);
1354 transformMap["offset"] = Vector2(20.0f, 0.0f);
1355 transformMap["offsetPolicy"] = Vector2(Visual::Transform::Policy::ABSOLUTE, Visual::Transform::Policy::ABSOLUTE);
1356 transformMap["anchorPoint"] = Align::CENTER;
1357 transformMap["origin"] = Align::CENTER;
1358 properties[Visual::Property::TRANSFORM] = transformMap;
1360 properties[Visual::Property::TYPE] = Visual::IMAGE;
1361 properties[Visual::Property::MIX_COLOR] = Color::BLUE;
1362 properties[Visual::Property::SHADER] = shader;
1363 properties[ImageVisual::Property::URL] = TEST_9_PATCH_FILE_NAME;
1364 properties[DevelImageVisual::Property::AUXILIARY_IMAGE] = TEST_AUX_IMAGE;
1365 properties[DevelImageVisual::Property::AUXILIARY_IMAGE_ALPHA] = 0.9f;
1367 Visual::Base visual = factory.CreateVisual(properties);
1369 // trigger creation through setting on stage
1370 DummyControl dummy = DummyControl::New(true);
1371 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummy.GetImplementation());
1372 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1373 dummyImpl.SetLayout(DummyControl::Property::TEST_VISUAL, transformMap);
1374 dummy.SetResizePolicy(ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS);
1375 dummy.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
1376 application.GetScene().Add(dummy);
1378 application.SendNotification();
1379 application.Render();
1381 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION);
1383 application.SendNotification();
1384 application.Render();
1386 Renderer renderer = dummy.GetRendererAt(0);
1387 auto textures = renderer.GetTextures();
1388 DALI_TEST_EQUALS(textures.GetTextureCount(), 2, TEST_LOCATION);
1389 UnparentAndReset(dummy);
1394 int UtcDaliNPatchVisualAuxiliaryImage02(void)
1396 ToolkitTestApplication application;
1397 tet_infoline("Multiple NPatchVisual with aux image coincidentally");
1399 const Property::Value NPATCH_TEST{
1400 {ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME},
1401 {DevelImageVisual::Property::AUXILIARY_IMAGE, TEST_AUX_IMAGE}};
1403 ImageView imageView1 = ImageView::New();
1404 imageView1[ImageView::Property::IMAGE] = NPATCH_TEST;
1405 application.GetScene().Add(imageView1);
1407 ImageView imageView2 = ImageView::New();
1408 imageView2[ImageView::Property::IMAGE] = NPATCH_TEST;
1409 application.GetScene().Add(imageView2);
1411 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION);
1413 application.SendNotification();
1414 application.Render();
1416 Renderer renderer1 = imageView1.GetRendererAt(0);
1417 auto textureSet1 = renderer1.GetTextures();
1419 Renderer renderer2 = imageView2.GetRendererAt(0);
1420 auto textureSet2 = renderer2.GetTextures();
1421 DALI_TEST_EQUALS(textureSet1 != textureSet2, true, TEST_LOCATION);
1426 int UtcDaliVisualFactoryGetNPatchVisualN1(void)
1428 //This should still load but display an error image
1430 ToolkitTestApplication application;
1431 tet_infoline("UtcDaliVisualFactoryGetNPatchVisualN: Request n-patch visual with an invalid image url");
1433 VisualFactory factory = VisualFactory::Get();
1434 DALI_TEST_CHECK(factory);
1436 Visual::Base visual = factory.CreateVisual("ERROR.9.jpg", ImageDimensions());
1437 DALI_TEST_CHECK(visual);
1439 TestGlAbstraction& gl = application.GetGlAbstraction();
1440 TraceCallStack& textureTrace = gl.GetTextureTrace();
1441 textureTrace.Enable(true);
1444 DummyControl actor = DummyControl::New(true);
1445 TestVisualAsynchronousRender(application, actor, visual);
1447 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1448 UnparentAndReset(actor);
1454 int UtcDaliVisualFactoryGetNPatchVisualN2(void)
1456 //This should still load but display an error image
1458 ToolkitTestApplication application;
1459 tet_infoline("UtcDaliVisualFactoryGetNPatchVisualN: Request n-patch visual with an invalid URL");
1461 VisualFactory factory = VisualFactory::Get();
1462 DALI_TEST_CHECK(factory);
1464 Property::Map propertyMap;
1465 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1466 propertyMap.Insert(ImageVisual::Property::URL, "ERROR.9.jpg");
1468 Visual::Base visual = factory.CreateVisual(propertyMap);
1469 DALI_TEST_CHECK(visual);
1471 TestGlAbstraction& gl = application.GetGlAbstraction();
1472 TraceCallStack& textureTrace = gl.GetTextureTrace();
1473 textureTrace.Enable(true);
1474 TraceCallStack& drawTrace = gl.GetDrawTrace();
1475 drawTrace.Enable(true);
1477 DummyControl actor = DummyControl::New(true);
1478 TestVisualAsynchronousRender(application, actor, visual);
1480 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1485 int UtcDaliVisualFactoryGetNPatchVisualN3(void)
1487 // Passing in an invalid visual type so we should not get a visual
1489 ToolkitTestApplication application;
1490 tet_infoline("UtcDaliVisualFactoryGetNPatchVisualN: Request n-patch visual with an invalid visual type");
1492 VisualFactory factory = VisualFactory::Get();
1493 DALI_TEST_CHECK(factory);
1495 Property::Map propertyMap;
1496 propertyMap.Insert(Toolkit::Visual::Property::TYPE, 111);
1497 propertyMap.Insert(ImageVisual::Property::URL, "ERROR.9.jpg");
1499 Visual::Base visual = factory.CreateVisual(propertyMap);
1500 DALI_TEST_CHECK(!visual);
1505 int UtcDaliVisualFactoryGetSvgVisual(void)
1507 ToolkitTestApplication application;
1508 tet_infoline("UtcDaliVisualFactoryGetSvgVisual: Request svg visual with a svg url");
1510 VisualFactory factory = VisualFactory::Get();
1511 Visual::Base visual = factory.CreateVisual(TEST_SVG_FILE_NAME, ImageDimensions());
1512 DALI_TEST_CHECK(visual);
1514 TestGlAbstraction& gl = application.GetGlAbstraction();
1515 TraceCallStack& textureTrace = gl.GetTextureTrace();
1516 textureTrace.Enable(true);
1518 DummyControl actor = DummyControl::New(true);
1519 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1520 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1521 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1522 application.GetScene().Add(actor);
1523 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
1525 // Either application.SendNotification() or the trigger can now complete the task.
1526 application.SendNotification();
1527 application.Render();
1529 // Wait for loading & rasterization
1530 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION);
1532 // renderer is added to actor
1533 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
1535 // waiting for the resource uploading
1536 application.SendNotification();
1537 application.Render();
1539 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1544 int UtcDaliVisualFactoryGetSvgVisualLarge(void)
1546 ToolkitTestApplication application;
1547 tet_infoline("UtcDaliVisualFactoryGetSvgVisual: Request svg visual with a svg url");
1549 VisualFactory factory = VisualFactory::Get();
1550 Visual::Base visual = factory.CreateVisual(TEST_SVG_FILE_NAME, ImageDimensions(2000, 2000));
1551 DALI_TEST_CHECK(visual);
1553 TestGlAbstraction& gl = application.GetGlAbstraction();
1554 TraceCallStack& textureTrace = gl.GetTextureTrace();
1555 textureTrace.Enable(true);
1557 DummyControl actor = DummyControl::New(true);
1558 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1559 actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); // Only rasterizes when it knows control size.
1560 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1561 application.GetScene().Add(actor);
1563 // Either application.SendNotification() or the trigger can now complete the task.
1564 application.SendNotification();
1565 application.Render();
1567 // Wait for loading & rasterization
1568 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION);
1570 // renderer is added to actor
1571 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
1573 // waiting for the resource uploading
1574 application.SendNotification();
1575 application.Render();
1577 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1582 int UtcDaliVisualFactoryGetSvgVisualAtlas(void)
1584 ToolkitTestApplication application;
1585 tet_infoline("UtcDaliVisualFactoryGetSvgVisual: Request svg visual with enabled atlas");
1587 VisualFactory factory = VisualFactory::Get();
1589 Property::Map propertyMap;
1590 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::SVG);
1591 propertyMap.Insert(ImageVisual::Property::URL, TEST_SVG_FILE_NAME);
1592 propertyMap.Insert(ImageVisual::Property::ATLASING, true);
1594 Visual::Base visual = factory.CreateVisual(propertyMap);
1595 DALI_TEST_CHECK(visual);
1597 TestGlAbstraction& gl = application.GetGlAbstraction();
1598 TraceCallStack& textureTrace = gl.GetTextureTrace();
1599 textureTrace.Enable(true);
1601 DummyControl actor = DummyControl::New(true);
1602 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1603 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1604 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1605 application.GetScene().Add(actor);
1606 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
1608 // Either application.SendNotification() or the trigger can now complete the task.
1609 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
1610 application.SendNotification();
1611 application.Render();
1613 // Wait for loading & rasterization
1614 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION);
1616 // renderer is added to actor
1617 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
1619 // waiting for the resource uploading
1620 application.SendNotification();
1621 application.Render();
1623 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1628 //Creates a mesh visual from the given propertyMap and tries to load it on stage in the given application.
1629 //This is expected to succeed, which will then pass the test.
1630 void MeshVisualLoadsCorrectlyTest(Property::Map& propertyMap, ToolkitTestApplication& application)
1632 VisualFactory factory = VisualFactory::Get();
1633 DALI_TEST_CHECK(factory);
1635 //Create a mesh visual.
1636 Visual::Base visual = factory.CreateVisual(propertyMap);
1637 DALI_TEST_CHECK(visual);
1639 //Create an actor on stage to house the visual.
1640 DummyControl actor = DummyControl::New(true);
1641 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1642 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1643 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1644 application.GetScene().Add(actor);
1645 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
1647 //Ensure set on stage.
1648 DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION);
1650 //Attempt to render to queue resource load requests.
1651 application.SendNotification();
1652 application.Render(0);
1654 //Render again to upload the now-loaded textures.
1655 application.SendNotification();
1656 application.Render(0);
1658 Matrix testScaleMatrix;
1659 testScaleMatrix.SetIdentityAndScale(Vector3(1.0, -1.0, 1.0));
1660 Matrix actualScaleMatrix;
1662 //Test to see if the object has been successfully loaded.
1663 DALI_TEST_CHECK(application.GetGlAbstraction().GetUniformValue<Matrix>("uObjectMatrix", actualScaleMatrix));
1664 DALI_TEST_EQUALS(actualScaleMatrix, testScaleMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1666 //Finish by setting off stage, and ensuring this was successful.
1668 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1671 //Creates a mesh visual from the given propertyMap and tries to load it on stage in the given application.
1672 //This is expected to fail, which will then pass the test.
1673 void MeshVisualDoesNotLoadCorrectlyTest(Property::Map& propertyMap, ToolkitTestApplication& application)
1675 VisualFactory factory = VisualFactory::Get();
1676 DALI_TEST_CHECK(factory);
1678 //Create a mesh visual.
1679 Visual::Base visual = factory.CreateVisual(propertyMap);
1680 DALI_TEST_CHECK(visual);
1682 //Create an actor on stage to house the visual.
1683 DummyControl actor = DummyControl::New(true);
1684 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1685 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1686 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1687 application.GetScene().Add(actor);
1688 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
1690 //Ensure set on stage.
1691 DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION);
1693 //Attempt to render to queue resource load requests.
1694 application.SendNotification();
1695 application.Render(0);
1697 //Render again to upload the now-loaded textures.
1698 application.SendNotification();
1699 application.Render(0);
1701 //Test to see if the object has not been loaded, as expected.
1703 DALI_TEST_CHECK(!application.GetGlAbstraction().GetUniformValue<Matrix>("uObjectMatrix", scaleMatrix));
1705 //Finish by setting off stage, and ensuring this was successful.
1707 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1710 //Test if mesh loads correctly when supplied with only the bare minimum requirements, an object file.
1711 int UtcDaliVisualFactoryGetMeshVisual1(void)
1713 //Set up test application first, so everything else can be handled.
1714 ToolkitTestApplication application;
1716 tet_infoline("UtcDaliVisualFactoryGetMeshVisual1: Request mesh visual with a valid object file only");
1718 static std::vector<UniformData> customUniforms =
1720 UniformData("uObjectMatrix", Property::Type::MATRIX),
1723 TestGraphicsController& graphics = application.GetGraphicsController();
1724 graphics.AddCustomUniforms(customUniforms);
1726 //Set up visual properties.
1727 Property::Map propertyMap;
1728 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1729 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1731 //Test to see if mesh loads correctly.
1732 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1737 //Test if mesh loads correctly when supplied with an object file as well as a blank material file and images directory.
1738 int UtcDaliVisualFactoryGetMeshVisual2(void)
1740 //Set up test application first, so everything else can be handled.
1741 ToolkitTestApplication application;
1743 tet_infoline("UtcDaliVisualFactoryGetMeshVisual2: Request mesh visual with blank material file and images directory");
1745 static std::vector<UniformData> customUniforms =
1747 UniformData("uObjectMatrix", Property::Type::MATRIX),
1750 TestGraphicsController& graphics = application.GetGraphicsController();
1751 graphics.AddCustomUniforms(customUniforms);
1753 //Set up visual properties.
1754 Property::Map propertyMap;
1755 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1756 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1757 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, "");
1758 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, "");
1760 //Test to see if mesh loads correctly.
1761 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1766 //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
1767 int UtcDaliVisualFactoryGetMeshVisual3b(void)
1769 //Set up test application first, so everything else can be handled.
1770 ToolkitTestApplication application;
1772 tet_infoline("UtcDaliVisualFactoryGetMeshVisual3: Request mesh visual with all parameters correct");
1774 static std::vector<UniformData> customUniforms =
1776 UniformData("uObjectMatrix", Property::Type::MATRIX),
1779 TestGraphicsController& graphics = application.GetGraphicsController();
1780 graphics.AddCustomUniforms(customUniforms);
1782 //Set up visual properties.
1783 Property::Map propertyMap;
1784 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1785 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1786 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1787 propertyMap.Insert(MeshVisual::Property::USE_MIPMAPPING, Color::GREEN); // Test that wrong property types don't prevent the object load
1788 propertyMap.Insert(MeshVisual::Property::USE_SOFT_NORMALS, 1.0f);
1789 propertyMap.Insert(MeshVisual::Property::LIGHT_POSITION, 1.0f);
1790 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1792 //Test to see if mesh loads correctly.
1793 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1798 //Test if mesh loads correctly when supplied with all main parameters, an object file, a material file and a directory location.
1799 int UtcDaliVisualFactoryGetMeshVisual3(void)
1801 //Set up test application first, so everything else can be handled.
1802 ToolkitTestApplication application;
1804 tet_infoline("UtcDaliVisualFactoryGetMeshVisual3: Request mesh visual with all parameters correct");
1806 static std::vector<UniformData> customUniforms =
1808 UniformData("uObjectMatrix", Property::Type::MATRIX),
1811 TestGraphicsController& graphics = application.GetGraphicsController();
1812 graphics.AddCustomUniforms(customUniforms);
1814 //Set up visual properties.
1815 Property::Map propertyMap;
1816 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1817 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1818 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1819 propertyMap.Insert(MeshVisual::Property::USE_MIPMAPPING, false);
1820 propertyMap.Insert(MeshVisual::Property::USE_SOFT_NORMALS, false);
1821 propertyMap.Insert(MeshVisual::Property::LIGHT_POSITION, Vector3::XAXIS);
1822 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1824 //Test to see if mesh loads correctly.
1825 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1830 //Test if mesh visual can load a correctly supplied mesh without a normal map or gloss map in the material file.
1831 int UtcDaliVisualFactoryGetMeshVisual4(void)
1833 //Set up test application first, so everything else can be handled.
1834 ToolkitTestApplication application;
1836 tet_infoline("UtcDaliVisualFactoryGetMeshVisual4: Request mesh visual with diffuse texture but not normal or gloss.");
1838 static std::vector<UniformData> customUniforms =
1840 UniformData("uObjectMatrix", Property::Type::MATRIX),
1843 TestGraphicsController& graphics = application.GetGraphicsController();
1844 graphics.AddCustomUniforms(customUniforms);
1846 //Set up visual properties.
1847 Property::Map propertyMap;
1848 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1849 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1850 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_SIMPLE_MTL_FILE_NAME);
1851 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1853 //Test to see if mesh loads correctly.
1854 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1859 //Test if mesh visual can load when made to use diffuse textures only.
1860 int UtcDaliVisualFactoryGetMeshVisual5(void)
1862 //Set up test application first, so everything else can be handled.
1863 ToolkitTestApplication application;
1865 tet_infoline("UtcDaliVisualFactoryGetMeshVisual5: Request mesh visual and make it only use diffuse textures.");
1867 static std::vector<UniformData> customUniforms =
1869 UniformData("uObjectMatrix", Property::Type::MATRIX),
1872 TestGraphicsController& graphics = application.GetGraphicsController();
1873 graphics.AddCustomUniforms(customUniforms);
1875 //Set up visual properties.
1876 Property::Map propertyMap;
1877 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1878 propertyMap.Insert("objectUrl", TEST_OBJ_FILE_NAME);
1879 propertyMap.Insert("materialUrl", TEST_MTL_FILE_NAME);
1880 propertyMap.Insert("texturesPath", TEST_RESOURCE_DIR "/");
1881 propertyMap.Insert("useMipmapping", false);
1882 propertyMap.Insert("useSoftNormals", false);
1883 propertyMap.Insert("lightPosition", Vector3::ZAXIS);
1884 propertyMap.Insert("shadingMode", MeshVisual::ShadingMode::TEXTURED_WITH_SPECULAR_LIGHTING);
1886 //Test to see if mesh loads correctly.
1887 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1892 //Test if mesh visual can load when made to not use the supplied textures.
1893 int UtcDaliVisualFactoryGetMeshVisual6(void)
1895 //Set up test application first, so everything else can be handled.
1896 ToolkitTestApplication application;
1898 tet_infoline("UtcDaliVisualFactoryGetMeshVisual6: Request mesh visual and make it not use any textures.");
1900 static std::vector<UniformData> customUniforms =
1902 UniformData("uObjectMatrix", Property::Type::MATRIX),
1905 TestGraphicsController& graphics = application.GetGraphicsController();
1906 graphics.AddCustomUniforms(customUniforms);
1908 //Set up visual properties.
1909 Property::Map propertyMap;
1910 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1911 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1912 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1913 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1914 propertyMap.Insert(MeshVisual::Property::SHADING_MODE, MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING);
1916 //Test to see if mesh loads correctly.
1917 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1921 //Test if mesh visual loads correctly when light position is manually set.
1922 int UtcDaliVisualFactoryGetMeshVisual7(void)
1924 //Set up test application first, so everything else can be handled.
1925 ToolkitTestApplication application;
1927 tet_infoline("UtcDaliVisualFactoryGetMeshVisual7: Request mesh visual with custom light position.");
1929 static std::vector<UniformData> customUniforms =
1931 UniformData("uObjectMatrix", Property::Type::MATRIX),
1934 TestGraphicsController& graphics = application.GetGraphicsController();
1935 graphics.AddCustomUniforms(customUniforms);
1937 //Set up visual properties.
1938 Property::Map propertyMap;
1939 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1940 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1941 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1942 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1943 propertyMap.Insert(MeshVisual::Property::LIGHT_POSITION, Vector3(0.0, 1.0, 2.0));
1945 //Test to see if mesh loads correctly.
1946 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1951 //Test if mesh visual loads correctly when supplied an object file without face normals or texture points.
1952 //Note that this notably tests object loader functionality.
1953 int UtcDaliVisualFactoryGetMeshVisual8(void)
1955 //Set up test application first, so everything else can be handled.
1956 ToolkitTestApplication application;
1958 tet_infoline("UtcDaliVisualFactoryGetMeshVisual5: Request mesh visual with normal-less object file.");
1960 static std::vector<UniformData> customUniforms =
1962 UniformData("uObjectMatrix", Property::Type::MATRIX),
1965 TestGraphicsController& graphics = application.GetGraphicsController();
1966 graphics.AddCustomUniforms(customUniforms);
1968 //Set up visual properties.
1969 Property::Map propertyMap;
1970 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1971 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_SIMPLE_OBJ_FILE_NAME);
1972 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1973 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1975 //Test to see if mesh loads correctly.
1976 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1981 //Test if mesh visual handles the case of lacking an object file.
1982 int UtcDaliVisualFactoryGetMeshVisualN1(void)
1984 //Set up test application first, so everything else can be handled.
1985 ToolkitTestApplication application;
1987 tet_infoline("UtcDaliVisualFactoryGetMeshVisualN1: Request mesh visual without object file");
1989 //Set up visual properties.
1990 Property::Map propertyMap;
1991 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1992 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1993 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1995 //Test to see if mesh doesn't load with these properties, as expected.
1996 MeshVisualDoesNotLoadCorrectlyTest(propertyMap, application);
2001 //Test if mesh visual handles the case of being passed invalid material and images urls.
2002 int UtcDaliVisualFactoryGetMeshVisualN2(void)
2004 //Set up test application first, so everything else can be handled.
2005 ToolkitTestApplication application;
2007 tet_infoline("UtcDaliVisualFactoryGetMeshVisualN2: Request mesh visual with invalid material and images urls");
2009 //Set up visual properties.
2010 Property::Map propertyMap;
2011 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
2012 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
2013 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, "invalid");
2014 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, "also invalid");
2016 //Test to see if mesh doesn't load with these properties, as expected.
2017 MeshVisualDoesNotLoadCorrectlyTest(propertyMap, application);
2022 //Test if mesh visual handles the case of being passed an invalid object url
2023 int UtcDaliVisualFactoryGetMeshVisualN3(void)
2025 //Set up test application first, so everything else can be handled.
2026 ToolkitTestApplication application;
2027 tet_infoline("UtcDaliVisualFactoryGetMeshVisualN3: Request mesh visual with invalid object url");
2029 //Set up visual properties.
2030 Property::Map propertyMap;
2031 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
2032 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, "invalid");
2033 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
2034 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
2036 //Test to see if mesh doesn't load with these properties, as expected.
2037 MeshVisualDoesNotLoadCorrectlyTest(propertyMap, application);
2042 //Creates a primitive visual with the given property map and tests to see if it correctly loads in the given application.
2043 void TestPrimitiveVisualWithProperties(Property::Map& propertyMap, ToolkitTestApplication& application)
2045 VisualFactory factory = VisualFactory::Get();
2046 DALI_TEST_CHECK(factory);
2048 //Create a primitive visual.
2049 Visual::Base visual = factory.CreateVisual(propertyMap);
2050 DALI_TEST_CHECK(visual);
2052 //Create an actor on stage to house the visual.
2053 DummyControl actor = DummyControl::New(true);
2054 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
2055 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
2057 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
2058 application.GetScene().Add(actor);
2059 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
2061 //Ensure set on stage.
2062 DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION);
2064 //Tell test application to load the visual.
2065 application.SendNotification();
2066 application.Render(0);
2068 Matrix testScaleMatrix;
2069 testScaleMatrix.SetIdentityAndScale(Vector3(1.0, -1.0, 1.0));
2070 Matrix actualScaleMatrix;
2072 //Test to see if the object has been successfully loaded.
2073 DALI_TEST_CHECK(application.GetGlAbstraction().GetUniformValue<Matrix>("uObjectMatrix", actualScaleMatrix));
2074 DALI_TEST_EQUALS(actualScaleMatrix, testScaleMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION);
2076 //Finish by setting off stage, and ensuring this was successful.
2078 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
2081 //Test if primitive shape loads correctly when supplied with only the bare minimum requirements, the shape to use.
2082 int UtcDaliVisualFactoryGetPrimitiveVisual1(void)
2084 //Set up test application first, so everything else can be handled.
2085 ToolkitTestApplication application;
2087 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual1: Request primitive visual with a shape only");
2089 static std::vector<UniformData> customUniforms =
2091 UniformData("uObjectMatrix", Property::Type::MATRIX),
2094 TestGraphicsController& graphics = application.GetGraphicsController();
2095 graphics.AddCustomUniforms(customUniforms);
2097 //Set up visual properties.
2098 Property::Map propertyMap;
2099 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2100 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE);
2102 //Test to see if shape loads correctly.
2103 TestPrimitiveVisualWithProperties(propertyMap, application);
2108 //Test if primitive shape loads correctly when supplied with all possible parameters
2109 int UtcDaliVisualFactoryGetPrimitiveVisual2(void)
2111 //Set up test application first, so everything else can be handled.
2112 ToolkitTestApplication application;
2114 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual2: Request primitive visual with everything");
2116 static std::vector<UniformData> customUniforms =
2118 UniformData("uObjectMatrix", Property::Type::MATRIX),
2121 TestGraphicsController& graphics = application.GetGraphicsController();
2122 graphics.AddCustomUniforms(customUniforms);
2124 //Set up visual properties.
2125 Property::Map propertyMap;
2126 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2127 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE);
2128 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2129 propertyMap.Insert(PrimitiveVisual::Property::SLICES, 10);
2130 propertyMap.Insert(PrimitiveVisual::Property::STACKS, 20);
2131 propertyMap.Insert(PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f);
2132 propertyMap.Insert(PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f);
2133 propertyMap.Insert(PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f);
2134 propertyMap.Insert(PrimitiveVisual::Property::SCALE_RADIUS, 60.0f);
2135 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_PERCENTAGE, 0.7f);
2136 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_SMOOTHNESS, 0.8f);
2137 propertyMap.Insert(MeshVisual::Property::LIGHT_POSITION, Vector3(0.9, 1.0, 1.1));
2139 //Test to see if shape loads correctly.
2140 TestPrimitiveVisualWithProperties(propertyMap, application);
2145 //Test if primitive shape loads a sphere correctly.
2146 int UtcDaliVisualFactoryGetPrimitiveVisual3(void)
2148 //Set up test application first, so everything else can be handled.
2149 ToolkitTestApplication application;
2151 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual3: Request primitive visual to display a sphere");
2153 static std::vector<UniformData> customUniforms =
2155 UniformData("uObjectMatrix", Property::Type::MATRIX),
2158 TestGraphicsController& graphics = application.GetGraphicsController();
2159 graphics.AddCustomUniforms(customUniforms);
2161 //Set up visual properties.
2162 Property::Map propertyMap;
2163 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2164 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2165 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2166 propertyMap.Insert(PrimitiveVisual::Property::SLICES, 10);
2167 propertyMap.Insert(PrimitiveVisual::Property::STACKS, 20);
2169 //Test to see if shape loads correctly.
2170 TestPrimitiveVisualWithProperties(propertyMap, application);
2175 //Test if primitive shape loads a conic section correctly.
2176 int UtcDaliVisualFactoryGetPrimitiveVisual4(void)
2178 //Set up test application first, so everything else can be handled.
2179 ToolkitTestApplication application;
2181 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual4: Request primitive visual to display a conic section");
2183 static std::vector<UniformData> customUniforms =
2185 UniformData("uObjectMatrix", Property::Type::MATRIX),
2188 TestGraphicsController& graphics = application.GetGraphicsController();
2189 graphics.AddCustomUniforms(customUniforms);
2191 //Set up visual properties.
2192 Property::Map propertyMap;
2193 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2194 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CONICAL_FRUSTUM);
2195 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2196 propertyMap.Insert(PrimitiveVisual::Property::SLICES, 10);
2197 propertyMap.Insert(PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f);
2198 propertyMap.Insert(PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f);
2199 propertyMap.Insert(PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f);
2201 //Test to see if shape loads correctly.
2202 TestPrimitiveVisualWithProperties(propertyMap, application);
2207 //Test if primitive shape loads a bevelled cube correctly.
2208 int UtcDaliVisualFactoryGetPrimitiveVisual5(void)
2210 //Set up test application first, so everything else can be handled.
2211 ToolkitTestApplication application;
2213 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual5: Request primitive visual to display a bevelled cube");
2215 static std::vector<UniformData> customUniforms =
2217 UniformData("uObjectMatrix", Property::Type::MATRIX),
2220 TestGraphicsController& graphics = application.GetGraphicsController();
2221 graphics.AddCustomUniforms(customUniforms);
2223 //Set up visual properties.
2224 Property::Map propertyMap;
2225 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2226 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::BEVELLED_CUBE);
2227 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2228 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_PERCENTAGE, 0.7f);
2230 //Test to see if shape loads correctly.
2231 TestPrimitiveVisualWithProperties(propertyMap, application);
2236 //Test if primitive shape loads an octahedron correctly.
2237 int UtcDaliVisualFactoryGetPrimitiveVisual6(void)
2239 //Set up test application first, so everything else can be handled.
2240 ToolkitTestApplication application;
2242 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual6: Request primitive visual to display an octahedron");
2244 static std::vector<UniformData> customUniforms =
2246 UniformData("uObjectMatrix", Property::Type::MATRIX),
2249 TestGraphicsController& graphics = application.GetGraphicsController();
2250 graphics.AddCustomUniforms(customUniforms);
2252 //Set up visual properties.
2253 Property::Map propertyMap;
2254 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2255 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::OCTAHEDRON);
2256 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2258 //Test to see if shape loads correctly.
2259 TestPrimitiveVisualWithProperties(propertyMap, application);
2264 //Test if primitive shape loads a cone correctly.
2265 int UtcDaliVisualFactoryGetPrimitiveVisual7(void)
2267 //Set up test application first, so everything else can be handled.
2268 ToolkitTestApplication application;
2270 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual7: Request primitive visual to display a cone");
2272 static std::vector<UniformData> customUniforms =
2274 UniformData("uObjectMatrix", Property::Type::MATRIX),
2277 TestGraphicsController& graphics = application.GetGraphicsController();
2278 graphics.AddCustomUniforms(customUniforms);
2280 //Set up visual properties.
2281 Property::Map propertyMap;
2282 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2283 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CONE);
2284 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2285 propertyMap.Insert(PrimitiveVisual::Property::SLICES, 10);
2286 propertyMap.Insert(PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f);
2287 propertyMap.Insert(PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f);
2289 //Test to see if shape loads correctly.
2290 TestPrimitiveVisualWithProperties(propertyMap, application);
2295 //Test if primitive shape loads correctly when light position is manually set.
2296 int UtcDaliVisualFactoryGetPrimitiveVisual8(void)
2298 //Set up test application first, so everything else can be handled.
2299 ToolkitTestApplication application;
2301 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual8: Request primitive visual with set light position");
2303 static std::vector<UniformData> customUniforms =
2305 UniformData("uObjectMatrix", Property::Type::MATRIX),
2308 TestGraphicsController& graphics = application.GetGraphicsController();
2309 graphics.AddCustomUniforms(customUniforms);
2311 //Set up visual properties.
2312 Property::Map propertyMap;
2313 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2314 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2315 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2316 propertyMap.Insert(MeshVisual::Property::LIGHT_POSITION, Vector3(0.0, 1.0, 2.0));
2318 //Test to see if shape loads correctly.
2319 TestPrimitiveVisualWithProperties(propertyMap, application);
2324 //Test if primitive shape loads correctly when told to use too many slices.
2325 int UtcDaliVisualFactoryGetPrimitiveVisual9(void)
2327 //Set up test application first, so everything else can be handled.
2328 ToolkitTestApplication application;
2330 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual9: Request primitive visual with above-cap slices.");
2332 static std::vector<UniformData> customUniforms =
2334 UniformData("uObjectMatrix", Property::Type::MATRIX),
2337 TestGraphicsController& graphics = application.GetGraphicsController();
2338 graphics.AddCustomUniforms(customUniforms);
2340 //Set up visual properties.
2341 Property::Map propertyMap;
2342 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2343 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2344 propertyMap.Insert(PrimitiveVisual::Property::SLICES, Property::Value(1000000));
2346 //Test to see if shape loads correctly.
2347 TestPrimitiveVisualWithProperties(propertyMap, application);
2352 //Test if primitive shape loads correctly when told to use too few slices. (2 slices or less.)
2353 int UtcDaliVisualFactoryGetPrimitiveVisual10(void)
2355 //Set up test application first, so everything else can be handled.
2356 ToolkitTestApplication application;
2358 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual10: Request primitive visual with too few slices.");
2360 static std::vector<UniformData> customUniforms =
2362 UniformData("uObjectMatrix", Property::Type::MATRIX),
2365 TestGraphicsController& graphics = application.GetGraphicsController();
2366 graphics.AddCustomUniforms(customUniforms);
2368 //Set up visual properties.
2369 Property::Map propertyMap;
2370 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2371 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2372 propertyMap.Insert(PrimitiveVisual::Property::SLICES, Property::Value(2));
2374 //Test to see if shape loads correctly.
2375 TestPrimitiveVisualWithProperties(propertyMap, application);
2380 //Test if primitive shape loads correctly when told to use too many stacks.
2381 int UtcDaliVisualFactoryGetPrimitiveVisual11(void)
2383 //Set up test application first, so everything else can be handled.
2384 ToolkitTestApplication application;
2386 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual11: Request primitive visual with too many stacks.");
2388 static std::vector<UniformData> customUniforms =
2390 UniformData("uObjectMatrix", Property::Type::MATRIX),
2393 TestGraphicsController& graphics = application.GetGraphicsController();
2394 graphics.AddCustomUniforms(customUniforms);
2396 //Set up visual properties.
2397 Property::Map propertyMap;
2398 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2399 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2400 propertyMap.Insert(PrimitiveVisual::Property::STACKS, Property::Value(1000000));
2402 //Test to see if shape loads correctly.
2403 TestPrimitiveVisualWithProperties(propertyMap, application);
2408 //Test if primitive shape loads correctly when told to use too few stacks. (1 stack or less.)
2409 int UtcDaliVisualFactoryGetPrimitiveVisual12(void)
2411 //Set up test application first, so everything else can be handled.
2412 ToolkitTestApplication application;
2414 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual12: Request primitive visual with too few stacks.");
2416 static std::vector<UniformData> customUniforms =
2418 UniformData("uObjectMatrix", Property::Type::MATRIX),
2421 TestGraphicsController& graphics = application.GetGraphicsController();
2422 graphics.AddCustomUniforms(customUniforms);
2424 //Set up visual properties.
2425 Property::Map propertyMap;
2426 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2427 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2428 propertyMap.Insert(PrimitiveVisual::Property::STACKS, Property::Value(1));
2430 //Test to see if shape loads correctly.
2431 TestPrimitiveVisualWithProperties(propertyMap, application);
2436 //Test if primitive shape loads correctly when told to use invalid (zero or negative) dimensions.
2437 int UtcDaliVisualFactoryGetPrimitiveVisual13(void)
2439 //Set up test application first, so everything else can be handled.
2440 ToolkitTestApplication application;
2442 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual13: Request primitive visual with invalid scale dimensions.");
2444 static std::vector<UniformData> customUniforms =
2446 UniformData("uObjectMatrix", Property::Type::MATRIX),
2449 TestGraphicsController& graphics = application.GetGraphicsController();
2450 graphics.AddCustomUniforms(customUniforms);
2452 //Set up visual properties.
2453 Property::Map propertyMap;
2454 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2455 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2456 propertyMap.Insert(PrimitiveVisual::Property::SCALE_DIMENSIONS, Vector3::ZERO);
2458 //Test to see if shape loads correctly.
2459 TestPrimitiveVisualWithProperties(propertyMap, application);
2464 //Test if primitive shape loads correctly when told to use too low a bevel percentage.
2465 int UtcDaliVisualFactoryGetPrimitiveVisual14(void)
2467 //Set up test application first, so everything else can be handled.
2468 ToolkitTestApplication application;
2470 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual14: Request primitive visual with too low a bevel percentage.");
2472 static std::vector<UniformData> customUniforms =
2474 UniformData("uObjectMatrix", Property::Type::MATRIX),
2477 TestGraphicsController& graphics = application.GetGraphicsController();
2478 graphics.AddCustomUniforms(customUniforms);
2480 //Set up visual properties.
2481 Property::Map propertyMap;
2482 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2483 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2484 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_PERCENTAGE, Property::Value(-1.0f));
2486 //Test to see if shape loads correctly.
2487 TestPrimitiveVisualWithProperties(propertyMap, application);
2492 //Test if primitive shape loads correctly when told to use too high a bevel percentage.
2493 int UtcDaliVisualFactoryGetPrimitiveVisual15(void)
2495 //Set up test application first, so everything else can be handled.
2496 ToolkitTestApplication application;
2498 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual15: Request primitive visual with too high a bevel percentage.");
2500 static std::vector<UniformData> customUniforms =
2502 UniformData("uObjectMatrix", Property::Type::MATRIX),
2505 TestGraphicsController& graphics = application.GetGraphicsController();
2506 graphics.AddCustomUniforms(customUniforms);
2508 //Set up visual properties.
2509 Property::Map propertyMap;
2510 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2511 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2512 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_PERCENTAGE, Property::Value(2.0f));
2514 //Test to see if shape loads correctly.
2515 TestPrimitiveVisualWithProperties(propertyMap, application);
2520 //Test if primitive shape loads correctly when told to use too low a bevel smoothness.
2521 int UtcDaliVisualFactoryGetPrimitiveVisual16(void)
2523 //Set up test application first, so everything else can be handled.
2524 ToolkitTestApplication application;
2526 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual16: Request primitive visual with too low a bevel smoothness.");
2528 static std::vector<UniformData> customUniforms =
2530 UniformData("uObjectMatrix", Property::Type::MATRIX),
2533 TestGraphicsController& graphics = application.GetGraphicsController();
2534 graphics.AddCustomUniforms(customUniforms);
2536 //Set up visual properties.
2537 Property::Map propertyMap;
2538 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2539 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2540 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_SMOOTHNESS, Property::Value(-1.0f));
2542 //Test to see if shape loads correctly.
2543 TestPrimitiveVisualWithProperties(propertyMap, application);
2548 //Test if primitive shape loads correctly when told to use too high a bevel smoothness.
2549 int UtcDaliVisualFactoryGetPrimitiveVisual17(void)
2551 //Set up test application first, so everything else can be handled.
2552 ToolkitTestApplication application;
2554 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual17: Request primitive visual with too high a bevel smoothness.");
2556 static std::vector<UniformData> customUniforms =
2558 UniformData("uObjectMatrix", Property::Type::MATRIX),
2561 TestGraphicsController& graphics = application.GetGraphicsController();
2562 graphics.AddCustomUniforms(customUniforms);
2564 //Set up visual properties.
2565 Property::Map propertyMap;
2566 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2567 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2568 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_SMOOTHNESS, Property::Value(2.0f));
2570 //Test to see if shape loads correctly.
2571 TestPrimitiveVisualWithProperties(propertyMap, application);
2576 //Test if primitive shape loads a conic section correctly.
2577 int UtcDaliVisualFactoryGetPrimitiveVisual18(void)
2579 //Set up test application first, so everything else can be handled.
2580 ToolkitTestApplication application;
2582 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual18: Request primitive visual to display a conic section");
2584 static std::vector<UniformData> customUniforms =
2586 UniformData("uObjectMatrix", Property::Type::MATRIX),
2589 TestGraphicsController& graphics = application.GetGraphicsController();
2590 graphics.AddCustomUniforms(customUniforms);
2592 //Set up visual properties.
2593 Property::Map propertyMap;
2594 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2595 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CONICAL_FRUSTUM);
2596 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2597 propertyMap.Insert(PrimitiveVisual::Property::SLICES, 10);
2598 propertyMap.Insert(PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f);
2599 propertyMap.Insert(PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f);
2600 propertyMap.Insert(PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f);
2602 //Test to see if shape loads correctly.
2603 TestPrimitiveVisualWithProperties(propertyMap, application);
2608 //Test if primitive shape visual handles the case of not being passed a specific shape to use.
2609 int UtcDaliVisualFactoryGetPrimitiveVisualN1(void)
2611 //Set up test application first, so everything else can be handled.
2612 ToolkitTestApplication application;
2614 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisualN1: Request primitive visual without shape");
2616 static std::vector<UniformData> customUniforms =
2618 UniformData("uObjectMatrix", Property::Type::MATRIX),
2621 TestGraphicsController& graphics = application.GetGraphicsController();
2622 graphics.AddCustomUniforms(customUniforms);
2624 //Set up visual properties, without supplying shape.
2625 Property::Map propertyMap;
2626 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2628 //Test to see if shape loads regardless of missing input.
2629 TestPrimitiveVisualWithProperties(propertyMap, application);
2634 int UtcDaliVisualFactoryGetAnimatedImageVisual1(void)
2636 ToolkitTestApplication application;
2637 tet_infoline("UtcDaliVisualFactoryGetAnimatedImageVisual1: Request animated image visual with a gif url");
2639 TestGlAbstraction& gl = application.GetGlAbstraction();
2640 TraceCallStack& textureTrace = gl.GetTextureTrace();
2641 textureTrace.Enable(true);
2643 VisualFactory factory = VisualFactory::Get();
2644 Visual::Base visual = factory.CreateVisual(TEST_GIF_FILE_NAME, ImageDimensions());
2645 DALI_TEST_CHECK(visual);
2647 DummyControl actor = DummyControl::New(true);
2648 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
2649 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
2650 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
2651 application.GetScene().Add(actor);
2653 application.SendNotification();
2654 application.Render();
2656 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION);
2658 application.SendNotification();
2659 application.Render();
2661 // renderer is added to actor
2662 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
2663 Renderer renderer = actor.GetRendererAt(0u);
2664 DALI_TEST_CHECK(renderer);
2666 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
2667 textureTrace.Reset();
2669 // Force the timer used by the animatedImageVisual to tick,
2670 Dali::Timer timer = Timer::New(0);
2671 timer.MockEmitSignal();
2672 application.SendNotification();
2673 application.Render();
2675 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
2677 application.SendNotification();
2678 application.Render();
2679 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
2680 textureTrace.Reset();
2682 // Force the timer used by the animatedImageVisual to tick,
2683 timer.MockEmitSignal();
2684 application.SendNotification();
2685 application.Render();
2687 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
2689 application.SendNotification();
2690 application.Render();
2691 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
2692 textureTrace.Reset();
2694 // Force the timer used by the animatedImageVisual to tick,
2695 timer.MockEmitSignal();
2696 application.SendNotification();
2697 application.Render();
2699 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
2701 application.SendNotification();
2702 application.Render();
2703 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
2704 textureTrace.Reset();
2706 // Test SetOffScene().
2708 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
2713 int UtcDaliVisualFactoryGetAnimatedImageVisual2(void)
2715 ToolkitTestApplication application;
2716 tet_infoline("UtcDaliVisualFactoryGetAnimatedImageVisual2: Request animated image visual with a Property::Map, test custom wrap mode and pixel area");
2718 static std::vector<UniformData> customUniforms =
2720 UniformData("pixelArea", Property::Type::VECTOR4),
2721 UniformData("wrapMode", Property::Type::VECTOR2),
2724 TestGraphicsController& graphics = application.GetGraphicsController();
2725 graphics.AddCustomUniforms(customUniforms);
2727 const Vector4 pixelArea(-0.5f, -0.5f, 2.f, 2.f);
2728 Property::Map propertyMap;
2729 propertyMap.Add(Toolkit::Visual::Property::TYPE, Visual::IMAGE)
2730 .Add(ImageVisual::Property::URL, TEST_GIF_FILE_NAME)
2731 .Add(ImageVisual::Property::PIXEL_AREA, pixelArea)
2732 .Add(ImageVisual::Property::WRAP_MODE_U, WrapMode::MIRRORED_REPEAT)
2733 .Add(ImageVisual::Property::WRAP_MODE_V, WrapMode::REPEAT);
2735 Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap);
2736 DALI_TEST_CHECK(visual);
2738 TestGlAbstraction& gl = application.GetGlAbstraction();
2739 TraceCallStack& textureTrace = gl.GetTextureTrace();
2740 textureTrace.Enable(true);
2741 TraceCallStack& texParameterTrace = gl.GetTexParameterTrace();
2742 texParameterTrace.Enable(true);
2744 DummyControl actor = DummyControl::New(true);
2745 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
2746 dummyImpl.RegisterVisual(Control::CONTROL_PROPERTY_END_INDEX + 1, visual);
2747 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
2748 application.GetScene().Add(actor);
2750 application.SendNotification();
2751 application.Render();
2753 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION);
2755 application.SendNotification();
2756 application.Render();
2758 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
2760 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
2762 // For animated image visual, the wrapping is handled manually in shader, so the following gl function should not be called
2763 std::stringstream out;
2764 out << GL_TEXTURE_2D << ", " << GL_TEXTURE_WRAP_S << ", " << GL_MIRRORED_REPEAT;
2765 DALI_TEST_CHECK(!texParameterTrace.FindMethodAndParams("TexParameteri", out.str()));
2767 out << GL_TEXTURE_2D << ", " << GL_TEXTURE_WRAP_T << ", " << GL_REPEAT;
2768 DALI_TEST_CHECK(!texParameterTrace.FindMethodAndParams("TexParameteri", out.str()));
2770 // test the uniforms which used to handle the wrap mode
2771 Renderer renderer = actor.GetRendererAt(0u);
2772 DALI_TEST_CHECK(renderer);
2774 Property::Value pixelAreaValue = renderer.GetProperty(renderer.GetPropertyIndex("pixelArea"));
2775 DALI_TEST_EQUALS(pixelAreaValue.Get<Vector4>(), pixelArea, TEST_LOCATION);
2776 Vector4 pixelAreaUniform;
2777 DALI_TEST_CHECK(gl.GetUniformValue<Vector4>("pixelArea", pixelAreaUniform));
2778 DALI_TEST_EQUALS(pixelArea, pixelAreaUniform, Math::MACHINE_EPSILON_100, TEST_LOCATION);
2780 Property::Value wrapModeValue = renderer.GetProperty(renderer.GetPropertyIndex("wrapMode"));
2781 Vector2 wrapMode(WrapMode::MIRRORED_REPEAT - 1, WrapMode::REPEAT - 1);
2782 DALI_TEST_EQUALS(wrapModeValue.Get<Vector2>(), wrapMode, TEST_LOCATION);
2783 Vector2 wrapModeUniform;
2784 DALI_TEST_CHECK(gl.GetUniformValue<Vector2>("wrapMode", wrapModeUniform));
2785 DALI_TEST_EQUALS(wrapMode, wrapModeUniform, Math::MACHINE_EPSILON_100, TEST_LOCATION);
2788 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
2794 int UtcDaliVisualFactoryGetPreCompiler(void)
2796 ToolkitTestApplication application;
2797 tet_infoline("UtcDaliVisualFactoryGetAnimatedImageVisual2: Request animated image visual with a Property::Map, test custom wrap mode and pixel area");
2800 std::vector<RawShaderData> precompiledShaderList;
2801 DALI_TEST_CHECK(precompiledShaderList.size() == 0u); // before Get Shader
2802 ShaderPreCompiler::Get().GetPreCompileShaderList(precompiledShaderList);
2803 DALI_TEST_CHECK(precompiledShaderList.size() == 0u); // after Get Shader
2805 VisualFactory factory = VisualFactory::Get();
2806 DALI_TEST_CHECK(factory);
2808 factory.UsePreCompiledShader();
2810 ShaderPreCompiler::Get().GetPreCompileShaderList(precompiledShaderList);
2811 DALI_TEST_CHECK(precompiledShaderList.size() != 0u); // after Get Shader
2813 Property::Map propertyMap;
2814 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::IMAGE);
2815 propertyMap.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME);
2816 Visual::Base visual = factory.CreateVisual(propertyMap);
2817 DALI_TEST_CHECK(visual);
2819 DummyControl actor = DummyControl::New(true);
2820 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
2821 dummyImpl.RegisterVisual(Control::CONTROL_PROPERTY_END_INDEX + 1, visual);
2822 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
2823 application.GetScene().Add(actor);
2825 application.SendNotification();
2826 application.Render();