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>
34 using namespace Dali::Toolkit;
38 typedef Toolkit::NPatchUtility::StretchRanges StretchRanges;
40 const char* TEST_9_PATCH_FILE_NAME = TEST_RESOURCE_DIR "/demo-tile-texture-focused.9.png";
41 const char* TEST_NPATCH_FILE_NAME = TEST_RESOURCE_DIR "/heartsframe.9.png";
42 const char* TEST_SVG_FILE_NAME = TEST_RESOURCE_DIR "/svg1.svg";
43 const char* TEST_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube.obj";
44 const char* TEST_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal.mtl";
45 const char* TEST_SIMPLE_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube-Points-Only.obj";
46 const char* TEST_SIMPLE_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal-Simple.mtl";
47 const char* TEST_AUX_IMAGE = TEST_RESOURCE_DIR "/folder_appicon_empty_bg.png";
48 const char* TEST_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/gallery-small-1.jpg";
50 // resolution: 50*50, frame count: 4, frame delay: 0.2 second for each frame
51 const char* TEST_GIF_FILE_NAME = TEST_RESOURCE_DIR "/anim.gif";
53 // resolution: 34*34, pixel format: RGBA8888
54 static const char* gImage_34_RGBA = TEST_RESOURCE_DIR "/icon-edit.png";
56 Property::Map DefaultTransform()
58 Property::Map transformMap;
60 .Add(Toolkit::Visual::Transform::Property::OFFSET, Vector2(0.0f, 0.0f))
61 .Add(Toolkit::Visual::Transform::Property::SIZE, Vector2(1.0f, 1.0f))
62 .Add(Toolkit::Visual::Transform::Property::ORIGIN, Toolkit::Align::CENTER)
63 .Add(Toolkit::Visual::Transform::Property::ANCHOR_POINT, Toolkit::Align::CENTER)
64 .Add(Toolkit::Visual::Transform::Property::OFFSET_POLICY, Vector2(Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::RELATIVE))
65 .Add(Toolkit::Visual::Transform::Property::SIZE_POLICY, Vector2(Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::RELATIVE));
69 void TestVisualRender(ToolkitTestApplication& application,
73 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
74 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
76 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
77 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
79 application.GetScene().Add(actor);
81 application.SendNotification();
85 application.SendNotification();
87 DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION);
90 void TestVisualAsynchronousRender(ToolkitTestApplication& application,
94 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
95 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
97 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
98 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
100 application.GetScene().Add(actor);
102 application.SendNotification();
103 application.Render();
105 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
107 application.SendNotification();
108 application.Render();
110 DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION);
113 int gResourceReadySignalCounter;
115 void OnResourceReadySignal(Control control)
117 gResourceReadySignalCounter++;
122 void dali_visual_factory_startup(void)
124 test_return_value = TET_UNDEF;
127 void dali_visual_factory_cleanup(void)
129 test_return_value = TET_PASS;
132 int UtcDaliVisualFactoryGet(void)
134 ToolkitTestApplication application;
135 tet_infoline("UtcDaliVisualFactory");
139 type = TypeRegistry::Get().GetTypeInfo("VisualFactory");
140 DALI_TEST_CHECK(type);
141 BaseHandle handle = type.CreateInstance();
142 DALI_TEST_CHECK(handle);
144 VisualFactory factory;
145 factory = VisualFactory::Get();
146 DALI_TEST_CHECK(factory);
148 VisualFactory newFactory = VisualFactory::Get();
149 DALI_TEST_CHECK(newFactory);
151 // Check that visual factory is a singleton
152 DALI_TEST_CHECK(factory == newFactory);
157 int UtcDaliVisualFactoryCopyAndAssignment(void)
159 ToolkitTestApplication application;
160 tet_infoline("UtcDaliVisualFactoryCopyAndAssignment");
161 VisualFactory factory = VisualFactory::Get();
163 VisualFactory factoryCopy(factory);
164 DALI_TEST_CHECK(factory == factoryCopy);
166 VisualFactory emptyFactory;
167 VisualFactory emptyFactoryCopy(emptyFactory);
168 DALI_TEST_CHECK(emptyFactory == emptyFactoryCopy);
170 VisualFactory factoryEquals;
171 factoryEquals = factory;
172 DALI_TEST_CHECK(factory == factoryEquals);
174 VisualFactory emptyFactoryEquals;
175 emptyFactoryEquals = emptyFactory;
176 DALI_TEST_CHECK(emptyFactory == emptyFactoryEquals);
180 DALI_TEST_CHECK(factory = factoryCopy);
185 int UtcDaliVisualFactoryGetColorVisual1(void)
187 ToolkitTestApplication application;
188 tet_infoline("UtcDaliVisualFactoryGetColorVisual1: Request color visual with a Property::Map");
190 static std::vector<UniformData> customUniforms =
192 UniformData("mixColor", Property::Type::VECTOR3),
195 TestGraphicsController& graphics = application.GetGraphicsController();
196 graphics.AddCustomUniforms(customUniforms);
198 VisualFactory factory = VisualFactory::Get();
199 DALI_TEST_CHECK(factory);
201 Property::Map propertyMap;
202 Vector4 testColor(1.f, 0.5f, 0.3f, 0.2f);
203 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
204 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, testColor);
206 Visual::Base visual = factory.CreateVisual(propertyMap);
207 DALI_TEST_CHECK(visual);
209 DummyControl actor = DummyControl::New(true);
210 TestVisualRender(application, actor, visual);
212 Vector3 actualValue(Vector4::ZERO);
213 Vector4 actualColor(Vector4::ZERO);
214 TestGlAbstraction& gl = application.GetGlAbstraction();
215 DALI_TEST_CHECK(gl.GetUniformValue<Vector3>("mixColor", actualValue));
216 DALI_TEST_CHECK(gl.GetUniformValue<Vector4>("uColor", actualColor));
217 DALI_TEST_EQUALS(actualValue, Vector3(testColor), TEST_LOCATION);
218 DALI_TEST_EQUALS(actualColor.a, testColor.a, TEST_LOCATION);
223 int UtcDaliVisualFactoryGetColorVisual2(void)
225 ToolkitTestApplication application;
226 tet_infoline("UtcDaliVisualFactoryGetColorVisual2: Request color visual with a Vector4");
228 static std::vector<UniformData> customUniforms =
230 UniformData("mixColor", Property::Type::VECTOR3),
233 TestGraphicsController& graphics = application.GetGraphicsController();
234 graphics.AddCustomUniforms(customUniforms);
236 VisualFactory factory = VisualFactory::Get();
237 DALI_TEST_CHECK(factory);
239 Vector4 testColor(1.f, 0.5f, 0.3f, 0.2f);
240 Dali::Property::Map map;
241 map[Toolkit::Visual::Property::TYPE] = Visual::COLOR;
242 map[ColorVisual::Property::MIX_COLOR] = testColor;
243 Visual::Base visual = factory.CreateVisual(map);
244 DALI_TEST_CHECK(visual);
246 DummyControl actor = DummyControl::New(true);
247 TestVisualRender(application, actor, visual);
251 TestGlAbstraction& gl = application.GetGlAbstraction();
252 DALI_TEST_CHECK(gl.GetUniformValue<Vector3>("mixColor", actualValue));
253 DALI_TEST_CHECK(gl.GetUniformValue<Vector4>("uColor", actualColor));
254 DALI_TEST_EQUALS(actualValue, Vector3(testColor), TEST_LOCATION);
255 DALI_TEST_EQUALS(actualColor.a, testColor.a, TEST_LOCATION);
257 application.GetScene().Remove(actor);
258 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
263 int UtcDaliVisualFactoryGetBorderVisual1(void)
265 ToolkitTestApplication application;
266 tet_infoline("UtcDaliVisualFactoryGetBorderVisual1: Request border visual with a Property::Map");
268 static std::vector<UniformData> customUniforms =
270 UniformData("borderColor", Property::Type::VECTOR4),
271 UniformData("borderSize", Property::Type::FLOAT),
274 TestGraphicsController& graphics = application.GetGraphicsController();
275 graphics.AddCustomUniforms(customUniforms);
277 VisualFactory factory = VisualFactory::Get();
278 DALI_TEST_CHECK(factory);
280 Property::Map propertyMap;
281 Vector4 testColor(1.f, 0.5f, 0.3f, 0.2f);
282 float testSize = 5.f;
283 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
284 propertyMap.Insert(BorderVisual::Property::COLOR, testColor);
285 propertyMap.Insert(BorderVisual::Property::SIZE, testSize);
287 Visual::Base visual = factory.CreateVisual(propertyMap);
288 DALI_TEST_CHECK(visual);
290 DummyControl actor = DummyControl::New(true);
291 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
292 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
293 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
294 application.GetScene().Add(actor);
295 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
297 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
298 int blendMode = actor.GetRendererAt(0u).GetProperty<int>(Renderer::Property::BLEND_MODE);
299 DALI_TEST_EQUALS(static_cast<BlendMode::Type>(blendMode), BlendMode::ON, TEST_LOCATION);
301 TestGlAbstraction& gl = application.GetGlAbstraction();
303 application.SendNotification();
304 application.Render(0);
306 Vector4 actualColor(Vector4::ZERO);
307 DALI_TEST_CHECK(gl.GetUniformValue<Vector4>("borderColor", actualColor));
308 DALI_TEST_EQUALS(actualColor, testColor, TEST_LOCATION);
310 float actualSize = 0.f;
311 DALI_TEST_CHECK(gl.GetUniformValue<float>("borderSize", actualSize));
312 DALI_TEST_EQUALS(actualSize, testSize, TEST_LOCATION);
315 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
320 int UtcDaliVisualFactoryGetBorderVisual2(void)
322 ToolkitTestApplication application;
323 tet_infoline("UtcDaliVisualFactoryGetBorderVisual2: Request border visual with a borderSize and a borderColor");
325 static std::vector<UniformData> customUniforms =
327 UniformData("borderColor", Property::Type::VECTOR4),
328 UniformData("borderSize", Property::Type::FLOAT),
331 TestGraphicsController& graphics = application.GetGraphicsController();
332 graphics.AddCustomUniforms(customUniforms);
334 VisualFactory factory = VisualFactory::Get();
335 DALI_TEST_CHECK(factory);
337 Vector4 testColor(1.f, 0.5f, 0.3f, 1.f);
338 float testSize = 5.f;
340 Dali::Property::Map propertyMap;
341 propertyMap[Toolkit::Visual::Property::TYPE] = Visual::BORDER;
342 propertyMap[BorderVisual::Property::COLOR] = testColor;
343 propertyMap[BorderVisual::Property::SIZE] = testSize;
344 Visual::Base visual = factory.CreateVisual(propertyMap);
345 DALI_TEST_CHECK(visual);
347 DummyControl actor = DummyControl::New(true);
348 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
349 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
350 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
351 application.GetScene().Add(actor);
352 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
354 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
356 TestGlAbstraction& gl = application.GetGlAbstraction();
358 application.SendNotification();
359 application.Render(0);
361 int blendMode = actor.GetRendererAt(0u).GetProperty<int>(Renderer::Property::BLEND_MODE);
362 DALI_TEST_EQUALS(static_cast<BlendMode::Type>(blendMode), BlendMode::AUTO, TEST_LOCATION);
364 Vector4 actualColor(Vector4::ZERO);
365 DALI_TEST_CHECK(gl.GetUniformValue<Vector4>("borderColor", actualColor));
366 DALI_TEST_EQUALS(actualColor, testColor, TEST_LOCATION);
368 float actualSize = 0.f;
369 DALI_TEST_CHECK(gl.GetUniformValue<float>("borderSize", actualSize));
370 DALI_TEST_EQUALS(actualSize, testSize, TEST_LOCATION);
374 // enable the anti-aliasing
375 Dali::Property::Map map;
376 map[Toolkit::Visual::Property::TYPE] = Visual::BORDER;
377 map[BorderVisual::Property::COLOR] = testColor;
378 map[BorderVisual::Property::SIZE] = testSize;
379 map[BorderVisual::Property::ANTI_ALIASING] = true;
380 visual = factory.CreateVisual(map);
382 dummyImpl.RegisterVisual(Control::CONTROL_PROPERTY_END_INDEX + 1, visual);
383 application.GetScene().Add(actor);
385 blendMode = actor.GetRendererAt(0u).GetProperty<int>(Renderer::Property::BLEND_MODE);
386 DALI_TEST_EQUALS(static_cast<BlendMode::Type>(blendMode), BlendMode::ON, TEST_LOCATION);
391 int UtcDaliVisualFactoryGetLinearGradientVisual(void)
393 ToolkitTestApplication application;
394 tet_infoline("UtcDaliVisualFactoryGetRadialGradientVisual");
396 static std::vector<UniformData> customUniforms =
398 UniformData("uAlignmentMatrix", Property::Type::MATRIX),
401 TestGraphicsController& graphics = application.GetGraphicsController();
402 graphics.AddCustomUniforms(customUniforms);
404 VisualFactory factory = VisualFactory::Get();
405 DALI_TEST_CHECK(factory);
407 Property::Map propertyMap;
408 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
410 Vector2 start(-1.f, -1.f);
411 Vector2 end(1.f, 1.f);
412 propertyMap.Insert(GradientVisual::Property::START_POSITION, start);
413 propertyMap.Insert(GradientVisual::Property::END_POSITION, end);
414 propertyMap.Insert(GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT);
416 Property::Array stopOffsets;
417 stopOffsets.PushBack(0.2f);
418 stopOffsets.PushBack(0.8f);
419 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, stopOffsets);
421 Property::Array stopColors;
422 stopColors.PushBack(Color::RED);
423 stopColors.PushBack(Color::GREEN);
424 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
426 Visual::Base visual = factory.CreateVisual(propertyMap);
427 DALI_TEST_CHECK(visual);
429 // A lookup texture is generated and pass to shader as sampler
430 DummyControl actor = DummyControl::New(true);
431 TestVisualRender(application, actor, visual);
436 int UtcDaliVisualFactoryGetRadialGradientVisual(void)
438 ToolkitTestApplication application;
439 tet_infoline("UtcDaliVisualFactoryGetRadialGradientVisual");
441 static std::vector<UniformData> customUniforms =
443 UniformData("uAlignmentMatrix", Property::Type::MATRIX3),
446 TestGraphicsController& graphics = application.GetGraphicsController();
447 graphics.AddCustomUniforms(customUniforms);
449 VisualFactory factory = VisualFactory::Get();
450 DALI_TEST_CHECK(factory);
452 Property::Map propertyMap;
453 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
455 Vector2 center(100.f, 100.f);
456 float radius = 100.f;
457 propertyMap.Insert(GradientVisual::Property::UNITS, GradientVisual::Units::USER_SPACE);
458 propertyMap.Insert(GradientVisual::Property::CENTER, center);
459 propertyMap.Insert(GradientVisual::Property::RADIUS, radius);
461 Property::Array stopOffsets;
462 stopOffsets.PushBack(0.0f);
463 stopOffsets.PushBack(1.f);
464 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, stopOffsets);
466 Property::Array stopColors;
467 stopColors.PushBack(Color::RED);
468 stopColors.PushBack(Color::GREEN);
469 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
471 Visual::Base visual = factory.CreateVisual(propertyMap);
472 DALI_TEST_CHECK(visual);
474 // A lookup texture is generated and pass to shader as sampler
475 DummyControl actor = DummyControl::New(true);
476 TestVisualRender(application, actor, visual);
478 Matrix3 alignMatrix(radius, 0.f, 0.f, 0.f, radius, 0.f, center.x, center.y, 1.f);
479 alignMatrix.Invert();
481 Matrix3 actualValue(Matrix3::IDENTITY);
482 TestGlAbstraction& gl = application.GetGlAbstraction();
483 DALI_TEST_CHECK(gl.GetUniformValue<Matrix3>("uAlignmentMatrix", actualValue));
484 DALI_TEST_EQUALS(actualValue, alignMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION);
489 int UtcDaliVisualFactoryDefaultOffsetsGradientVisual(void)
491 ToolkitTestApplication application;
492 tet_infoline("UtcDaliVisualFactoryGetRadialGradientVisual");
494 VisualFactory factory = VisualFactory::Get();
495 DALI_TEST_CHECK(factory);
497 Property::Map propertyMap;
498 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
500 Vector2 start(-1.f, -1.f);
501 Vector2 end(1.f, 1.f);
502 propertyMap.Insert(GradientVisual::Property::START_POSITION, start);
503 propertyMap.Insert(GradientVisual::Property::END_POSITION, end);
504 propertyMap.Insert(GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT);
506 Property::Array stopColors;
507 stopColors.PushBack(Color::RED);
508 stopColors.PushBack(Color::GREEN);
509 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
511 Visual::Base visual = factory.CreateVisual(propertyMap);
512 DALI_TEST_CHECK(visual);
514 // A lookup texture is generated and pass to shader as sampler
515 DummyControl actor = DummyControl::New(true);
516 TestVisualRender(application, actor, visual);
518 application.GetScene().Remove(actor);
519 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
524 int UtcDaliVisualFactoryGetNPatchVisualSynchronousLoad1(void)
526 ToolkitTestApplication application;
527 tet_infoline("UtcDaliVisualFactoryGetNPatchVisualSynchronousLoad1: Request 9-patch visual with a Property::Map");
529 VisualFactory factory = VisualFactory::Get();
530 DALI_TEST_CHECK(factory);
532 // Get actual size of test image
533 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_9_PATCH_FILE_NAME);
535 Property::Map propertyMap;
536 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
537 propertyMap.Insert(ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME);
538 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
540 tet_infoline("whole grid");
541 Visual::Base visual = factory.CreateVisual(propertyMap);
542 DALI_TEST_CHECK(visual);
544 TestGlAbstraction& gl = application.GetGlAbstraction();
545 TraceCallStack& textureTrace = gl.GetTextureTrace();
546 textureTrace.Enable(true);
548 DummyControl actor = DummyControl::New(true);
549 TestVisualRender(application, actor, visual);
551 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
553 Vector2 naturalSize(0.0f, 0.0f);
554 visual.GetNaturalSize(naturalSize);
555 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
558 propertyMap.Insert(ImageVisual::Property::BORDER_ONLY, true);
560 tet_infoline("border only");
561 Visual::Base visual = factory.CreateVisual(propertyMap);
562 DALI_TEST_CHECK(visual);
564 TestGlAbstraction& gl = application.GetGlAbstraction();
565 TraceCallStack& textureTrace = gl.GetTextureTrace();
566 textureTrace.Enable(true);
568 DummyControl actor = DummyControl::New(true);
569 TestVisualRender(application, actor, visual);
571 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
573 Vector2 naturalSize(0.0f, 0.0f);
574 visual.GetNaturalSize(naturalSize);
575 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
581 int UtcDaliVisualFactoryGetNPatchVisualSynchronousLoad2(void)
583 ToolkitTestApplication application;
584 tet_infoline("UtcDaliVisualFactoryGetNPatchVisualSynchronousLoad2: Request 9-patch visual with a Property::Map including border");
586 VisualFactory factory = VisualFactory::Get();
587 DALI_TEST_CHECK(factory);
589 // Get actual size of test image
590 ImageDimensions imageSize = Dali::GetClosestImageSize(gImage_34_RGBA);
592 Property::Map propertyMap;
593 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
594 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
595 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(2, 2, 2, 2));
596 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
598 tet_infoline("whole grid");
599 Visual::Base visual = factory.CreateVisual(propertyMap);
600 DALI_TEST_CHECK(visual);
602 TestGlAbstraction& gl = application.GetGlAbstraction();
603 TraceCallStack& textureTrace = gl.GetTextureTrace();
604 textureTrace.Enable(true);
606 DummyControl actor = DummyControl::New(true);
607 TestVisualRender(application, actor, visual);
609 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
611 Vector2 naturalSize(0.0f, 0.0f);
612 visual.GetNaturalSize(naturalSize);
613 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
616 propertyMap.Insert(ImageVisual::Property::BORDER_ONLY, true);
618 tet_infoline("border only");
619 Visual::Base visual = factory.CreateVisual(propertyMap);
620 DALI_TEST_CHECK(visual);
622 TestGlAbstraction& gl = application.GetGlAbstraction();
623 TraceCallStack& textureTrace = gl.GetTextureTrace();
624 textureTrace.Enable(true);
626 DummyControl actor = DummyControl::New(true);
627 TestVisualRender(application, actor, visual);
629 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
631 Vector2 naturalSize(0.0f, 0.0f);
632 visual.GetNaturalSize(naturalSize);
633 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
637 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
638 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
639 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(1, 1, 1, 1));
640 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
642 tet_infoline("whole grid");
643 Visual::Base visual = factory.CreateVisual(propertyMap);
644 DALI_TEST_CHECK(visual);
646 TestGlAbstraction& gl = application.GetGlAbstraction();
647 TraceCallStack& textureTrace = gl.GetTextureTrace();
648 textureTrace.Enable(true);
650 DummyControl actor = DummyControl::New(true);
651 TestVisualRender(application, actor, visual);
653 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
655 Vector2 naturalSize(0.0f, 0.0f);
656 visual.GetNaturalSize(naturalSize);
657 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
663 int UtcDaliVisualFactoryGetNPatchVisual1(void)
665 ToolkitTestApplication application;
666 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual1: Request 9-patch visual with a Property::Map");
668 VisualFactory factory = VisualFactory::Get();
669 DALI_TEST_CHECK(factory);
671 // Get actual size of test image
672 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_9_PATCH_FILE_NAME);
674 Property::Map propertyMap;
675 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
676 propertyMap.Insert(ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME);
677 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, false);
679 tet_infoline("whole grid");
680 Visual::Base visual = factory.CreateVisual(propertyMap);
681 DALI_TEST_CHECK(visual);
683 Vector2 naturalSize(0.0f, 0.0f);
684 visual.GetNaturalSize(naturalSize);
685 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
687 TestGlAbstraction& gl = application.GetGlAbstraction();
688 TraceCallStack& textureTrace = gl.GetTextureTrace();
689 textureTrace.Enable(true);
691 DummyControl actor = DummyControl::New(true);
692 TestVisualAsynchronousRender(application, actor, visual);
694 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
696 visual.GetNaturalSize(naturalSize);
697 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
700 propertyMap.Insert(ImageVisual::Property::BORDER_ONLY, true);
702 tet_infoline("border only");
703 Visual::Base visual = factory.CreateVisual(propertyMap);
704 DALI_TEST_CHECK(visual);
706 TestGlAbstraction& gl = application.GetGlAbstraction();
707 TraceCallStack& textureTrace = gl.GetTextureTrace();
708 textureTrace.Enable(true);
710 DummyControl actor = DummyControl::New(true);
711 TestVisualRender(application, actor, visual);
713 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
715 Vector2 naturalSize(0.0f, 0.0f);
716 visual.GetNaturalSize(naturalSize);
717 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
723 int UtcDaliVisualFactoryGetNPatchVisual2(void)
725 ToolkitTestApplication application;
726 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual2: Request 9-patch visual with a Property::Map including border");
728 VisualFactory factory = VisualFactory::Get();
729 DALI_TEST_CHECK(factory);
731 // Get actual size of test image
732 ImageDimensions imageSize = Dali::GetClosestImageSize(gImage_34_RGBA);
734 Property::Map propertyMap;
735 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
736 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
737 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(2, 2, 2, 2));
739 tet_infoline("whole grid (2,2,2,2) async");
740 Visual::Base visual = factory.CreateVisual(propertyMap);
741 DALI_TEST_CHECK(visual);
743 TestGlAbstraction& gl = application.GetGlAbstraction();
744 TraceCallStack& textureTrace = gl.GetTextureTrace();
745 textureTrace.Enable(true);
747 DummyControl actor = DummyControl::New(true);
748 TestVisualAsynchronousRender(application, actor, visual);
750 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
752 Vector2 naturalSize(0.0f, 0.0f);
753 visual.GetNaturalSize(naturalSize);
754 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
757 propertyMap.Insert(ImageVisual::Property::BORDER_ONLY, true);
759 tet_infoline("border only");
760 Visual::Base visual = factory.CreateVisual(propertyMap);
761 DALI_TEST_CHECK(visual);
763 TestGlAbstraction& gl = application.GetGlAbstraction();
764 TraceCallStack& textureTrace = gl.GetTextureTrace();
765 textureTrace.Enable(true);
767 DummyControl actor = DummyControl::New(true);
768 TestVisualRender(application, actor, visual);
770 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
772 Vector2 naturalSize(0.0f, 0.0f);
773 visual.GetNaturalSize(naturalSize);
774 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
778 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
779 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
780 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(2, 2, 2, 2));
781 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
783 tet_infoline("whole grid (2,2,2,2) sync");
784 Visual::Base visual = factory.CreateVisual(propertyMap);
785 DALI_TEST_CHECK(visual);
787 TestGlAbstraction& gl = application.GetGlAbstraction();
788 TraceCallStack& textureTrace = gl.GetTextureTrace();
789 textureTrace.Enable(true);
791 DummyControl actor = DummyControl::New(true);
792 TestVisualRender(application, actor, visual);
794 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
796 Vector2 naturalSize(0.0f, 0.0f);
797 visual.GetNaturalSize(naturalSize);
798 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
802 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
803 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
804 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(1, 1, 1, 1));
805 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
807 tet_infoline("whole grid (1,1,1,1) sync : for testing same image, different border");
808 Visual::Base visual = factory.CreateVisual(propertyMap);
809 DALI_TEST_CHECK(visual);
811 TestGlAbstraction& gl = application.GetGlAbstraction();
812 TraceCallStack& textureTrace = gl.GetTextureTrace();
813 textureTrace.Enable(true);
815 DummyControl actor = DummyControl::New(true);
816 TestVisualRender(application, actor, visual);
818 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
820 Vector2 naturalSize(0.0f, 0.0f);
821 visual.GetNaturalSize(naturalSize);
822 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
826 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
827 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
828 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(1, 1, 1, 1));
830 tet_infoline("whole grid (1,1,1,1) async");
831 Visual::Base visual = factory.CreateVisual(propertyMap);
832 DALI_TEST_CHECK(visual);
834 TestGlAbstraction& gl = application.GetGlAbstraction();
835 TraceCallStack& textureTrace = gl.GetTextureTrace();
836 textureTrace.Enable(true);
838 DummyControl actor = DummyControl::New(true);
839 TestVisualRender(application, actor, visual);
841 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
843 Vector2 naturalSize(0.0f, 0.0f);
844 visual.GetNaturalSize(naturalSize);
845 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
849 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
850 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
851 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(3, 3, 3, 3));
853 tet_infoline("whole grid (3,3,3,3) async");
854 Visual::Base visual = factory.CreateVisual(propertyMap);
855 DALI_TEST_CHECK(visual);
857 TestGlAbstraction& gl = application.GetGlAbstraction();
858 TraceCallStack& textureTrace = gl.GetTextureTrace();
859 textureTrace.Enable(true);
861 DummyControl actor = DummyControl::New(true);
862 TestVisualRender(application, actor, visual);
864 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
866 Vector2 naturalSize(0.0f, 0.0f);
867 visual.GetNaturalSize(naturalSize);
868 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
874 int UtcDaliVisualFactoryGetNPatchVisual3(void)
876 ToolkitTestApplication application;
877 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual3: Request n-patch visual with a Property::Map");
879 VisualFactory factory = VisualFactory::Get();
880 DALI_TEST_CHECK(factory);
882 // Get actual size of test image
883 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_NPATCH_FILE_NAME);
885 Property::Map propertyMap;
886 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
887 propertyMap.Insert(ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME);
889 Visual::Base visual = factory.CreateVisual(propertyMap);
890 DALI_TEST_CHECK(visual);
892 TestGlAbstraction& gl = application.GetGlAbstraction();
893 TraceCallStack& textureTrace = gl.GetTextureTrace();
894 textureTrace.Enable(true);
896 DummyControl actor = DummyControl::New(true);
897 TestVisualAsynchronousRender(application, actor, visual);
899 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
901 Vector2 naturalSize(0.0f, 0.0f);
902 visual.GetNaturalSize(naturalSize);
903 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
906 propertyMap.Insert(ImageVisual::Property::BORDER_ONLY, true);
908 tet_infoline("border only");
909 Visual::Base visual = factory.CreateVisual(propertyMap);
910 DALI_TEST_CHECK(visual);
912 TestGlAbstraction& gl = application.GetGlAbstraction();
913 TraceCallStack& textureTrace = gl.GetTextureTrace();
914 textureTrace.Enable(true);
915 DummyControl actor = DummyControl::New(true);
916 TestVisualRender(application, actor, visual);
918 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
920 Vector2 naturalSize(0.0f, 0.0f);
921 visual.GetNaturalSize(naturalSize);
922 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
924 application.GetScene().Remove(actor);
925 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
931 int UtcDaliVisualFactoryGetNPatchVisual4(void)
933 ToolkitTestApplication application;
934 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual4: Request 9-patch visual with an image url");
936 // Get actual size of test image
937 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_9_PATCH_FILE_NAME);
939 VisualFactory factory = VisualFactory::Get();
940 DALI_TEST_CHECK(factory);
942 Visual::Base visual = factory.CreateVisual(TEST_9_PATCH_FILE_NAME, ImageDimensions());
943 DALI_TEST_CHECK(visual);
945 TestGlAbstraction& gl = application.GetGlAbstraction();
946 TraceCallStack& textureTrace = gl.GetTextureTrace();
947 textureTrace.Enable(true);
948 DummyControl actor = DummyControl::New(true);
949 TestVisualAsynchronousRender(application, actor, visual);
951 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
953 Vector2 naturalSize(0.0f, 0.0f);
954 visual.GetNaturalSize(naturalSize);
955 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
957 textureTrace.Reset();
962 int UtcDaliVisualFactoryGetNPatchVisual5(void)
964 ToolkitTestApplication application;
965 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual5: Request n-patch visual with an image url");
967 // Get actual size of test image
968 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_NPATCH_FILE_NAME);
970 VisualFactory factory = VisualFactory::Get();
971 DALI_TEST_CHECK(factory);
973 Visual::Base visual = factory.CreateVisual(TEST_NPATCH_FILE_NAME, ImageDimensions());
974 DALI_TEST_CHECK(visual);
976 TestGlAbstraction& gl = application.GetGlAbstraction();
977 TraceCallStack& textureTrace = gl.GetTextureTrace();
978 textureTrace.Enable(true);
980 DummyControl actor = DummyControl::New(true);
981 TestVisualAsynchronousRender(application, actor, visual);
983 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
985 Vector2 naturalSize(0.0f, 0.0f);
986 visual.GetNaturalSize(naturalSize);
987 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
992 int UtcDaliVisualFactoryGetNPatchVisual6(void)
994 ToolkitTestApplication application;
995 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual6: Request n-patch visual with a general image");
997 VisualFactory factory = VisualFactory::Get();
998 DALI_TEST_CHECK(factory);
1001 // Get actual size of test image
1002 ImageDimensions imageSize = Dali::GetClosestImageSize(gImage_34_RGBA);
1004 Property::Map propertyMap;
1005 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1006 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
1008 Visual::Base visual = factory.CreateVisual(propertyMap);
1009 DALI_TEST_CHECK(visual);
1011 TestGlAbstraction& gl = application.GetGlAbstraction();
1012 TraceCallStack& textureTrace = gl.GetTextureTrace();
1013 textureTrace.Enable(true);
1015 DummyControl actor = DummyControl::New(true);
1016 TestVisualAsynchronousRender(application, actor, visual);
1018 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1020 Vector2 naturalSize(0.0f, 0.0f);
1021 visual.GetNaturalSize(naturalSize);
1022 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
1024 application.GetScene().Remove(actor);
1025 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
1029 // Get actual size of test image
1030 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_IMAGE_FILE_NAME);
1032 Property::Map propertyMap;
1033 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1034 propertyMap.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME);
1036 Visual::Base visual = factory.CreateVisual(propertyMap);
1037 DALI_TEST_CHECK(visual);
1039 TestGlAbstraction& gl = application.GetGlAbstraction();
1040 TraceCallStack& textureTrace = gl.GetTextureTrace();
1041 textureTrace.Enable(true);
1043 DummyControl actor = DummyControl::New(true);
1044 TestVisualAsynchronousRender(application, actor, visual);
1046 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1048 Vector2 naturalSize(0.0f, 0.0f);
1049 visual.GetNaturalSize(naturalSize);
1050 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
1052 application.GetScene().Remove(actor);
1053 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
1059 int UtcDaliVisualFactoryGetNPatchVisual7(void)
1061 ToolkitTestApplication application;
1062 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual7: Add 9-patch visual on stage and instantly remove it.");
1064 VisualFactory factory = VisualFactory::Get();
1065 DALI_TEST_CHECK(factory);
1067 // Get actual size of test image
1068 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_9_PATCH_FILE_NAME);
1070 Property::Map propertyMap;
1071 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1072 propertyMap.Insert(ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME);
1073 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, false);
1075 Visual::Base visual = factory.CreateVisual(propertyMap);
1076 DALI_TEST_CHECK(visual);
1078 Vector2 naturalSize(0.0f, 0.0f);
1079 visual.GetNaturalSize(naturalSize);
1080 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
1082 TestGlAbstraction& gl = application.GetGlAbstraction();
1083 TraceCallStack& textureTrace = gl.GetTextureTrace();
1084 textureTrace.Enable(true);
1086 DummyControl actor = DummyControl::New(true);
1088 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1089 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1091 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1092 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1094 application.GetScene().Add(actor);
1097 application.SendNotification();
1098 application.Render();
1100 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1102 application.SendNotification();
1103 application.Render();
1105 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1111 int UtcDaliVisualFactoryGetNPatchVisual8(void)
1113 ToolkitTestApplication application;
1114 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual8: Add 9-patch visual on stage, instantly remove it and add new 9-patch visual with same propertyMap");
1116 VisualFactory factory = VisualFactory::Get();
1117 DALI_TEST_CHECK(factory);
1119 // Get actual size of test image
1120 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_9_PATCH_FILE_NAME);
1122 Property::Map propertyMap;
1123 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1124 propertyMap.Insert(ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME);
1125 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, false);
1127 Visual::Base visual = factory.CreateVisual(propertyMap);
1128 DALI_TEST_CHECK(visual);
1130 Vector2 naturalSize(0.0f, 0.0f);
1131 visual.GetNaturalSize(naturalSize);
1132 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
1134 TestGlAbstraction& gl = application.GetGlAbstraction();
1135 TraceCallStack& textureTrace = gl.GetTextureTrace();
1136 textureTrace.Enable(true);
1138 DummyControl actor = DummyControl::New(true);
1140 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1141 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1143 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1144 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1146 application.GetScene().Add(actor);
1149 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1151 application.SendNotification();
1152 application.Render();
1154 visual = factory.CreateVisual(propertyMap);
1155 DALI_TEST_CHECK(visual);
1157 visual.GetNaturalSize(naturalSize);
1158 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
1160 actor = DummyControl::New(true);
1162 DummyControlImpl& dummyImpl2 = static_cast<DummyControlImpl&>(actor.GetImplementation());
1163 dummyImpl2.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1165 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1166 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1168 application.GetScene().Add(actor);
1170 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1172 application.SendNotification();
1173 application.Render();
1175 Renderer renderer = actor.GetRendererAt(0);
1176 auto textures = renderer.GetTextures();
1178 DALI_TEST_EQUALS(textures.GetTextureCount(), 1, TEST_LOCATION);
1184 int UtcDaliVisualFactoryGetNPatchVisual9(void)
1186 ToolkitTestApplication application;
1187 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual9: Request n-patch visual sync during another n-patch visual load image asynchronously");
1189 VisualFactory factory = VisualFactory::Get();
1190 DALI_TEST_CHECK(factory);
1192 Property::Map propertyMap;
1193 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1194 propertyMap.Insert(ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME);
1195 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, false);
1196 Visual::Base visual = factory.CreateVisual(propertyMap);
1197 DALI_TEST_CHECK(visual);
1199 TestGlAbstraction& gl = application.GetGlAbstraction();
1200 TraceCallStack& textureTrace = gl.GetTextureTrace();
1201 textureTrace.Enable(true);
1203 DummyControl actor = DummyControl::New(true);
1205 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1206 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1208 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1209 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1211 application.GetScene().Add(actor);
1213 propertyMap.Clear();
1214 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1215 propertyMap.Insert(ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME);
1216 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
1217 Visual::Base visual2 = factory.CreateVisual(propertyMap);
1218 DALI_TEST_CHECK(visual2);
1220 DummyControl actor2 = DummyControl::New(true);
1222 DummyControlImpl& dummyImpl2 = static_cast<DummyControlImpl&>(actor2.GetImplementation());
1223 dummyImpl2.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual2);
1225 actor2.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1226 DALI_TEST_EQUALS(actor2.GetRendererCount(), 0u, TEST_LOCATION);
1228 application.GetScene().Add(actor2);
1230 application.SendNotification();
1231 application.Render();
1233 application.SendNotification();
1234 application.Render();
1236 // Async loading is not finished yet.
1238 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1240 // Sync loading is finished.
1242 Renderer renderer = actor2.GetRendererAt(0);
1243 auto textures = renderer.GetTextures();
1245 DALI_TEST_EQUALS(textures.GetTextureCount(), 1, TEST_LOCATION);
1247 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1249 application.SendNotification();
1250 application.Render();
1251 // Async loading is finished.
1253 Renderer renderer = actor.GetRendererAt(0);
1254 auto textures = renderer.GetTextures();
1256 DALI_TEST_EQUALS(textures.GetTextureCount(), 1, TEST_LOCATION);
1262 int UtcDaliVisualFactoryGetNPatchVisual10(void)
1264 ToolkitTestApplication application;
1265 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual10: Request same 9-patch visual with a different border");
1267 VisualFactory factory = VisualFactory::Get();
1268 DALI_TEST_CHECK(factory);
1270 // Get actual size of test image
1271 ImageDimensions imageSize = Dali::GetClosestImageSize(gImage_34_RGBA);
1273 Property::Map propertyMap;
1274 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1275 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
1276 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(2, 2, 2, 2));
1278 tet_infoline("whole grid (2,2,2,2) async");
1279 Visual::Base visual = factory.CreateVisual(propertyMap);
1280 DALI_TEST_CHECK(visual);
1282 TestGlAbstraction& gl = application.GetGlAbstraction();
1283 TraceCallStack& textureTrace = gl.GetTextureTrace();
1284 textureTrace.Enable(true);
1286 DummyControl actor = DummyControl::New(true);
1287 TestVisualAsynchronousRender(application, actor, visual);
1289 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1291 Vector2 naturalSize(0.0f, 0.0f);
1292 visual.GetNaturalSize(naturalSize);
1293 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
1296 propertyMap.Clear();
1297 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1298 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
1299 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(1, 1, 1, 1));
1301 tet_infoline("whole grid (1,1,1,1) async. Check whether we use cached texture");
1302 // We don't use dummyControl here
1304 const int expectResourceReadySignalCounter = 10;
1305 gResourceReadySignalCounter = 0;
1307 for(int i = 0; i < expectResourceReadySignalCounter; i++)
1309 ImageView imageView = ImageView::New();
1310 imageView[Toolkit::ImageView::Property::IMAGE] = propertyMap;
1311 imageView.ResourceReadySignal().Connect(&OnResourceReadySignal);
1312 application.GetScene().Add(imageView);
1315 // Dont wait for loading. All border use cached texture.
1317 DALI_TEST_EQUALS(gResourceReadySignalCounter, expectResourceReadySignalCounter, TEST_LOCATION);
1320 propertyMap.Clear();
1321 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1322 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
1323 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(1, 2, 1, 2));
1325 tet_infoline("whole grid (1,2,1,2) async. Check whether we use cached texture");
1326 // We don't use dummyControl here
1328 const int expectResourceReadySignalCounter = 10;
1329 gResourceReadySignalCounter = 0;
1331 for(int i = 0; i < expectResourceReadySignalCounter; i++)
1333 ImageView imageView = ImageView::New();
1334 imageView[Toolkit::ImageView::Property::IMAGE] = propertyMap;
1335 imageView.ResourceReadySignal().Connect(&OnResourceReadySignal);
1336 application.GetScene().Add(imageView);
1339 // Dont wait for loading. All border use cached texture.
1341 DALI_TEST_EQUALS(gResourceReadySignalCounter, expectResourceReadySignalCounter, TEST_LOCATION);
1347 int UtcDaliNPatchVisualAuxiliaryImage01(void)
1349 ToolkitTestApplication application;
1350 tet_infoline("NPatchVisual with aux image");
1352 VisualFactory factory = VisualFactory::Get();
1353 Property::Map properties;
1354 Property::Map shader;
1356 Property::Map transformMap;
1357 transformMap["size"] = Vector2(0.5f, 0.5f);
1358 transformMap["offset"] = Vector2(20.0f, 0.0f);
1359 transformMap["offsetPolicy"] = Vector2(Visual::Transform::Policy::ABSOLUTE, Visual::Transform::Policy::ABSOLUTE);
1360 transformMap["anchorPoint"] = Align::CENTER;
1361 transformMap["origin"] = Align::CENTER;
1362 properties[Visual::Property::TRANSFORM] = transformMap;
1364 properties[Visual::Property::TYPE] = Visual::IMAGE;
1365 properties[Visual::Property::MIX_COLOR] = Color::BLUE;
1366 properties[Visual::Property::SHADER] = shader;
1367 properties[ImageVisual::Property::URL] = TEST_9_PATCH_FILE_NAME;
1368 properties[DevelImageVisual::Property::AUXILIARY_IMAGE] = TEST_AUX_IMAGE;
1369 properties[DevelImageVisual::Property::AUXILIARY_IMAGE_ALPHA] = 0.9f;
1371 Visual::Base visual = factory.CreateVisual(properties);
1373 // trigger creation through setting on stage
1374 DummyControl dummy = DummyControl::New(true);
1375 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummy.GetImplementation());
1376 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1377 dummyImpl.SetLayout(DummyControl::Property::TEST_VISUAL, transformMap);
1378 dummy.SetResizePolicy(ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS);
1379 dummy.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
1380 application.GetScene().Add(dummy);
1382 application.SendNotification();
1383 application.Render();
1385 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION);
1387 application.SendNotification();
1388 application.Render();
1390 Renderer renderer = dummy.GetRendererAt(0);
1391 auto textures = renderer.GetTextures();
1392 DALI_TEST_EQUALS(textures.GetTextureCount(), 2, TEST_LOCATION);
1393 UnparentAndReset(dummy);
1398 int UtcDaliNPatchVisualAuxiliaryImage02(void)
1400 ToolkitTestApplication application;
1401 tet_infoline("Multiple NPatchVisual with aux image coincidentally");
1403 const Property::Value NPATCH_TEST{
1404 {ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME},
1405 {DevelImageVisual::Property::AUXILIARY_IMAGE, TEST_AUX_IMAGE}};
1407 ImageView imageView1 = ImageView::New();
1408 imageView1[ImageView::Property::IMAGE] = NPATCH_TEST;
1409 application.GetScene().Add(imageView1);
1411 ImageView imageView2 = ImageView::New();
1412 imageView2[ImageView::Property::IMAGE] = NPATCH_TEST;
1413 application.GetScene().Add(imageView2);
1415 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION);
1417 application.SendNotification();
1418 application.Render();
1420 Renderer renderer1 = imageView1.GetRendererAt(0);
1421 auto textureSet1 = renderer1.GetTextures();
1423 Renderer renderer2 = imageView2.GetRendererAt(0);
1424 auto textureSet2 = renderer2.GetTextures();
1425 DALI_TEST_EQUALS(textureSet1 != textureSet2, true, TEST_LOCATION);
1430 int UtcDaliVisualFactoryGetNPatchVisualN1(void)
1432 //This should still load but display an error image
1434 ToolkitTestApplication application;
1435 tet_infoline("UtcDaliVisualFactoryGetNPatchVisualN: Request n-patch visual with an invalid image url");
1437 VisualFactory factory = VisualFactory::Get();
1438 DALI_TEST_CHECK(factory);
1440 Visual::Base visual = factory.CreateVisual("ERROR.9.jpg", ImageDimensions());
1441 DALI_TEST_CHECK(visual);
1443 TestGlAbstraction& gl = application.GetGlAbstraction();
1444 TraceCallStack& textureTrace = gl.GetTextureTrace();
1445 textureTrace.Enable(true);
1448 DummyControl actor = DummyControl::New(true);
1449 TestVisualAsynchronousRender(application, actor, visual);
1451 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1452 UnparentAndReset(actor);
1458 int UtcDaliVisualFactoryGetNPatchVisualN2(void)
1460 //This should still load but display an error image
1462 ToolkitTestApplication application;
1463 tet_infoline("UtcDaliVisualFactoryGetNPatchVisualN: Request n-patch visual with an invalid URL");
1465 VisualFactory factory = VisualFactory::Get();
1466 DALI_TEST_CHECK(factory);
1468 Property::Map propertyMap;
1469 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1470 propertyMap.Insert(ImageVisual::Property::URL, "ERROR.9.jpg");
1472 Visual::Base visual = factory.CreateVisual(propertyMap);
1473 DALI_TEST_CHECK(visual);
1475 TestGlAbstraction& gl = application.GetGlAbstraction();
1476 TraceCallStack& textureTrace = gl.GetTextureTrace();
1477 textureTrace.Enable(true);
1478 TraceCallStack& drawTrace = gl.GetDrawTrace();
1479 drawTrace.Enable(true);
1481 DummyControl actor = DummyControl::New(true);
1482 TestVisualAsynchronousRender(application, actor, visual);
1484 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1489 int UtcDaliVisualFactoryGetNPatchVisualN3(void)
1491 // Passing in an invalid visual type so we should not get a visual
1493 ToolkitTestApplication application;
1494 tet_infoline("UtcDaliVisualFactoryGetNPatchVisualN: Request n-patch visual with an invalid visual type");
1496 VisualFactory factory = VisualFactory::Get();
1497 DALI_TEST_CHECK(factory);
1499 Property::Map propertyMap;
1500 propertyMap.Insert(Toolkit::Visual::Property::TYPE, 111);
1501 propertyMap.Insert(ImageVisual::Property::URL, "ERROR.9.jpg");
1503 Visual::Base visual = factory.CreateVisual(propertyMap);
1504 DALI_TEST_CHECK(!visual);
1509 int UtcDaliVisualFactoryGetSvgVisual(void)
1511 ToolkitTestApplication application;
1512 tet_infoline("UtcDaliVisualFactoryGetSvgVisual: Request svg visual with a svg url");
1514 VisualFactory factory = VisualFactory::Get();
1515 Visual::Base visual = factory.CreateVisual(TEST_SVG_FILE_NAME, ImageDimensions());
1516 DALI_TEST_CHECK(visual);
1518 TestGlAbstraction& gl = application.GetGlAbstraction();
1519 TraceCallStack& textureTrace = gl.GetTextureTrace();
1520 textureTrace.Enable(true);
1522 DummyControl actor = DummyControl::New(true);
1523 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1524 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1525 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1526 application.GetScene().Add(actor);
1527 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
1529 // Either application.SendNotification() or the trigger can now complete the task.
1530 application.SendNotification();
1531 application.Render();
1533 // Wait for loading & rasterization
1534 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION);
1536 // renderer is added to actor
1537 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
1539 // waiting for the resource uploading
1540 application.SendNotification();
1541 application.Render();
1543 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1548 int UtcDaliVisualFactoryGetSvgVisualLarge(void)
1550 ToolkitTestApplication application;
1551 tet_infoline("UtcDaliVisualFactoryGetSvgVisual: Request svg visual with a svg url");
1553 VisualFactory factory = VisualFactory::Get();
1554 Visual::Base visual = factory.CreateVisual(TEST_SVG_FILE_NAME, ImageDimensions(2000, 2000));
1555 DALI_TEST_CHECK(visual);
1557 TestGlAbstraction& gl = application.GetGlAbstraction();
1558 TraceCallStack& textureTrace = gl.GetTextureTrace();
1559 textureTrace.Enable(true);
1561 DummyControl actor = DummyControl::New(true);
1562 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1563 actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); // Only rasterizes when it knows control size.
1564 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1565 application.GetScene().Add(actor);
1567 // Either application.SendNotification() or the trigger can now complete the task.
1568 application.SendNotification();
1569 application.Render();
1571 // Wait for loading & rasterization
1572 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION);
1574 // renderer is added to actor
1575 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
1577 // waiting for the resource uploading
1578 application.SendNotification();
1579 application.Render();
1581 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1586 int UtcDaliVisualFactoryGetSvgVisualAtlas(void)
1588 ToolkitTestApplication application;
1589 tet_infoline("UtcDaliVisualFactoryGetSvgVisual: Request svg visual with enabled atlas");
1591 VisualFactory factory = VisualFactory::Get();
1593 Property::Map propertyMap;
1594 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::SVG);
1595 propertyMap.Insert(ImageVisual::Property::URL, TEST_SVG_FILE_NAME);
1596 propertyMap.Insert(ImageVisual::Property::ATLASING, true);
1598 Visual::Base visual = factory.CreateVisual(propertyMap);
1599 DALI_TEST_CHECK(visual);
1601 TestGlAbstraction& gl = application.GetGlAbstraction();
1602 TraceCallStack& textureTrace = gl.GetTextureTrace();
1603 textureTrace.Enable(true);
1605 DummyControl actor = DummyControl::New(true);
1606 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1607 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1608 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1609 application.GetScene().Add(actor);
1610 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
1612 // Either application.SendNotification() or the trigger can now complete the task.
1613 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
1614 application.SendNotification();
1615 application.Render();
1617 // Wait for loading & rasterization
1618 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION);
1620 // renderer is added to actor
1621 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
1623 // waiting for the resource uploading
1624 application.SendNotification();
1625 application.Render();
1627 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1632 //Creates a mesh visual from the given propertyMap and tries to load it on stage in the given application.
1633 //This is expected to succeed, which will then pass the test.
1634 void MeshVisualLoadsCorrectlyTest(Property::Map& propertyMap, ToolkitTestApplication& application)
1636 VisualFactory factory = VisualFactory::Get();
1637 DALI_TEST_CHECK(factory);
1639 //Create a mesh visual.
1640 Visual::Base visual = factory.CreateVisual(propertyMap);
1641 DALI_TEST_CHECK(visual);
1643 //Create an actor on stage to house the visual.
1644 DummyControl actor = DummyControl::New(true);
1645 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1646 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1647 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1648 application.GetScene().Add(actor);
1649 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
1651 //Ensure set on stage.
1652 DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION);
1654 //Attempt to render to queue resource load requests.
1655 application.SendNotification();
1656 application.Render(0);
1658 //Render again to upload the now-loaded textures.
1659 application.SendNotification();
1660 application.Render(0);
1662 Matrix testScaleMatrix;
1663 testScaleMatrix.SetIdentityAndScale(Vector3(1.0, -1.0, 1.0));
1664 Matrix actualScaleMatrix;
1666 //Test to see if the object has been successfully loaded.
1667 DALI_TEST_CHECK(application.GetGlAbstraction().GetUniformValue<Matrix>("uObjectMatrix", actualScaleMatrix));
1668 DALI_TEST_EQUALS(actualScaleMatrix, testScaleMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1670 //Finish by setting off stage, and ensuring this was successful.
1672 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1675 //Creates a mesh visual from the given propertyMap and tries to load it on stage in the given application.
1676 //This is expected to fail, which will then pass the test.
1677 void MeshVisualDoesNotLoadCorrectlyTest(Property::Map& propertyMap, ToolkitTestApplication& application)
1679 VisualFactory factory = VisualFactory::Get();
1680 DALI_TEST_CHECK(factory);
1682 //Create a mesh visual.
1683 Visual::Base visual = factory.CreateVisual(propertyMap);
1684 DALI_TEST_CHECK(visual);
1686 //Create an actor on stage to house the visual.
1687 DummyControl actor = DummyControl::New(true);
1688 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1689 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1690 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1691 application.GetScene().Add(actor);
1692 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
1694 //Ensure set on stage.
1695 DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION);
1697 //Attempt to render to queue resource load requests.
1698 application.SendNotification();
1699 application.Render(0);
1701 //Render again to upload the now-loaded textures.
1702 application.SendNotification();
1703 application.Render(0);
1705 //Test to see if the object has not been loaded, as expected.
1707 DALI_TEST_CHECK(!application.GetGlAbstraction().GetUniformValue<Matrix>("uObjectMatrix", scaleMatrix));
1709 //Finish by setting off stage, and ensuring this was successful.
1711 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1714 //Test if mesh loads correctly when supplied with only the bare minimum requirements, an object file.
1715 int UtcDaliVisualFactoryGetMeshVisual1(void)
1717 //Set up test application first, so everything else can be handled.
1718 ToolkitTestApplication application;
1720 tet_infoline("UtcDaliVisualFactoryGetMeshVisual1: Request mesh visual with a valid object file only");
1722 static std::vector<UniformData> customUniforms =
1724 UniformData("uObjectMatrix", Property::Type::MATRIX),
1727 TestGraphicsController& graphics = application.GetGraphicsController();
1728 graphics.AddCustomUniforms(customUniforms);
1730 //Set up visual properties.
1731 Property::Map propertyMap;
1732 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1733 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1735 //Test to see if mesh loads correctly.
1736 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1741 //Test if mesh loads correctly when supplied with an object file as well as a blank material file and images directory.
1742 int UtcDaliVisualFactoryGetMeshVisual2(void)
1744 //Set up test application first, so everything else can be handled.
1745 ToolkitTestApplication application;
1747 tet_infoline("UtcDaliVisualFactoryGetMeshVisual2: Request mesh visual with blank material file and images directory");
1749 static std::vector<UniformData> customUniforms =
1751 UniformData("uObjectMatrix", Property::Type::MATRIX),
1754 TestGraphicsController& graphics = application.GetGraphicsController();
1755 graphics.AddCustomUniforms(customUniforms);
1757 //Set up visual properties.
1758 Property::Map propertyMap;
1759 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1760 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1761 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, "");
1762 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, "");
1764 //Test to see if mesh loads correctly.
1765 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1770 //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
1771 int UtcDaliVisualFactoryGetMeshVisual3b(void)
1773 //Set up test application first, so everything else can be handled.
1774 ToolkitTestApplication application;
1776 tet_infoline("UtcDaliVisualFactoryGetMeshVisual3: Request mesh visual with all parameters correct");
1778 static std::vector<UniformData> customUniforms =
1780 UniformData("uObjectMatrix", Property::Type::MATRIX),
1783 TestGraphicsController& graphics = application.GetGraphicsController();
1784 graphics.AddCustomUniforms(customUniforms);
1786 //Set up visual properties.
1787 Property::Map propertyMap;
1788 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1789 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1790 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1791 propertyMap.Insert(MeshVisual::Property::USE_MIPMAPPING, Color::GREEN); // Test that wrong property types don't prevent the object load
1792 propertyMap.Insert(MeshVisual::Property::USE_SOFT_NORMALS, 1.0f);
1793 propertyMap.Insert(MeshVisual::Property::LIGHT_POSITION, 1.0f);
1794 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1796 //Test to see if mesh loads correctly.
1797 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1802 //Test if mesh loads correctly when supplied with all main parameters, an object file, a material file and a directory location.
1803 int UtcDaliVisualFactoryGetMeshVisual3(void)
1805 //Set up test application first, so everything else can be handled.
1806 ToolkitTestApplication application;
1808 tet_infoline("UtcDaliVisualFactoryGetMeshVisual3: Request mesh visual with all parameters correct");
1810 static std::vector<UniformData> customUniforms =
1812 UniformData("uObjectMatrix", Property::Type::MATRIX),
1815 TestGraphicsController& graphics = application.GetGraphicsController();
1816 graphics.AddCustomUniforms(customUniforms);
1818 //Set up visual properties.
1819 Property::Map propertyMap;
1820 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1821 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1822 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1823 propertyMap.Insert(MeshVisual::Property::USE_MIPMAPPING, false);
1824 propertyMap.Insert(MeshVisual::Property::USE_SOFT_NORMALS, false);
1825 propertyMap.Insert(MeshVisual::Property::LIGHT_POSITION, Vector3::XAXIS);
1826 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1828 //Test to see if mesh loads correctly.
1829 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1834 //Test if mesh visual can load a correctly supplied mesh without a normal map or gloss map in the material file.
1835 int UtcDaliVisualFactoryGetMeshVisual4(void)
1837 //Set up test application first, so everything else can be handled.
1838 ToolkitTestApplication application;
1840 tet_infoline("UtcDaliVisualFactoryGetMeshVisual4: Request mesh visual with diffuse texture but not normal or gloss.");
1842 static std::vector<UniformData> customUniforms =
1844 UniformData("uObjectMatrix", Property::Type::MATRIX),
1847 TestGraphicsController& graphics = application.GetGraphicsController();
1848 graphics.AddCustomUniforms(customUniforms);
1850 //Set up visual properties.
1851 Property::Map propertyMap;
1852 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1853 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1854 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_SIMPLE_MTL_FILE_NAME);
1855 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1857 //Test to see if mesh loads correctly.
1858 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1863 //Test if mesh visual can load when made to use diffuse textures only.
1864 int UtcDaliVisualFactoryGetMeshVisual5(void)
1866 //Set up test application first, so everything else can be handled.
1867 ToolkitTestApplication application;
1869 tet_infoline("UtcDaliVisualFactoryGetMeshVisual5: Request mesh visual and make it only use diffuse textures.");
1871 static std::vector<UniformData> customUniforms =
1873 UniformData("uObjectMatrix", Property::Type::MATRIX),
1876 TestGraphicsController& graphics = application.GetGraphicsController();
1877 graphics.AddCustomUniforms(customUniforms);
1879 //Set up visual properties.
1880 Property::Map propertyMap;
1881 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1882 propertyMap.Insert("objectUrl", TEST_OBJ_FILE_NAME);
1883 propertyMap.Insert("materialUrl", TEST_MTL_FILE_NAME);
1884 propertyMap.Insert("texturesPath", TEST_RESOURCE_DIR "/");
1885 propertyMap.Insert("useMipmapping", false);
1886 propertyMap.Insert("useSoftNormals", false);
1887 propertyMap.Insert("lightPosition", Vector3::ZAXIS);
1888 propertyMap.Insert("shadingMode", MeshVisual::ShadingMode::TEXTURED_WITH_SPECULAR_LIGHTING);
1890 //Test to see if mesh loads correctly.
1891 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1896 //Test if mesh visual can load when made to not use the supplied textures.
1897 int UtcDaliVisualFactoryGetMeshVisual6(void)
1899 //Set up test application first, so everything else can be handled.
1900 ToolkitTestApplication application;
1902 tet_infoline("UtcDaliVisualFactoryGetMeshVisual6: Request mesh visual and make it not use any textures.");
1904 static std::vector<UniformData> customUniforms =
1906 UniformData("uObjectMatrix", Property::Type::MATRIX),
1909 TestGraphicsController& graphics = application.GetGraphicsController();
1910 graphics.AddCustomUniforms(customUniforms);
1912 //Set up visual properties.
1913 Property::Map propertyMap;
1914 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1915 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1916 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1917 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1918 propertyMap.Insert(MeshVisual::Property::SHADING_MODE, MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING);
1920 //Test to see if mesh loads correctly.
1921 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1925 //Test if mesh visual loads correctly when light position is manually set.
1926 int UtcDaliVisualFactoryGetMeshVisual7(void)
1928 //Set up test application first, so everything else can be handled.
1929 ToolkitTestApplication application;
1931 tet_infoline("UtcDaliVisualFactoryGetMeshVisual7: Request mesh visual with custom light position.");
1933 static std::vector<UniformData> customUniforms =
1935 UniformData("uObjectMatrix", Property::Type::MATRIX),
1938 TestGraphicsController& graphics = application.GetGraphicsController();
1939 graphics.AddCustomUniforms(customUniforms);
1941 //Set up visual properties.
1942 Property::Map propertyMap;
1943 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1944 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1945 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1946 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1947 propertyMap.Insert(MeshVisual::Property::LIGHT_POSITION, Vector3(0.0, 1.0, 2.0));
1949 //Test to see if mesh loads correctly.
1950 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1955 //Test if mesh visual loads correctly when supplied an object file without face normals or texture points.
1956 //Note that this notably tests object loader functionality.
1957 int UtcDaliVisualFactoryGetMeshVisual8(void)
1959 //Set up test application first, so everything else can be handled.
1960 ToolkitTestApplication application;
1962 tet_infoline("UtcDaliVisualFactoryGetMeshVisual5: Request mesh visual with normal-less object file.");
1964 static std::vector<UniformData> customUniforms =
1966 UniformData("uObjectMatrix", Property::Type::MATRIX),
1969 TestGraphicsController& graphics = application.GetGraphicsController();
1970 graphics.AddCustomUniforms(customUniforms);
1972 //Set up visual properties.
1973 Property::Map propertyMap;
1974 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1975 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_SIMPLE_OBJ_FILE_NAME);
1976 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1977 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1979 //Test to see if mesh loads correctly.
1980 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1985 //Test if mesh visual handles the case of lacking an object file.
1986 int UtcDaliVisualFactoryGetMeshVisualN1(void)
1988 //Set up test application first, so everything else can be handled.
1989 ToolkitTestApplication application;
1991 tet_infoline("UtcDaliVisualFactoryGetMeshVisualN1: Request mesh visual without object file");
1993 //Set up visual properties.
1994 Property::Map propertyMap;
1995 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1996 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1997 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1999 //Test to see if mesh doesn't load with these properties, as expected.
2000 MeshVisualDoesNotLoadCorrectlyTest(propertyMap, application);
2005 //Test if mesh visual handles the case of being passed invalid material and images urls.
2006 int UtcDaliVisualFactoryGetMeshVisualN2(void)
2008 //Set up test application first, so everything else can be handled.
2009 ToolkitTestApplication application;
2011 tet_infoline("UtcDaliVisualFactoryGetMeshVisualN2: Request mesh visual with invalid material and images urls");
2013 //Set up visual properties.
2014 Property::Map propertyMap;
2015 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
2016 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
2017 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, "invalid");
2018 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, "also invalid");
2020 //Test to see if mesh doesn't load with these properties, as expected.
2021 MeshVisualDoesNotLoadCorrectlyTest(propertyMap, application);
2026 //Test if mesh visual handles the case of being passed an invalid object url
2027 int UtcDaliVisualFactoryGetMeshVisualN3(void)
2029 //Set up test application first, so everything else can be handled.
2030 ToolkitTestApplication application;
2031 tet_infoline("UtcDaliVisualFactoryGetMeshVisualN3: Request mesh visual with invalid object url");
2033 //Set up visual properties.
2034 Property::Map propertyMap;
2035 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
2036 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, "invalid");
2037 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
2038 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
2040 //Test to see if mesh doesn't load with these properties, as expected.
2041 MeshVisualDoesNotLoadCorrectlyTest(propertyMap, application);
2046 //Creates a primitive visual with the given property map and tests to see if it correctly loads in the given application.
2047 void TestPrimitiveVisualWithProperties(Property::Map& propertyMap, ToolkitTestApplication& application)
2049 VisualFactory factory = VisualFactory::Get();
2050 DALI_TEST_CHECK(factory);
2052 //Create a primitive visual.
2053 Visual::Base visual = factory.CreateVisual(propertyMap);
2054 DALI_TEST_CHECK(visual);
2056 //Create an actor on stage to house the visual.
2057 DummyControl actor = DummyControl::New(true);
2058 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
2059 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
2061 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
2062 application.GetScene().Add(actor);
2063 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
2065 //Ensure set on stage.
2066 DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION);
2068 //Tell test application to load the visual.
2069 application.SendNotification();
2070 application.Render(0);
2072 Matrix testScaleMatrix;
2073 testScaleMatrix.SetIdentityAndScale(Vector3(1.0, -1.0, 1.0));
2074 Matrix actualScaleMatrix;
2076 //Test to see if the object has been successfully loaded.
2077 DALI_TEST_CHECK(application.GetGlAbstraction().GetUniformValue<Matrix>("uObjectMatrix", actualScaleMatrix));
2078 DALI_TEST_EQUALS(actualScaleMatrix, testScaleMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION);
2080 //Finish by setting off stage, and ensuring this was successful.
2082 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
2085 //Test if primitive shape loads correctly when supplied with only the bare minimum requirements, the shape to use.
2086 int UtcDaliVisualFactoryGetPrimitiveVisual1(void)
2088 //Set up test application first, so everything else can be handled.
2089 ToolkitTestApplication application;
2091 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual1: Request primitive visual with a shape only");
2093 static std::vector<UniformData> customUniforms =
2095 UniformData("uObjectMatrix", Property::Type::MATRIX),
2098 TestGraphicsController& graphics = application.GetGraphicsController();
2099 graphics.AddCustomUniforms(customUniforms);
2101 //Set up visual properties.
2102 Property::Map propertyMap;
2103 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2104 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE);
2106 //Test to see if shape loads correctly.
2107 TestPrimitiveVisualWithProperties(propertyMap, application);
2112 //Test if primitive shape loads correctly when supplied with all possible parameters
2113 int UtcDaliVisualFactoryGetPrimitiveVisual2(void)
2115 //Set up test application first, so everything else can be handled.
2116 ToolkitTestApplication application;
2118 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual2: Request primitive visual with everything");
2120 static std::vector<UniformData> customUniforms =
2122 UniformData("uObjectMatrix", Property::Type::MATRIX),
2125 TestGraphicsController& graphics = application.GetGraphicsController();
2126 graphics.AddCustomUniforms(customUniforms);
2128 //Set up visual properties.
2129 Property::Map propertyMap;
2130 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2131 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE);
2132 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2133 propertyMap.Insert(PrimitiveVisual::Property::SLICES, 10);
2134 propertyMap.Insert(PrimitiveVisual::Property::STACKS, 20);
2135 propertyMap.Insert(PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f);
2136 propertyMap.Insert(PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f);
2137 propertyMap.Insert(PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f);
2138 propertyMap.Insert(PrimitiveVisual::Property::SCALE_RADIUS, 60.0f);
2139 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_PERCENTAGE, 0.7f);
2140 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_SMOOTHNESS, 0.8f);
2141 propertyMap.Insert(MeshVisual::Property::LIGHT_POSITION, Vector3(0.9, 1.0, 1.1));
2143 //Test to see if shape loads correctly.
2144 TestPrimitiveVisualWithProperties(propertyMap, application);
2149 //Test if primitive shape loads a sphere correctly.
2150 int UtcDaliVisualFactoryGetPrimitiveVisual3(void)
2152 //Set up test application first, so everything else can be handled.
2153 ToolkitTestApplication application;
2155 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual3: Request primitive visual to display a sphere");
2157 static std::vector<UniformData> customUniforms =
2159 UniformData("uObjectMatrix", Property::Type::MATRIX),
2162 TestGraphicsController& graphics = application.GetGraphicsController();
2163 graphics.AddCustomUniforms(customUniforms);
2165 //Set up visual properties.
2166 Property::Map propertyMap;
2167 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2168 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2169 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2170 propertyMap.Insert(PrimitiveVisual::Property::SLICES, 10);
2171 propertyMap.Insert(PrimitiveVisual::Property::STACKS, 20);
2173 //Test to see if shape loads correctly.
2174 TestPrimitiveVisualWithProperties(propertyMap, application);
2179 //Test if primitive shape loads a conic section correctly.
2180 int UtcDaliVisualFactoryGetPrimitiveVisual4(void)
2182 //Set up test application first, so everything else can be handled.
2183 ToolkitTestApplication application;
2185 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual4: Request primitive visual to display a conic section");
2187 static std::vector<UniformData> customUniforms =
2189 UniformData("uObjectMatrix", Property::Type::MATRIX),
2192 TestGraphicsController& graphics = application.GetGraphicsController();
2193 graphics.AddCustomUniforms(customUniforms);
2195 //Set up visual properties.
2196 Property::Map propertyMap;
2197 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2198 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CONICAL_FRUSTUM);
2199 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2200 propertyMap.Insert(PrimitiveVisual::Property::SLICES, 10);
2201 propertyMap.Insert(PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f);
2202 propertyMap.Insert(PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f);
2203 propertyMap.Insert(PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f);
2205 //Test to see if shape loads correctly.
2206 TestPrimitiveVisualWithProperties(propertyMap, application);
2211 //Test if primitive shape loads a bevelled cube correctly.
2212 int UtcDaliVisualFactoryGetPrimitiveVisual5(void)
2214 //Set up test application first, so everything else can be handled.
2215 ToolkitTestApplication application;
2217 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual5: Request primitive visual to display a bevelled cube");
2219 static std::vector<UniformData> customUniforms =
2221 UniformData("uObjectMatrix", Property::Type::MATRIX),
2224 TestGraphicsController& graphics = application.GetGraphicsController();
2225 graphics.AddCustomUniforms(customUniforms);
2227 //Set up visual properties.
2228 Property::Map propertyMap;
2229 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2230 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::BEVELLED_CUBE);
2231 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2232 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_PERCENTAGE, 0.7f);
2234 //Test to see if shape loads correctly.
2235 TestPrimitiveVisualWithProperties(propertyMap, application);
2240 //Test if primitive shape loads an octahedron correctly.
2241 int UtcDaliVisualFactoryGetPrimitiveVisual6(void)
2243 //Set up test application first, so everything else can be handled.
2244 ToolkitTestApplication application;
2246 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual6: Request primitive visual to display an octahedron");
2248 static std::vector<UniformData> customUniforms =
2250 UniformData("uObjectMatrix", Property::Type::MATRIX),
2253 TestGraphicsController& graphics = application.GetGraphicsController();
2254 graphics.AddCustomUniforms(customUniforms);
2256 //Set up visual properties.
2257 Property::Map propertyMap;
2258 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2259 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::OCTAHEDRON);
2260 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2262 //Test to see if shape loads correctly.
2263 TestPrimitiveVisualWithProperties(propertyMap, application);
2268 //Test if primitive shape loads a cone correctly.
2269 int UtcDaliVisualFactoryGetPrimitiveVisual7(void)
2271 //Set up test application first, so everything else can be handled.
2272 ToolkitTestApplication application;
2274 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual7: Request primitive visual to display a cone");
2276 static std::vector<UniformData> customUniforms =
2278 UniformData("uObjectMatrix", Property::Type::MATRIX),
2281 TestGraphicsController& graphics = application.GetGraphicsController();
2282 graphics.AddCustomUniforms(customUniforms);
2284 //Set up visual properties.
2285 Property::Map propertyMap;
2286 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2287 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CONE);
2288 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2289 propertyMap.Insert(PrimitiveVisual::Property::SLICES, 10);
2290 propertyMap.Insert(PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f);
2291 propertyMap.Insert(PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f);
2293 //Test to see if shape loads correctly.
2294 TestPrimitiveVisualWithProperties(propertyMap, application);
2299 //Test if primitive shape loads correctly when light position is manually set.
2300 int UtcDaliVisualFactoryGetPrimitiveVisual8(void)
2302 //Set up test application first, so everything else can be handled.
2303 ToolkitTestApplication application;
2305 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual8: Request primitive visual with set light position");
2307 static std::vector<UniformData> customUniforms =
2309 UniformData("uObjectMatrix", Property::Type::MATRIX),
2312 TestGraphicsController& graphics = application.GetGraphicsController();
2313 graphics.AddCustomUniforms(customUniforms);
2315 //Set up visual properties.
2316 Property::Map propertyMap;
2317 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2318 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2319 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2320 propertyMap.Insert(MeshVisual::Property::LIGHT_POSITION, Vector3(0.0, 1.0, 2.0));
2322 //Test to see if shape loads correctly.
2323 TestPrimitiveVisualWithProperties(propertyMap, application);
2328 //Test if primitive shape loads correctly when told to use too many slices.
2329 int UtcDaliVisualFactoryGetPrimitiveVisual9(void)
2331 //Set up test application first, so everything else can be handled.
2332 ToolkitTestApplication application;
2334 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual9: Request primitive visual with above-cap slices.");
2336 static std::vector<UniformData> customUniforms =
2338 UniformData("uObjectMatrix", Property::Type::MATRIX),
2341 TestGraphicsController& graphics = application.GetGraphicsController();
2342 graphics.AddCustomUniforms(customUniforms);
2344 //Set up visual properties.
2345 Property::Map propertyMap;
2346 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2347 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2348 propertyMap.Insert(PrimitiveVisual::Property::SLICES, Property::Value(1000000));
2350 //Test to see if shape loads correctly.
2351 TestPrimitiveVisualWithProperties(propertyMap, application);
2356 //Test if primitive shape loads correctly when told to use too few slices. (2 slices or less.)
2357 int UtcDaliVisualFactoryGetPrimitiveVisual10(void)
2359 //Set up test application first, so everything else can be handled.
2360 ToolkitTestApplication application;
2362 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual10: Request primitive visual with too few slices.");
2364 static std::vector<UniformData> customUniforms =
2366 UniformData("uObjectMatrix", Property::Type::MATRIX),
2369 TestGraphicsController& graphics = application.GetGraphicsController();
2370 graphics.AddCustomUniforms(customUniforms);
2372 //Set up visual properties.
2373 Property::Map propertyMap;
2374 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2375 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2376 propertyMap.Insert(PrimitiveVisual::Property::SLICES, Property::Value(2));
2378 //Test to see if shape loads correctly.
2379 TestPrimitiveVisualWithProperties(propertyMap, application);
2384 //Test if primitive shape loads correctly when told to use too many stacks.
2385 int UtcDaliVisualFactoryGetPrimitiveVisual11(void)
2387 //Set up test application first, so everything else can be handled.
2388 ToolkitTestApplication application;
2390 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual11: Request primitive visual with too many stacks.");
2392 static std::vector<UniformData> customUniforms =
2394 UniformData("uObjectMatrix", Property::Type::MATRIX),
2397 TestGraphicsController& graphics = application.GetGraphicsController();
2398 graphics.AddCustomUniforms(customUniforms);
2400 //Set up visual properties.
2401 Property::Map propertyMap;
2402 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2403 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2404 propertyMap.Insert(PrimitiveVisual::Property::STACKS, Property::Value(1000000));
2406 //Test to see if shape loads correctly.
2407 TestPrimitiveVisualWithProperties(propertyMap, application);
2412 //Test if primitive shape loads correctly when told to use too few stacks. (1 stack or less.)
2413 int UtcDaliVisualFactoryGetPrimitiveVisual12(void)
2415 //Set up test application first, so everything else can be handled.
2416 ToolkitTestApplication application;
2418 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual12: Request primitive visual with too few stacks.");
2420 static std::vector<UniformData> customUniforms =
2422 UniformData("uObjectMatrix", Property::Type::MATRIX),
2425 TestGraphicsController& graphics = application.GetGraphicsController();
2426 graphics.AddCustomUniforms(customUniforms);
2428 //Set up visual properties.
2429 Property::Map propertyMap;
2430 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2431 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2432 propertyMap.Insert(PrimitiveVisual::Property::STACKS, Property::Value(1));
2434 //Test to see if shape loads correctly.
2435 TestPrimitiveVisualWithProperties(propertyMap, application);
2440 //Test if primitive shape loads correctly when told to use invalid (zero or negative) dimensions.
2441 int UtcDaliVisualFactoryGetPrimitiveVisual13(void)
2443 //Set up test application first, so everything else can be handled.
2444 ToolkitTestApplication application;
2446 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual13: Request primitive visual with invalid scale dimensions.");
2448 static std::vector<UniformData> customUniforms =
2450 UniformData("uObjectMatrix", Property::Type::MATRIX),
2453 TestGraphicsController& graphics = application.GetGraphicsController();
2454 graphics.AddCustomUniforms(customUniforms);
2456 //Set up visual properties.
2457 Property::Map propertyMap;
2458 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2459 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2460 propertyMap.Insert(PrimitiveVisual::Property::SCALE_DIMENSIONS, Vector3::ZERO);
2462 //Test to see if shape loads correctly.
2463 TestPrimitiveVisualWithProperties(propertyMap, application);
2468 //Test if primitive shape loads correctly when told to use too low a bevel percentage.
2469 int UtcDaliVisualFactoryGetPrimitiveVisual14(void)
2471 //Set up test application first, so everything else can be handled.
2472 ToolkitTestApplication application;
2474 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual14: Request primitive visual with too low a bevel percentage.");
2476 static std::vector<UniformData> customUniforms =
2478 UniformData("uObjectMatrix", Property::Type::MATRIX),
2481 TestGraphicsController& graphics = application.GetGraphicsController();
2482 graphics.AddCustomUniforms(customUniforms);
2484 //Set up visual properties.
2485 Property::Map propertyMap;
2486 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2487 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2488 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_PERCENTAGE, Property::Value(-1.0f));
2490 //Test to see if shape loads correctly.
2491 TestPrimitiveVisualWithProperties(propertyMap, application);
2496 //Test if primitive shape loads correctly when told to use too high a bevel percentage.
2497 int UtcDaliVisualFactoryGetPrimitiveVisual15(void)
2499 //Set up test application first, so everything else can be handled.
2500 ToolkitTestApplication application;
2502 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual15: Request primitive visual with too high a bevel percentage.");
2504 static std::vector<UniformData> customUniforms =
2506 UniformData("uObjectMatrix", Property::Type::MATRIX),
2509 TestGraphicsController& graphics = application.GetGraphicsController();
2510 graphics.AddCustomUniforms(customUniforms);
2512 //Set up visual properties.
2513 Property::Map propertyMap;
2514 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2515 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2516 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_PERCENTAGE, Property::Value(2.0f));
2518 //Test to see if shape loads correctly.
2519 TestPrimitiveVisualWithProperties(propertyMap, application);
2524 //Test if primitive shape loads correctly when told to use too low a bevel smoothness.
2525 int UtcDaliVisualFactoryGetPrimitiveVisual16(void)
2527 //Set up test application first, so everything else can be handled.
2528 ToolkitTestApplication application;
2530 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual16: Request primitive visual with too low a bevel smoothness.");
2532 static std::vector<UniformData> customUniforms =
2534 UniformData("uObjectMatrix", Property::Type::MATRIX),
2537 TestGraphicsController& graphics = application.GetGraphicsController();
2538 graphics.AddCustomUniforms(customUniforms);
2540 //Set up visual properties.
2541 Property::Map propertyMap;
2542 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2543 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2544 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_SMOOTHNESS, Property::Value(-1.0f));
2546 //Test to see if shape loads correctly.
2547 TestPrimitiveVisualWithProperties(propertyMap, application);
2552 //Test if primitive shape loads correctly when told to use too high a bevel smoothness.
2553 int UtcDaliVisualFactoryGetPrimitiveVisual17(void)
2555 //Set up test application first, so everything else can be handled.
2556 ToolkitTestApplication application;
2558 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual17: Request primitive visual with too high a bevel smoothness.");
2560 static std::vector<UniformData> customUniforms =
2562 UniformData("uObjectMatrix", Property::Type::MATRIX),
2565 TestGraphicsController& graphics = application.GetGraphicsController();
2566 graphics.AddCustomUniforms(customUniforms);
2568 //Set up visual properties.
2569 Property::Map propertyMap;
2570 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2571 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2572 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_SMOOTHNESS, Property::Value(2.0f));
2574 //Test to see if shape loads correctly.
2575 TestPrimitiveVisualWithProperties(propertyMap, application);
2580 //Test if primitive shape loads a conic section correctly.
2581 int UtcDaliVisualFactoryGetPrimitiveVisual18(void)
2583 //Set up test application first, so everything else can be handled.
2584 ToolkitTestApplication application;
2586 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual18: Request primitive visual to display a conic section");
2588 static std::vector<UniformData> customUniforms =
2590 UniformData("uObjectMatrix", Property::Type::MATRIX),
2593 TestGraphicsController& graphics = application.GetGraphicsController();
2594 graphics.AddCustomUniforms(customUniforms);
2596 //Set up visual properties.
2597 Property::Map propertyMap;
2598 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2599 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CONICAL_FRUSTUM);
2600 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2601 propertyMap.Insert(PrimitiveVisual::Property::SLICES, 10);
2602 propertyMap.Insert(PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f);
2603 propertyMap.Insert(PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f);
2604 propertyMap.Insert(PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f);
2606 //Test to see if shape loads correctly.
2607 TestPrimitiveVisualWithProperties(propertyMap, application);
2612 //Test if primitive shape visual handles the case of not being passed a specific shape to use.
2613 int UtcDaliVisualFactoryGetPrimitiveVisualN1(void)
2615 //Set up test application first, so everything else can be handled.
2616 ToolkitTestApplication application;
2618 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisualN1: Request primitive visual without shape");
2620 static std::vector<UniformData> customUniforms =
2622 UniformData("uObjectMatrix", Property::Type::MATRIX),
2625 TestGraphicsController& graphics = application.GetGraphicsController();
2626 graphics.AddCustomUniforms(customUniforms);
2628 //Set up visual properties, without supplying shape.
2629 Property::Map propertyMap;
2630 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2632 //Test to see if shape loads regardless of missing input.
2633 TestPrimitiveVisualWithProperties(propertyMap, application);
2638 int UtcDaliVisualFactoryGetAnimatedImageVisual1(void)
2640 ToolkitTestApplication application;
2641 tet_infoline("UtcDaliVisualFactoryGetAnimatedImageVisual1: Request animated image visual with a gif url");
2643 TestGlAbstraction& gl = application.GetGlAbstraction();
2644 TraceCallStack& textureTrace = gl.GetTextureTrace();
2645 textureTrace.Enable(true);
2647 VisualFactory factory = VisualFactory::Get();
2648 Visual::Base visual = factory.CreateVisual(TEST_GIF_FILE_NAME, ImageDimensions());
2649 DALI_TEST_CHECK(visual);
2651 DummyControl actor = DummyControl::New(true);
2652 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
2653 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
2654 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
2655 application.GetScene().Add(actor);
2657 application.SendNotification();
2658 application.Render();
2660 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION);
2662 application.SendNotification();
2663 application.Render();
2665 // renderer is added to actor
2666 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
2667 Renderer renderer = actor.GetRendererAt(0u);
2668 DALI_TEST_CHECK(renderer);
2670 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
2671 textureTrace.Reset();
2673 // Force the timer used by the animatedImageVisual to tick,
2674 Dali::Timer timer = Timer::New(0);
2675 timer.MockEmitSignal();
2676 application.SendNotification();
2677 application.Render();
2679 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
2681 application.SendNotification();
2682 application.Render();
2683 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
2684 textureTrace.Reset();
2686 // Force the timer used by the animatedImageVisual to tick,
2687 timer.MockEmitSignal();
2688 application.SendNotification();
2689 application.Render();
2691 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
2693 application.SendNotification();
2694 application.Render();
2695 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
2696 textureTrace.Reset();
2698 // Force the timer used by the animatedImageVisual to tick,
2699 timer.MockEmitSignal();
2700 application.SendNotification();
2701 application.Render();
2703 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
2705 application.SendNotification();
2706 application.Render();
2707 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
2708 textureTrace.Reset();
2710 // Test SetOffScene().
2712 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
2717 int UtcDaliVisualFactoryGetAnimatedImageVisual2(void)
2719 ToolkitTestApplication application;
2720 tet_infoline("UtcDaliVisualFactoryGetAnimatedImageVisual2: Request animated image visual with a Property::Map, test custom wrap mode and pixel area");
2722 static std::vector<UniformData> customUniforms =
2724 UniformData("pixelArea", Property::Type::VECTOR4),
2725 UniformData("wrapMode", Property::Type::VECTOR2),
2728 TestGraphicsController& graphics = application.GetGraphicsController();
2729 graphics.AddCustomUniforms(customUniforms);
2731 const Vector4 pixelArea(-0.5f, -0.5f, 2.f, 2.f);
2732 Property::Map propertyMap;
2733 propertyMap.Add(Toolkit::Visual::Property::TYPE, Visual::IMAGE)
2734 .Add(ImageVisual::Property::URL, TEST_GIF_FILE_NAME)
2735 .Add(ImageVisual::Property::PIXEL_AREA, pixelArea)
2736 .Add(ImageVisual::Property::WRAP_MODE_U, WrapMode::MIRRORED_REPEAT)
2737 .Add(ImageVisual::Property::WRAP_MODE_V, WrapMode::REPEAT);
2739 Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap);
2740 DALI_TEST_CHECK(visual);
2742 TestGlAbstraction& gl = application.GetGlAbstraction();
2743 TraceCallStack& textureTrace = gl.GetTextureTrace();
2744 textureTrace.Enable(true);
2745 TraceCallStack& texParameterTrace = gl.GetTexParameterTrace();
2746 texParameterTrace.Enable(true);
2748 DummyControl actor = DummyControl::New(true);
2749 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
2750 dummyImpl.RegisterVisual(Control::CONTROL_PROPERTY_END_INDEX + 1, visual);
2751 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
2752 application.GetScene().Add(actor);
2754 application.SendNotification();
2755 application.Render();
2757 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION);
2759 application.SendNotification();
2760 application.Render();
2762 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
2764 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
2766 // For animated image visual, the wrapping is handled manually in shader, so the following gl function should not be called
2767 std::stringstream out;
2768 out << GL_TEXTURE_2D << ", " << GL_TEXTURE_WRAP_S << ", " << GL_MIRRORED_REPEAT;
2769 DALI_TEST_CHECK(!texParameterTrace.FindMethodAndParams("TexParameteri", out.str()));
2771 out << GL_TEXTURE_2D << ", " << GL_TEXTURE_WRAP_T << ", " << GL_REPEAT;
2772 DALI_TEST_CHECK(!texParameterTrace.FindMethodAndParams("TexParameteri", out.str()));
2774 // test the uniforms which used to handle the wrap mode
2775 Renderer renderer = actor.GetRendererAt(0u);
2776 DALI_TEST_CHECK(renderer);
2778 Property::Value pixelAreaValue = renderer.GetProperty(renderer.GetPropertyIndex("pixelArea"));
2779 DALI_TEST_EQUALS(pixelAreaValue.Get<Vector4>(), pixelArea, TEST_LOCATION);
2780 Vector4 pixelAreaUniform;
2781 DALI_TEST_CHECK(gl.GetUniformValue<Vector4>("pixelArea", pixelAreaUniform));
2782 DALI_TEST_EQUALS(pixelArea, pixelAreaUniform, Math::MACHINE_EPSILON_100, TEST_LOCATION);
2784 Property::Value wrapModeValue = renderer.GetProperty(renderer.GetPropertyIndex("wrapMode"));
2785 Vector2 wrapMode(WrapMode::MIRRORED_REPEAT - 1, WrapMode::REPEAT - 1);
2786 DALI_TEST_EQUALS(wrapModeValue.Get<Vector2>(), wrapMode, TEST_LOCATION);
2787 Vector2 wrapModeUniform;
2788 DALI_TEST_CHECK(gl.GetUniformValue<Vector2>("wrapMode", wrapModeUniform));
2789 DALI_TEST_EQUALS(wrapMode, wrapModeUniform, Math::MACHINE_EPSILON_100, TEST_LOCATION);
2792 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);