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);
115 void dali_visual_factory_startup(void)
117 test_return_value = TET_UNDEF;
120 void dali_visual_factory_cleanup(void)
122 test_return_value = TET_PASS;
125 int UtcDaliVisualFactoryGet(void)
127 ToolkitTestApplication application;
128 tet_infoline("UtcDaliVisualFactory");
132 type = TypeRegistry::Get().GetTypeInfo("VisualFactory");
133 DALI_TEST_CHECK(type);
134 BaseHandle handle = type.CreateInstance();
135 DALI_TEST_CHECK(handle);
137 VisualFactory factory;
138 factory = VisualFactory::Get();
139 DALI_TEST_CHECK(factory);
141 VisualFactory newFactory = VisualFactory::Get();
142 DALI_TEST_CHECK(newFactory);
144 // Check that visual factory is a singleton
145 DALI_TEST_CHECK(factory == newFactory);
150 int UtcDaliVisualFactoryCopyAndAssignment(void)
152 ToolkitTestApplication application;
153 tet_infoline("UtcDaliVisualFactoryCopyAndAssignment");
154 VisualFactory factory = VisualFactory::Get();
156 VisualFactory factoryCopy(factory);
157 DALI_TEST_CHECK(factory == factoryCopy);
159 VisualFactory emptyFactory;
160 VisualFactory emptyFactoryCopy(emptyFactory);
161 DALI_TEST_CHECK(emptyFactory == emptyFactoryCopy);
163 VisualFactory factoryEquals;
164 factoryEquals = factory;
165 DALI_TEST_CHECK(factory == factoryEquals);
167 VisualFactory emptyFactoryEquals;
168 emptyFactoryEquals = emptyFactory;
169 DALI_TEST_CHECK(emptyFactory == emptyFactoryEquals);
173 DALI_TEST_CHECK(factory = factoryCopy);
178 int UtcDaliVisualFactoryGetColorVisual1(void)
180 ToolkitTestApplication application;
181 tet_infoline("UtcDaliVisualFactoryGetColorVisual1: Request color visual with a Property::Map");
183 static std::vector<UniformData> customUniforms =
185 UniformData("mixColor", Property::Type::VECTOR3),
188 TestGraphicsController& graphics = application.GetGraphicsController();
189 graphics.AddCustomUniforms(customUniforms);
191 VisualFactory factory = VisualFactory::Get();
192 DALI_TEST_CHECK(factory);
194 Property::Map propertyMap;
195 Vector4 testColor(1.f, 0.5f, 0.3f, 0.2f);
196 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
197 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, testColor);
199 Visual::Base visual = factory.CreateVisual(propertyMap);
200 DALI_TEST_CHECK(visual);
202 DummyControl actor = DummyControl::New(true);
203 TestVisualRender(application, actor, visual);
205 Vector3 actualValue(Vector4::ZERO);
206 Vector4 actualColor(Vector4::ZERO);
207 TestGlAbstraction& gl = application.GetGlAbstraction();
208 DALI_TEST_CHECK(gl.GetUniformValue<Vector3>("mixColor", actualValue));
209 DALI_TEST_CHECK(gl.GetUniformValue<Vector4>("uColor", actualColor));
210 DALI_TEST_EQUALS(actualValue, Vector3(testColor), TEST_LOCATION);
211 DALI_TEST_EQUALS(actualColor.a, testColor.a, TEST_LOCATION);
216 int UtcDaliVisualFactoryGetColorVisual2(void)
218 ToolkitTestApplication application;
219 tet_infoline("UtcDaliVisualFactoryGetColorVisual2: Request color visual with a Vector4");
221 static std::vector<UniformData> customUniforms =
223 UniformData("mixColor", Property::Type::VECTOR3),
226 TestGraphicsController& graphics = application.GetGraphicsController();
227 graphics.AddCustomUniforms(customUniforms);
229 VisualFactory factory = VisualFactory::Get();
230 DALI_TEST_CHECK(factory);
232 Vector4 testColor(1.f, 0.5f, 0.3f, 0.2f);
233 Dali::Property::Map map;
234 map[Toolkit::Visual::Property::TYPE] = Visual::COLOR;
235 map[ColorVisual::Property::MIX_COLOR] = testColor;
236 Visual::Base visual = factory.CreateVisual(map);
237 DALI_TEST_CHECK(visual);
239 DummyControl actor = DummyControl::New(true);
240 TestVisualRender(application, actor, visual);
244 TestGlAbstraction& gl = application.GetGlAbstraction();
245 DALI_TEST_CHECK(gl.GetUniformValue<Vector3>("mixColor", actualValue));
246 DALI_TEST_CHECK(gl.GetUniformValue<Vector4>("uColor", actualColor));
247 DALI_TEST_EQUALS(actualValue, Vector3(testColor), TEST_LOCATION);
248 DALI_TEST_EQUALS(actualColor.a, testColor.a, TEST_LOCATION);
250 application.GetScene().Remove(actor);
251 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
256 int UtcDaliVisualFactoryGetBorderVisual1(void)
258 ToolkitTestApplication application;
259 tet_infoline("UtcDaliVisualFactoryGetBorderVisual1: Request border visual with a Property::Map");
261 static std::vector<UniformData> customUniforms =
263 UniformData("borderColor", Property::Type::VECTOR4),
264 UniformData("borderSize", Property::Type::FLOAT),
267 TestGraphicsController& graphics = application.GetGraphicsController();
268 graphics.AddCustomUniforms(customUniforms);
270 VisualFactory factory = VisualFactory::Get();
271 DALI_TEST_CHECK(factory);
273 Property::Map propertyMap;
274 Vector4 testColor(1.f, 0.5f, 0.3f, 0.2f);
275 float testSize = 5.f;
276 propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER);
277 propertyMap.Insert(BorderVisual::Property::COLOR, testColor);
278 propertyMap.Insert(BorderVisual::Property::SIZE, testSize);
280 Visual::Base visual = factory.CreateVisual(propertyMap);
281 DALI_TEST_CHECK(visual);
283 DummyControl actor = DummyControl::New(true);
284 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
285 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
286 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
287 application.GetScene().Add(actor);
288 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
290 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
291 int blendMode = actor.GetRendererAt(0u).GetProperty<int>(Renderer::Property::BLEND_MODE);
292 DALI_TEST_EQUALS(static_cast<BlendMode::Type>(blendMode), BlendMode::ON, TEST_LOCATION);
294 TestGlAbstraction& gl = application.GetGlAbstraction();
296 application.SendNotification();
297 application.Render(0);
299 Vector4 actualColor(Vector4::ZERO);
300 DALI_TEST_CHECK(gl.GetUniformValue<Vector4>("borderColor", actualColor));
301 DALI_TEST_EQUALS(actualColor, testColor, TEST_LOCATION);
303 float actualSize = 0.f;
304 DALI_TEST_CHECK(gl.GetUniformValue<float>("borderSize", actualSize));
305 DALI_TEST_EQUALS(actualSize, testSize, TEST_LOCATION);
308 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
313 int UtcDaliVisualFactoryGetBorderVisual2(void)
315 ToolkitTestApplication application;
316 tet_infoline("UtcDaliVisualFactoryGetBorderVisual2: Request border visual with a borderSize and a borderColor");
318 static std::vector<UniformData> customUniforms =
320 UniformData("borderColor", Property::Type::VECTOR4),
321 UniformData("borderSize", Property::Type::FLOAT),
324 TestGraphicsController& graphics = application.GetGraphicsController();
325 graphics.AddCustomUniforms(customUniforms);
327 VisualFactory factory = VisualFactory::Get();
328 DALI_TEST_CHECK(factory);
330 Vector4 testColor(1.f, 0.5f, 0.3f, 1.f);
331 float testSize = 5.f;
333 Dali::Property::Map propertyMap;
334 propertyMap[Toolkit::Visual::Property::TYPE] = Visual::BORDER;
335 propertyMap[BorderVisual::Property::COLOR] = testColor;
336 propertyMap[BorderVisual::Property::SIZE] = testSize;
337 Visual::Base visual = factory.CreateVisual(propertyMap);
338 DALI_TEST_CHECK(visual);
340 DummyControl actor = DummyControl::New(true);
341 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
342 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
343 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
344 application.GetScene().Add(actor);
345 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
347 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
349 TestGlAbstraction& gl = application.GetGlAbstraction();
351 application.SendNotification();
352 application.Render(0);
354 int blendMode = actor.GetRendererAt(0u).GetProperty<int>(Renderer::Property::BLEND_MODE);
355 DALI_TEST_EQUALS(static_cast<BlendMode::Type>(blendMode), BlendMode::AUTO, TEST_LOCATION);
357 Vector4 actualColor(Vector4::ZERO);
358 DALI_TEST_CHECK(gl.GetUniformValue<Vector4>("borderColor", actualColor));
359 DALI_TEST_EQUALS(actualColor, testColor, TEST_LOCATION);
361 float actualSize = 0.f;
362 DALI_TEST_CHECK(gl.GetUniformValue<float>("borderSize", actualSize));
363 DALI_TEST_EQUALS(actualSize, testSize, TEST_LOCATION);
367 // enable the anti-aliasing
368 Dali::Property::Map map;
369 map[Toolkit::Visual::Property::TYPE] = Visual::BORDER;
370 map[BorderVisual::Property::COLOR] = testColor;
371 map[BorderVisual::Property::SIZE] = testSize;
372 map[BorderVisual::Property::ANTI_ALIASING] = true;
373 visual = factory.CreateVisual(map);
375 dummyImpl.RegisterVisual(Control::CONTROL_PROPERTY_END_INDEX + 1, visual);
376 application.GetScene().Add(actor);
378 blendMode = actor.GetRendererAt(0u).GetProperty<int>(Renderer::Property::BLEND_MODE);
379 DALI_TEST_EQUALS(static_cast<BlendMode::Type>(blendMode), BlendMode::ON, TEST_LOCATION);
384 int UtcDaliVisualFactoryGetLinearGradientVisual(void)
386 ToolkitTestApplication application;
387 tet_infoline("UtcDaliVisualFactoryGetRadialGradientVisual");
389 static std::vector<UniformData> customUniforms =
391 UniformData("uAlignmentMatrix", Property::Type::MATRIX),
394 TestGraphicsController& graphics = application.GetGraphicsController();
395 graphics.AddCustomUniforms(customUniforms);
397 VisualFactory factory = VisualFactory::Get();
398 DALI_TEST_CHECK(factory);
400 Property::Map propertyMap;
401 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
403 Vector2 start(-1.f, -1.f);
404 Vector2 end(1.f, 1.f);
405 propertyMap.Insert(GradientVisual::Property::START_POSITION, start);
406 propertyMap.Insert(GradientVisual::Property::END_POSITION, end);
407 propertyMap.Insert(GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT);
409 Property::Array stopOffsets;
410 stopOffsets.PushBack(0.2f);
411 stopOffsets.PushBack(0.8f);
412 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, stopOffsets);
414 Property::Array stopColors;
415 stopColors.PushBack(Color::RED);
416 stopColors.PushBack(Color::GREEN);
417 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
419 Visual::Base visual = factory.CreateVisual(propertyMap);
420 DALI_TEST_CHECK(visual);
422 // A lookup texture is generated and pass to shader as sampler
423 DummyControl actor = DummyControl::New(true);
424 TestVisualRender(application, actor, visual);
429 int UtcDaliVisualFactoryGetRadialGradientVisual(void)
431 ToolkitTestApplication application;
432 tet_infoline("UtcDaliVisualFactoryGetRadialGradientVisual");
434 static std::vector<UniformData> customUniforms =
436 UniformData("uAlignmentMatrix", Property::Type::MATRIX3),
439 TestGraphicsController& graphics = application.GetGraphicsController();
440 graphics.AddCustomUniforms(customUniforms);
442 VisualFactory factory = VisualFactory::Get();
443 DALI_TEST_CHECK(factory);
445 Property::Map propertyMap;
446 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
448 Vector2 center(100.f, 100.f);
449 float radius = 100.f;
450 propertyMap.Insert(GradientVisual::Property::UNITS, GradientVisual::Units::USER_SPACE);
451 propertyMap.Insert(GradientVisual::Property::CENTER, center);
452 propertyMap.Insert(GradientVisual::Property::RADIUS, radius);
454 Property::Array stopOffsets;
455 stopOffsets.PushBack(0.0f);
456 stopOffsets.PushBack(1.f);
457 propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, stopOffsets);
459 Property::Array stopColors;
460 stopColors.PushBack(Color::RED);
461 stopColors.PushBack(Color::GREEN);
462 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
464 Visual::Base visual = factory.CreateVisual(propertyMap);
465 DALI_TEST_CHECK(visual);
467 // A lookup texture is generated and pass to shader as sampler
468 DummyControl actor = DummyControl::New(true);
469 TestVisualRender(application, actor, visual);
471 Matrix3 alignMatrix(radius, 0.f, 0.f, 0.f, radius, 0.f, center.x, center.y, 1.f);
472 alignMatrix.Invert();
474 Matrix3 actualValue(Matrix3::IDENTITY);
475 TestGlAbstraction& gl = application.GetGlAbstraction();
476 DALI_TEST_CHECK(gl.GetUniformValue<Matrix3>("uAlignmentMatrix", actualValue));
477 DALI_TEST_EQUALS(actualValue, alignMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION);
482 int UtcDaliVisualFactoryDefaultOffsetsGradientVisual(void)
484 ToolkitTestApplication application;
485 tet_infoline("UtcDaliVisualFactoryGetRadialGradientVisual");
487 VisualFactory factory = VisualFactory::Get();
488 DALI_TEST_CHECK(factory);
490 Property::Map propertyMap;
491 propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT);
493 Vector2 start(-1.f, -1.f);
494 Vector2 end(1.f, 1.f);
495 propertyMap.Insert(GradientVisual::Property::START_POSITION, start);
496 propertyMap.Insert(GradientVisual::Property::END_POSITION, end);
497 propertyMap.Insert(GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT);
499 Property::Array stopColors;
500 stopColors.PushBack(Color::RED);
501 stopColors.PushBack(Color::GREEN);
502 propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors);
504 Visual::Base visual = factory.CreateVisual(propertyMap);
505 DALI_TEST_CHECK(visual);
507 // A lookup texture is generated and pass to shader as sampler
508 DummyControl actor = DummyControl::New(true);
509 TestVisualRender(application, actor, visual);
511 application.GetScene().Remove(actor);
512 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
517 int UtcDaliVisualFactoryGetNPatchVisualSynchronousLoad1(void)
519 ToolkitTestApplication application;
520 tet_infoline("UtcDaliVisualFactoryGetNPatchVisualSynchronousLoad1: Request 9-patch visual with a Property::Map");
522 VisualFactory factory = VisualFactory::Get();
523 DALI_TEST_CHECK(factory);
525 // Get actual size of test image
526 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_9_PATCH_FILE_NAME);
528 Property::Map propertyMap;
529 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
530 propertyMap.Insert(ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME);
531 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
533 tet_infoline("whole grid");
534 Visual::Base visual = factory.CreateVisual(propertyMap);
535 DALI_TEST_CHECK(visual);
537 TestGlAbstraction& gl = application.GetGlAbstraction();
538 TraceCallStack& textureTrace = gl.GetTextureTrace();
539 textureTrace.Enable(true);
541 DummyControl actor = DummyControl::New(true);
542 TestVisualRender(application, actor, visual);
544 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
546 Vector2 naturalSize(0.0f, 0.0f);
547 visual.GetNaturalSize(naturalSize);
548 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
551 propertyMap.Insert(ImageVisual::Property::BORDER_ONLY, true);
553 tet_infoline("border only");
554 Visual::Base visual = factory.CreateVisual(propertyMap);
555 DALI_TEST_CHECK(visual);
557 TestGlAbstraction& gl = application.GetGlAbstraction();
558 TraceCallStack& textureTrace = gl.GetTextureTrace();
559 textureTrace.Enable(true);
561 DummyControl actor = DummyControl::New(true);
562 TestVisualRender(application, actor, visual);
564 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
566 Vector2 naturalSize(0.0f, 0.0f);
567 visual.GetNaturalSize(naturalSize);
568 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
574 int UtcDaliVisualFactoryGetNPatchVisualSynchronousLoad2(void)
576 ToolkitTestApplication application;
577 tet_infoline("UtcDaliVisualFactoryGetNPatchVisualSynchronousLoad2: Request 9-patch visual with a Property::Map including border");
579 VisualFactory factory = VisualFactory::Get();
580 DALI_TEST_CHECK(factory);
582 // Get actual size of test image
583 ImageDimensions imageSize = Dali::GetClosestImageSize(gImage_34_RGBA);
585 Property::Map propertyMap;
586 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
587 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
588 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(2, 2, 2, 2));
589 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
591 tet_infoline("whole grid");
592 Visual::Base visual = factory.CreateVisual(propertyMap);
593 DALI_TEST_CHECK(visual);
595 TestGlAbstraction& gl = application.GetGlAbstraction();
596 TraceCallStack& textureTrace = gl.GetTextureTrace();
597 textureTrace.Enable(true);
599 DummyControl actor = DummyControl::New(true);
600 TestVisualRender(application, actor, visual);
602 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
604 Vector2 naturalSize(0.0f, 0.0f);
605 visual.GetNaturalSize(naturalSize);
606 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
609 propertyMap.Insert(ImageVisual::Property::BORDER_ONLY, true);
611 tet_infoline("border only");
612 Visual::Base visual = factory.CreateVisual(propertyMap);
613 DALI_TEST_CHECK(visual);
615 TestGlAbstraction& gl = application.GetGlAbstraction();
616 TraceCallStack& textureTrace = gl.GetTextureTrace();
617 textureTrace.Enable(true);
619 DummyControl actor = DummyControl::New(true);
620 TestVisualRender(application, actor, visual);
622 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
624 Vector2 naturalSize(0.0f, 0.0f);
625 visual.GetNaturalSize(naturalSize);
626 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
630 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
631 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
632 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(1, 1, 1, 1));
633 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true);
635 tet_infoline("whole grid");
636 Visual::Base visual = factory.CreateVisual(propertyMap);
637 DALI_TEST_CHECK(visual);
639 TestGlAbstraction& gl = application.GetGlAbstraction();
640 TraceCallStack& textureTrace = gl.GetTextureTrace();
641 textureTrace.Enable(true);
643 DummyControl actor = DummyControl::New(true);
644 TestVisualRender(application, actor, visual);
646 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
648 Vector2 naturalSize(0.0f, 0.0f);
649 visual.GetNaturalSize(naturalSize);
650 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
656 int UtcDaliVisualFactoryGetNPatchVisual1(void)
658 ToolkitTestApplication application;
659 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual1: Request 9-patch visual with a Property::Map");
661 VisualFactory factory = VisualFactory::Get();
662 DALI_TEST_CHECK(factory);
664 // Get actual size of test image
665 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_9_PATCH_FILE_NAME);
667 Property::Map propertyMap;
668 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
669 propertyMap.Insert(ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME);
670 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, false);
672 tet_infoline("whole grid");
673 Visual::Base visual = factory.CreateVisual(propertyMap);
674 DALI_TEST_CHECK(visual);
676 Vector2 naturalSize(0.0f, 0.0f);
677 visual.GetNaturalSize(naturalSize);
678 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
680 TestGlAbstraction& gl = application.GetGlAbstraction();
681 TraceCallStack& textureTrace = gl.GetTextureTrace();
682 textureTrace.Enable(true);
684 DummyControl actor = DummyControl::New(true);
685 TestVisualAsynchronousRender(application, actor, visual);
687 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
689 visual.GetNaturalSize(naturalSize);
690 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
693 propertyMap.Insert(ImageVisual::Property::BORDER_ONLY, true);
695 tet_infoline("border only");
696 Visual::Base visual = factory.CreateVisual(propertyMap);
697 DALI_TEST_CHECK(visual);
699 TestGlAbstraction& gl = application.GetGlAbstraction();
700 TraceCallStack& textureTrace = gl.GetTextureTrace();
701 textureTrace.Enable(true);
703 DummyControl actor = DummyControl::New(true);
704 TestVisualRender(application, actor, visual);
706 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
708 Vector2 naturalSize(0.0f, 0.0f);
709 visual.GetNaturalSize(naturalSize);
710 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
716 int UtcDaliVisualFactoryGetNPatchVisual2(void)
718 ToolkitTestApplication application;
719 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual2: Request 9-patch visual with a Property::Map including border");
721 VisualFactory factory = VisualFactory::Get();
722 DALI_TEST_CHECK(factory);
724 // Get actual size of test image
725 ImageDimensions imageSize = Dali::GetClosestImageSize(gImage_34_RGBA);
727 Property::Map propertyMap;
728 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
729 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
730 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(2, 2, 2, 2));
732 tet_infoline("whole grid");
733 Visual::Base visual = factory.CreateVisual(propertyMap);
734 DALI_TEST_CHECK(visual);
736 TestGlAbstraction& gl = application.GetGlAbstraction();
737 TraceCallStack& textureTrace = gl.GetTextureTrace();
738 textureTrace.Enable(true);
740 DummyControl actor = DummyControl::New(true);
741 TestVisualAsynchronousRender(application, actor, visual);
743 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
745 Vector2 naturalSize(0.0f, 0.0f);
746 visual.GetNaturalSize(naturalSize);
747 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
750 propertyMap.Insert(ImageVisual::Property::BORDER_ONLY, true);
752 tet_infoline("border only");
753 Visual::Base visual = factory.CreateVisual(propertyMap);
754 DALI_TEST_CHECK(visual);
756 TestGlAbstraction& gl = application.GetGlAbstraction();
757 TraceCallStack& textureTrace = gl.GetTextureTrace();
758 textureTrace.Enable(true);
760 DummyControl actor = DummyControl::New(true);
761 TestVisualRender(application, actor, visual);
763 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
765 Vector2 naturalSize(0.0f, 0.0f);
766 visual.GetNaturalSize(naturalSize);
767 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
771 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
772 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
773 propertyMap.Insert(ImageVisual::Property::BORDER, Rect<int>(1, 1, 1, 1));
775 tet_infoline("whole grid");
776 Visual::Base visual = factory.CreateVisual(propertyMap);
777 DALI_TEST_CHECK(visual);
779 TestGlAbstraction& gl = application.GetGlAbstraction();
780 TraceCallStack& textureTrace = gl.GetTextureTrace();
781 textureTrace.Enable(true);
783 DummyControl actor = DummyControl::New(true);
784 TestVisualRender(application, actor, visual);
786 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
788 Vector2 naturalSize(0.0f, 0.0f);
789 visual.GetNaturalSize(naturalSize);
790 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
796 int UtcDaliVisualFactoryGetNPatchVisual3(void)
798 ToolkitTestApplication application;
799 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual3: Request n-patch visual with a Property::Map");
801 VisualFactory factory = VisualFactory::Get();
802 DALI_TEST_CHECK(factory);
804 // Get actual size of test image
805 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_NPATCH_FILE_NAME);
807 Property::Map propertyMap;
808 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
809 propertyMap.Insert(ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME);
811 Visual::Base visual = factory.CreateVisual(propertyMap);
812 DALI_TEST_CHECK(visual);
814 TestGlAbstraction& gl = application.GetGlAbstraction();
815 TraceCallStack& textureTrace = gl.GetTextureTrace();
816 textureTrace.Enable(true);
818 DummyControl actor = DummyControl::New(true);
819 TestVisualAsynchronousRender(application, actor, visual);
821 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
823 Vector2 naturalSize(0.0f, 0.0f);
824 visual.GetNaturalSize(naturalSize);
825 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
828 propertyMap.Insert(ImageVisual::Property::BORDER_ONLY, true);
830 tet_infoline("border only");
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);
837 DummyControl actor = DummyControl::New(true);
838 TestVisualRender(application, actor, visual);
840 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
842 Vector2 naturalSize(0.0f, 0.0f);
843 visual.GetNaturalSize(naturalSize);
844 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
846 application.GetScene().Remove(actor);
847 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
853 int UtcDaliVisualFactoryGetNPatchVisual4(void)
855 ToolkitTestApplication application;
856 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual4: Request 9-patch visual with an image url");
858 // Get actual size of test image
859 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_9_PATCH_FILE_NAME);
861 VisualFactory factory = VisualFactory::Get();
862 DALI_TEST_CHECK(factory);
864 Visual::Base visual = factory.CreateVisual(TEST_9_PATCH_FILE_NAME, ImageDimensions());
865 DALI_TEST_CHECK(visual);
867 TestGlAbstraction& gl = application.GetGlAbstraction();
868 TraceCallStack& textureTrace = gl.GetTextureTrace();
869 textureTrace.Enable(true);
870 DummyControl actor = DummyControl::New(true);
871 TestVisualAsynchronousRender(application, actor, visual);
873 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
875 Vector2 naturalSize(0.0f, 0.0f);
876 visual.GetNaturalSize(naturalSize);
877 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
879 textureTrace.Reset();
884 int UtcDaliVisualFactoryGetNPatchVisual5(void)
886 ToolkitTestApplication application;
887 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual5: Request n-patch visual with an image url");
889 // Get actual size of test image
890 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_NPATCH_FILE_NAME);
892 VisualFactory factory = VisualFactory::Get();
893 DALI_TEST_CHECK(factory);
895 Visual::Base visual = factory.CreateVisual(TEST_NPATCH_FILE_NAME, ImageDimensions());
896 DALI_TEST_CHECK(visual);
898 TestGlAbstraction& gl = application.GetGlAbstraction();
899 TraceCallStack& textureTrace = gl.GetTextureTrace();
900 textureTrace.Enable(true);
902 DummyControl actor = DummyControl::New(true);
903 TestVisualAsynchronousRender(application, actor, visual);
905 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
907 Vector2 naturalSize(0.0f, 0.0f);
908 visual.GetNaturalSize(naturalSize);
909 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
914 int UtcDaliVisualFactoryGetNPatchVisual6(void)
916 ToolkitTestApplication application;
917 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual6: Request n-patch visual with a general image");
919 VisualFactory factory = VisualFactory::Get();
920 DALI_TEST_CHECK(factory);
923 // Get actual size of test image
924 ImageDimensions imageSize = Dali::GetClosestImageSize(gImage_34_RGBA);
926 Property::Map propertyMap;
927 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
928 propertyMap.Insert(ImageVisual::Property::URL, gImage_34_RGBA);
930 Visual::Base visual = factory.CreateVisual(propertyMap);
931 DALI_TEST_CHECK(visual);
933 TestGlAbstraction& gl = application.GetGlAbstraction();
934 TraceCallStack& textureTrace = gl.GetTextureTrace();
935 textureTrace.Enable(true);
937 DummyControl actor = DummyControl::New(true);
938 TestVisualAsynchronousRender(application, actor, visual);
940 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
942 Vector2 naturalSize(0.0f, 0.0f);
943 visual.GetNaturalSize(naturalSize);
944 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
946 application.GetScene().Remove(actor);
947 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
951 // Get actual size of test image
952 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_IMAGE_FILE_NAME);
954 Property::Map propertyMap;
955 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
956 propertyMap.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME);
958 Visual::Base visual = factory.CreateVisual(propertyMap);
959 DALI_TEST_CHECK(visual);
961 TestGlAbstraction& gl = application.GetGlAbstraction();
962 TraceCallStack& textureTrace = gl.GetTextureTrace();
963 textureTrace.Enable(true);
965 DummyControl actor = DummyControl::New(true);
966 TestVisualAsynchronousRender(application, actor, visual);
968 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
970 Vector2 naturalSize(0.0f, 0.0f);
971 visual.GetNaturalSize(naturalSize);
972 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth() - 2.0f, imageSize.GetHeight() - 2.0f), TEST_LOCATION);
974 application.GetScene().Remove(actor);
975 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
981 int UtcDaliVisualFactoryGetNPatchVisual7(void)
983 ToolkitTestApplication application;
984 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual7: Add 9-patch visual on stage and instantly remove it.");
986 VisualFactory factory = VisualFactory::Get();
987 DALI_TEST_CHECK(factory);
989 // Get actual size of test image
990 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_9_PATCH_FILE_NAME);
992 Property::Map propertyMap;
993 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
994 propertyMap.Insert(ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME);
995 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, false);
997 Visual::Base visual = factory.CreateVisual(propertyMap);
998 DALI_TEST_CHECK(visual);
1000 Vector2 naturalSize(0.0f, 0.0f);
1001 visual.GetNaturalSize(naturalSize);
1002 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
1004 TestGlAbstraction& gl = application.GetGlAbstraction();
1005 TraceCallStack& textureTrace = gl.GetTextureTrace();
1006 textureTrace.Enable(true);
1008 DummyControl actor = DummyControl::New(true);
1010 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1011 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1013 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1014 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1016 application.GetScene().Add(actor);
1019 application.SendNotification();
1020 application.Render();
1022 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1024 application.SendNotification();
1025 application.Render();
1027 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1033 int UtcDaliVisualFactoryGetNPatchVisual8(void)
1035 ToolkitTestApplication application;
1036 tet_infoline("UtcDaliVisualFactoryGetNPatchVisual8: Add 9-patch visual on stage, instantly remove it and add new 9-patch visual with same propertyMap");
1038 VisualFactory factory = VisualFactory::Get();
1039 DALI_TEST_CHECK(factory);
1041 // Get actual size of test image
1042 ImageDimensions imageSize = Dali::GetClosestImageSize(TEST_9_PATCH_FILE_NAME);
1044 Property::Map propertyMap;
1045 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1046 propertyMap.Insert(ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME);
1047 propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, false);
1049 Visual::Base visual = factory.CreateVisual(propertyMap);
1050 DALI_TEST_CHECK(visual);
1052 Vector2 naturalSize(0.0f, 0.0f);
1053 visual.GetNaturalSize(naturalSize);
1054 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
1056 TestGlAbstraction& gl = application.GetGlAbstraction();
1057 TraceCallStack& textureTrace = gl.GetTextureTrace();
1058 textureTrace.Enable(true);
1060 DummyControl actor = DummyControl::New(true);
1062 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1063 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1065 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1066 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1068 application.GetScene().Add(actor);
1071 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1073 application.SendNotification();
1074 application.Render();
1076 visual = factory.CreateVisual(propertyMap);
1077 DALI_TEST_CHECK(visual);
1079 visual.GetNaturalSize(naturalSize);
1080 DALI_TEST_EQUALS(naturalSize, Vector2(imageSize.GetWidth(), imageSize.GetHeight()), TEST_LOCATION);
1082 actor = DummyControl::New(true);
1084 DummyControlImpl& dummyImpl2 = static_cast<DummyControlImpl&>(actor.GetImplementation());
1085 dummyImpl2.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1087 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1088 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1090 application.GetScene().Add(actor);
1092 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1094 application.SendNotification();
1095 application.Render();
1097 Renderer renderer = actor.GetRendererAt(0);
1098 auto textures = renderer.GetTextures();
1100 DALI_TEST_EQUALS(textures.GetTextureCount(), 1, TEST_LOCATION);
1106 int UtcDaliNPatchVisualAuxiliaryImage01(void)
1108 ToolkitTestApplication application;
1109 tet_infoline("NPatchVisual with aux image");
1111 VisualFactory factory = VisualFactory::Get();
1112 Property::Map properties;
1113 Property::Map shader;
1115 Property::Map transformMap;
1116 transformMap["size"] = Vector2(0.5f, 0.5f);
1117 transformMap["offset"] = Vector2(20.0f, 0.0f);
1118 transformMap["offsetPolicy"] = Vector2(Visual::Transform::Policy::ABSOLUTE, Visual::Transform::Policy::ABSOLUTE);
1119 transformMap["anchorPoint"] = Align::CENTER;
1120 transformMap["origin"] = Align::CENTER;
1121 properties[Visual::Property::TRANSFORM] = transformMap;
1123 properties[Visual::Property::TYPE] = Visual::IMAGE;
1124 properties[Visual::Property::MIX_COLOR] = Color::BLUE;
1125 properties[Visual::Property::SHADER] = shader;
1126 properties[ImageVisual::Property::URL] = TEST_9_PATCH_FILE_NAME;
1127 properties[DevelImageVisual::Property::AUXILIARY_IMAGE] = TEST_AUX_IMAGE;
1128 properties[DevelImageVisual::Property::AUXILIARY_IMAGE_ALPHA] = 0.9f;
1130 Visual::Base visual = factory.CreateVisual(properties);
1132 // trigger creation through setting on stage
1133 DummyControl dummy = DummyControl::New(true);
1134 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummy.GetImplementation());
1135 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1136 dummyImpl.SetLayout(DummyControl::Property::TEST_VISUAL, transformMap);
1137 dummy.SetResizePolicy(ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS);
1138 dummy.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
1139 application.GetScene().Add(dummy);
1141 application.SendNotification();
1142 application.Render();
1144 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION);
1146 application.SendNotification();
1147 application.Render();
1149 Renderer renderer = dummy.GetRendererAt(0);
1150 auto textures = renderer.GetTextures();
1151 DALI_TEST_EQUALS(textures.GetTextureCount(), 2, TEST_LOCATION);
1152 UnparentAndReset(dummy);
1157 int UtcDaliNPatchVisualAuxiliaryImage02(void)
1159 ToolkitTestApplication application;
1160 tet_infoline("Multiple NPatchVisual with aux image coincidentally");
1162 const Property::Value NPATCH_TEST{
1163 {ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME},
1164 {DevelImageVisual::Property::AUXILIARY_IMAGE, TEST_AUX_IMAGE}};
1166 ImageView imageView1 = ImageView::New();
1167 imageView1[ImageView::Property::IMAGE] = NPATCH_TEST;
1168 application.GetScene().Add(imageView1);
1170 ImageView imageView2 = ImageView::New();
1171 imageView2[ImageView::Property::IMAGE] = NPATCH_TEST;
1172 application.GetScene().Add(imageView2);
1174 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(3), true, TEST_LOCATION);
1176 application.SendNotification();
1177 application.Render();
1179 Renderer renderer1 = imageView1.GetRendererAt(0);
1180 auto textureSet1 = renderer1.GetTextures();
1182 Renderer renderer2 = imageView2.GetRendererAt(0);
1183 auto textureSet2 = renderer2.GetTextures();
1184 DALI_TEST_EQUALS(textureSet1 != textureSet2, true, TEST_LOCATION);
1189 int UtcDaliVisualFactoryGetNPatchVisualN1(void)
1191 //This should still load but display an error image
1193 ToolkitTestApplication application;
1194 tet_infoline("UtcDaliVisualFactoryGetNPatchVisualN: Request n-patch visual with an invalid image url");
1196 VisualFactory factory = VisualFactory::Get();
1197 DALI_TEST_CHECK(factory);
1199 Visual::Base visual = factory.CreateVisual("ERROR.9.jpg", ImageDimensions());
1200 DALI_TEST_CHECK(visual);
1202 TestGlAbstraction& gl = application.GetGlAbstraction();
1203 TraceCallStack& textureTrace = gl.GetTextureTrace();
1204 textureTrace.Enable(true);
1207 DummyControl actor = DummyControl::New(true);
1208 TestVisualAsynchronousRender(application, actor, visual);
1210 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1211 UnparentAndReset(actor);
1217 int UtcDaliVisualFactoryGetNPatchVisualN2(void)
1219 //This should still load but display an error image
1221 ToolkitTestApplication application;
1222 tet_infoline("UtcDaliVisualFactoryGetNPatchVisualN: Request n-patch visual with an invalid URL");
1224 VisualFactory factory = VisualFactory::Get();
1225 DALI_TEST_CHECK(factory);
1227 Property::Map propertyMap;
1228 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::N_PATCH);
1229 propertyMap.Insert(ImageVisual::Property::URL, "ERROR.9.jpg");
1231 Visual::Base visual = factory.CreateVisual(propertyMap);
1232 DALI_TEST_CHECK(visual);
1234 TestGlAbstraction& gl = application.GetGlAbstraction();
1235 TraceCallStack& textureTrace = gl.GetTextureTrace();
1236 textureTrace.Enable(true);
1237 TraceCallStack& drawTrace = gl.GetDrawTrace();
1238 drawTrace.Enable(true);
1240 DummyControl actor = DummyControl::New(true);
1241 TestVisualAsynchronousRender(application, actor, visual);
1243 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1248 int UtcDaliVisualFactoryGetNPatchVisualN3(void)
1250 // Passing in an invalid visual type so we should not get a visual
1252 ToolkitTestApplication application;
1253 tet_infoline("UtcDaliVisualFactoryGetNPatchVisualN: Request n-patch visual with an invalid visual type");
1255 VisualFactory factory = VisualFactory::Get();
1256 DALI_TEST_CHECK(factory);
1258 Property::Map propertyMap;
1259 propertyMap.Insert(Toolkit::Visual::Property::TYPE, 111);
1260 propertyMap.Insert(ImageVisual::Property::URL, "ERROR.9.jpg");
1262 Visual::Base visual = factory.CreateVisual(propertyMap);
1263 DALI_TEST_CHECK(!visual);
1268 int UtcDaliVisualFactoryGetSvgVisual(void)
1270 ToolkitTestApplication application;
1271 tet_infoline("UtcDaliVisualFactoryGetSvgVisual: Request svg visual with a svg url");
1273 VisualFactory factory = VisualFactory::Get();
1274 Visual::Base visual = factory.CreateVisual(TEST_SVG_FILE_NAME, ImageDimensions());
1275 DALI_TEST_CHECK(visual);
1277 TestGlAbstraction& gl = application.GetGlAbstraction();
1278 TraceCallStack& textureTrace = gl.GetTextureTrace();
1279 textureTrace.Enable(true);
1281 DummyControl actor = DummyControl::New(true);
1282 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1283 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1284 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1285 application.GetScene().Add(actor);
1286 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
1288 // Either application.SendNotification() or the trigger can now complete the task.
1289 application.SendNotification();
1290 application.Render();
1291 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1293 // renderer is added to actor
1294 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
1296 // waiting for the resource uploading
1297 application.SendNotification();
1298 application.Render();
1300 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1305 int UtcDaliVisualFactoryGetSvgVisualLarge(void)
1307 ToolkitTestApplication application;
1308 tet_infoline("UtcDaliVisualFactoryGetSvgVisual: Request svg visual with a svg url");
1310 VisualFactory factory = VisualFactory::Get();
1311 Visual::Base visual = factory.CreateVisual(TEST_SVG_FILE_NAME, ImageDimensions(2000, 2000));
1312 DALI_TEST_CHECK(visual);
1314 TestGlAbstraction& gl = application.GetGlAbstraction();
1315 TraceCallStack& textureTrace = gl.GetTextureTrace();
1316 textureTrace.Enable(true);
1318 DummyControl actor = DummyControl::New(true);
1319 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1320 actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); // Only rasterizes when it knows control size.
1321 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1322 application.GetScene().Add(actor);
1324 // Either application.SendNotification() or the trigger can now complete the task.
1325 application.SendNotification();
1326 application.Render();
1327 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1329 // renderer is added to actor
1330 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
1332 // waiting for the resource uploading
1333 application.SendNotification();
1334 application.Render();
1336 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1341 int UtcDaliVisualFactoryGetSvgVisualAtlas(void)
1343 ToolkitTestApplication application;
1344 tet_infoline("UtcDaliVisualFactoryGetSvgVisual: Request svg visual with enabled atlas");
1346 VisualFactory factory = VisualFactory::Get();
1348 Property::Map propertyMap;
1349 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::SVG);
1350 propertyMap.Insert(ImageVisual::Property::URL, TEST_SVG_FILE_NAME);
1351 propertyMap.Insert(ImageVisual::Property::ATLASING, true);
1353 Visual::Base visual = factory.CreateVisual(propertyMap);
1354 DALI_TEST_CHECK(visual);
1356 TestGlAbstraction& gl = application.GetGlAbstraction();
1357 TraceCallStack& textureTrace = gl.GetTextureTrace();
1358 textureTrace.Enable(true);
1360 DummyControl actor = DummyControl::New(true);
1361 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1362 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1363 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1364 application.GetScene().Add(actor);
1365 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
1367 // Either application.SendNotification() or the trigger can now complete the task.
1368 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
1369 application.SendNotification();
1370 application.Render();
1371 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
1373 // renderer is added to actor
1374 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
1376 // waiting for the resource uploading
1377 application.SendNotification();
1378 application.Render();
1380 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
1385 //Creates a mesh visual from the given propertyMap and tries to load it on stage in the given application.
1386 //This is expected to succeed, which will then pass the test.
1387 void MeshVisualLoadsCorrectlyTest(Property::Map& propertyMap, ToolkitTestApplication& application)
1389 VisualFactory factory = VisualFactory::Get();
1390 DALI_TEST_CHECK(factory);
1392 //Create a mesh visual.
1393 Visual::Base visual = factory.CreateVisual(propertyMap);
1394 DALI_TEST_CHECK(visual);
1396 //Create an actor on stage to house the visual.
1397 DummyControl actor = DummyControl::New(true);
1398 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1399 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1400 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1401 application.GetScene().Add(actor);
1402 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
1404 //Ensure set on stage.
1405 DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION);
1407 //Attempt to render to queue resource load requests.
1408 application.SendNotification();
1409 application.Render(0);
1411 //Render again to upload the now-loaded textures.
1412 application.SendNotification();
1413 application.Render(0);
1415 Matrix testScaleMatrix;
1416 testScaleMatrix.SetIdentityAndScale(Vector3(1.0, -1.0, 1.0));
1417 Matrix actualScaleMatrix;
1419 //Test to see if the object has been successfully loaded.
1420 DALI_TEST_CHECK(application.GetGlAbstraction().GetUniformValue<Matrix>("uObjectMatrix", actualScaleMatrix));
1421 DALI_TEST_EQUALS(actualScaleMatrix, testScaleMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1423 //Finish by setting off stage, and ensuring this was successful.
1425 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1428 //Creates a mesh visual from the given propertyMap and tries to load it on stage in the given application.
1429 //This is expected to fail, which will then pass the test.
1430 void MeshVisualDoesNotLoadCorrectlyTest(Property::Map& propertyMap, ToolkitTestApplication& application)
1432 VisualFactory factory = VisualFactory::Get();
1433 DALI_TEST_CHECK(factory);
1435 //Create a mesh visual.
1436 Visual::Base visual = factory.CreateVisual(propertyMap);
1437 DALI_TEST_CHECK(visual);
1439 //Create an actor on stage to house the visual.
1440 DummyControl actor = DummyControl::New(true);
1441 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1442 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1443 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1444 application.GetScene().Add(actor);
1445 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
1447 //Ensure set on stage.
1448 DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION);
1450 //Attempt to render to queue resource load requests.
1451 application.SendNotification();
1452 application.Render(0);
1454 //Render again to upload the now-loaded textures.
1455 application.SendNotification();
1456 application.Render(0);
1458 //Test to see if the object has not been loaded, as expected.
1460 DALI_TEST_CHECK(!application.GetGlAbstraction().GetUniformValue<Matrix>("uObjectMatrix", scaleMatrix));
1462 //Finish by setting off stage, and ensuring this was successful.
1464 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1467 //Test if mesh loads correctly when supplied with only the bare minimum requirements, an object file.
1468 int UtcDaliVisualFactoryGetMeshVisual1(void)
1470 //Set up test application first, so everything else can be handled.
1471 ToolkitTestApplication application;
1473 tet_infoline("UtcDaliVisualFactoryGetMeshVisual1: Request mesh visual with a valid object file only");
1475 static std::vector<UniformData> customUniforms =
1477 UniformData("uObjectMatrix", Property::Type::MATRIX),
1480 TestGraphicsController& graphics = application.GetGraphicsController();
1481 graphics.AddCustomUniforms(customUniforms);
1483 //Set up visual properties.
1484 Property::Map propertyMap;
1485 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1486 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1488 //Test to see if mesh loads correctly.
1489 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1494 //Test if mesh loads correctly when supplied with an object file as well as a blank material file and images directory.
1495 int UtcDaliVisualFactoryGetMeshVisual2(void)
1497 //Set up test application first, so everything else can be handled.
1498 ToolkitTestApplication application;
1500 tet_infoline("UtcDaliVisualFactoryGetMeshVisual2: Request mesh visual with blank material file and images directory");
1502 static std::vector<UniformData> customUniforms =
1504 UniformData("uObjectMatrix", Property::Type::MATRIX),
1507 TestGraphicsController& graphics = application.GetGraphicsController();
1508 graphics.AddCustomUniforms(customUniforms);
1510 //Set up visual properties.
1511 Property::Map propertyMap;
1512 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1513 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1514 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, "");
1515 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, "");
1517 //Test to see if mesh loads correctly.
1518 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1523 //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
1524 int UtcDaliVisualFactoryGetMeshVisual3b(void)
1526 //Set up test application first, so everything else can be handled.
1527 ToolkitTestApplication application;
1529 tet_infoline("UtcDaliVisualFactoryGetMeshVisual3: Request mesh visual with all parameters correct");
1531 static std::vector<UniformData> customUniforms =
1533 UniformData("uObjectMatrix", Property::Type::MATRIX),
1536 TestGraphicsController& graphics = application.GetGraphicsController();
1537 graphics.AddCustomUniforms(customUniforms);
1539 //Set up visual properties.
1540 Property::Map propertyMap;
1541 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1542 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1543 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1544 propertyMap.Insert(MeshVisual::Property::USE_MIPMAPPING, Color::GREEN); // Test that wrong property types don't prevent the object load
1545 propertyMap.Insert(MeshVisual::Property::USE_SOFT_NORMALS, 1.0f);
1546 propertyMap.Insert(MeshVisual::Property::LIGHT_POSITION, 1.0f);
1547 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1549 //Test to see if mesh loads correctly.
1550 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1555 //Test if mesh loads correctly when supplied with all main parameters, an object file, a material file and a directory location.
1556 int UtcDaliVisualFactoryGetMeshVisual3(void)
1558 //Set up test application first, so everything else can be handled.
1559 ToolkitTestApplication application;
1561 tet_infoline("UtcDaliVisualFactoryGetMeshVisual3: Request mesh visual with all parameters correct");
1563 static std::vector<UniformData> customUniforms =
1565 UniformData("uObjectMatrix", Property::Type::MATRIX),
1568 TestGraphicsController& graphics = application.GetGraphicsController();
1569 graphics.AddCustomUniforms(customUniforms);
1571 //Set up visual properties.
1572 Property::Map propertyMap;
1573 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1574 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1575 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1576 propertyMap.Insert(MeshVisual::Property::USE_MIPMAPPING, false);
1577 propertyMap.Insert(MeshVisual::Property::USE_SOFT_NORMALS, false);
1578 propertyMap.Insert(MeshVisual::Property::LIGHT_POSITION, Vector3::XAXIS);
1579 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1581 //Test to see if mesh loads correctly.
1582 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1587 //Test if mesh visual can load a correctly supplied mesh without a normal map or gloss map in the material file.
1588 int UtcDaliVisualFactoryGetMeshVisual4(void)
1590 //Set up test application first, so everything else can be handled.
1591 ToolkitTestApplication application;
1593 tet_infoline("UtcDaliVisualFactoryGetMeshVisual4: Request mesh visual with diffuse texture but not normal or gloss.");
1595 static std::vector<UniformData> customUniforms =
1597 UniformData("uObjectMatrix", Property::Type::MATRIX),
1600 TestGraphicsController& graphics = application.GetGraphicsController();
1601 graphics.AddCustomUniforms(customUniforms);
1603 //Set up visual properties.
1604 Property::Map propertyMap;
1605 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1606 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1607 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_SIMPLE_MTL_FILE_NAME);
1608 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1610 //Test to see if mesh loads correctly.
1611 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1616 //Test if mesh visual can load when made to use diffuse textures only.
1617 int UtcDaliVisualFactoryGetMeshVisual5(void)
1619 //Set up test application first, so everything else can be handled.
1620 ToolkitTestApplication application;
1622 tet_infoline("UtcDaliVisualFactoryGetMeshVisual5: Request mesh visual and make it only use diffuse textures.");
1624 static std::vector<UniformData> customUniforms =
1626 UniformData("uObjectMatrix", Property::Type::MATRIX),
1629 TestGraphicsController& graphics = application.GetGraphicsController();
1630 graphics.AddCustomUniforms(customUniforms);
1632 //Set up visual properties.
1633 Property::Map propertyMap;
1634 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1635 propertyMap.Insert("objectUrl", TEST_OBJ_FILE_NAME);
1636 propertyMap.Insert("materialUrl", TEST_MTL_FILE_NAME);
1637 propertyMap.Insert("texturesPath", TEST_RESOURCE_DIR "/");
1638 propertyMap.Insert("useMipmapping", false);
1639 propertyMap.Insert("useSoftNormals", false);
1640 propertyMap.Insert("lightPosition", Vector3::ZAXIS);
1641 propertyMap.Insert("shadingMode", MeshVisual::ShadingMode::TEXTURED_WITH_SPECULAR_LIGHTING);
1643 //Test to see if mesh loads correctly.
1644 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1649 //Test if mesh visual can load when made to not use the supplied textures.
1650 int UtcDaliVisualFactoryGetMeshVisual6(void)
1652 //Set up test application first, so everything else can be handled.
1653 ToolkitTestApplication application;
1655 tet_infoline("UtcDaliVisualFactoryGetMeshVisual6: Request mesh visual and make it not use any textures.");
1657 static std::vector<UniformData> customUniforms =
1659 UniformData("uObjectMatrix", Property::Type::MATRIX),
1662 TestGraphicsController& graphics = application.GetGraphicsController();
1663 graphics.AddCustomUniforms(customUniforms);
1665 //Set up visual properties.
1666 Property::Map propertyMap;
1667 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1668 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1669 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1670 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1671 propertyMap.Insert(MeshVisual::Property::SHADING_MODE, MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING);
1673 //Test to see if mesh loads correctly.
1674 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1678 //Test if mesh visual loads correctly when light position is manually set.
1679 int UtcDaliVisualFactoryGetMeshVisual7(void)
1681 //Set up test application first, so everything else can be handled.
1682 ToolkitTestApplication application;
1684 tet_infoline("UtcDaliVisualFactoryGetMeshVisual7: Request mesh visual with custom light position.");
1686 static std::vector<UniformData> customUniforms =
1688 UniformData("uObjectMatrix", Property::Type::MATRIX),
1691 TestGraphicsController& graphics = application.GetGraphicsController();
1692 graphics.AddCustomUniforms(customUniforms);
1694 //Set up visual properties.
1695 Property::Map propertyMap;
1696 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1697 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1698 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1699 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1700 propertyMap.Insert(MeshVisual::Property::LIGHT_POSITION, Vector3(0.0, 1.0, 2.0));
1702 //Test to see if mesh loads correctly.
1703 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1708 //Test if mesh visual loads correctly when supplied an object file without face normals or texture points.
1709 //Note that this notably tests object loader functionality.
1710 int UtcDaliVisualFactoryGetMeshVisual8(void)
1712 //Set up test application first, so everything else can be handled.
1713 ToolkitTestApplication application;
1715 tet_infoline("UtcDaliVisualFactoryGetMeshVisual5: Request mesh visual with normal-less object file.");
1717 static std::vector<UniformData> customUniforms =
1719 UniformData("uObjectMatrix", Property::Type::MATRIX),
1722 TestGraphicsController& graphics = application.GetGraphicsController();
1723 graphics.AddCustomUniforms(customUniforms);
1725 //Set up visual properties.
1726 Property::Map propertyMap;
1727 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1728 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_SIMPLE_OBJ_FILE_NAME);
1729 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1730 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1732 //Test to see if mesh loads correctly.
1733 MeshVisualLoadsCorrectlyTest(propertyMap, application);
1738 //Test if mesh visual handles the case of lacking an object file.
1739 int UtcDaliVisualFactoryGetMeshVisualN1(void)
1741 //Set up test application first, so everything else can be handled.
1742 ToolkitTestApplication application;
1744 tet_infoline("UtcDaliVisualFactoryGetMeshVisualN1: Request mesh visual without object file");
1746 //Set up visual properties.
1747 Property::Map propertyMap;
1748 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1749 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1750 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1752 //Test to see if mesh doesn't load with these properties, as expected.
1753 MeshVisualDoesNotLoadCorrectlyTest(propertyMap, application);
1758 //Test if mesh visual handles the case of being passed invalid material and images urls.
1759 int UtcDaliVisualFactoryGetMeshVisualN2(void)
1761 //Set up test application first, so everything else can be handled.
1762 ToolkitTestApplication application;
1764 tet_infoline("UtcDaliVisualFactoryGetMeshVisualN2: Request mesh visual with invalid material and images urls");
1766 //Set up visual properties.
1767 Property::Map propertyMap;
1768 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::MESH);
1769 propertyMap.Insert(MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME);
1770 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, "invalid");
1771 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, "also invalid");
1773 //Test to see if mesh doesn't load with these properties, as expected.
1774 MeshVisualDoesNotLoadCorrectlyTest(propertyMap, application);
1779 //Test if mesh visual handles the case of being passed an invalid object url
1780 int UtcDaliVisualFactoryGetMeshVisualN3(void)
1782 //Set up test application first, so everything else can be handled.
1783 ToolkitTestApplication application;
1784 tet_infoline("UtcDaliVisualFactoryGetMeshVisualN3: Request mesh visual with invalid object url");
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, "invalid");
1790 propertyMap.Insert(MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME);
1791 propertyMap.Insert(MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_DIR "/");
1793 //Test to see if mesh doesn't load with these properties, as expected.
1794 MeshVisualDoesNotLoadCorrectlyTest(propertyMap, application);
1799 //Creates a primitive visual with the given property map and tests to see if it correctly loads in the given application.
1800 void TestPrimitiveVisualWithProperties(Property::Map& propertyMap, ToolkitTestApplication& application)
1802 VisualFactory factory = VisualFactory::Get();
1803 DALI_TEST_CHECK(factory);
1805 //Create a primitive visual.
1806 Visual::Base visual = factory.CreateVisual(propertyMap);
1807 DALI_TEST_CHECK(visual);
1809 //Create an actor on stage to house the visual.
1810 DummyControl actor = DummyControl::New(true);
1811 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
1812 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
1814 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
1815 application.GetScene().Add(actor);
1816 visual.SetTransformAndSize(DefaultTransform(), Vector2(200.f, 200.f));
1818 //Ensure set on stage.
1819 DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION);
1821 //Tell test application to load the visual.
1822 application.SendNotification();
1823 application.Render(0);
1825 Matrix testScaleMatrix;
1826 testScaleMatrix.SetIdentityAndScale(Vector3(1.0, -1.0, 1.0));
1827 Matrix actualScaleMatrix;
1829 //Test to see if the object has been successfully loaded.
1830 DALI_TEST_CHECK(application.GetGlAbstraction().GetUniformValue<Matrix>("uObjectMatrix", actualScaleMatrix));
1831 DALI_TEST_EQUALS(actualScaleMatrix, testScaleMatrix, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1833 //Finish by setting off stage, and ensuring this was successful.
1835 DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION);
1838 //Test if primitive shape loads correctly when supplied with only the bare minimum requirements, the shape to use.
1839 int UtcDaliVisualFactoryGetPrimitiveVisual1(void)
1841 //Set up test application first, so everything else can be handled.
1842 ToolkitTestApplication application;
1844 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual1: Request primitive visual with a shape only");
1846 static std::vector<UniformData> customUniforms =
1848 UniformData("uObjectMatrix", Property::Type::MATRIX),
1851 TestGraphicsController& graphics = application.GetGraphicsController();
1852 graphics.AddCustomUniforms(customUniforms);
1854 //Set up visual properties.
1855 Property::Map propertyMap;
1856 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
1857 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE);
1859 //Test to see if shape loads correctly.
1860 TestPrimitiveVisualWithProperties(propertyMap, application);
1865 //Test if primitive shape loads correctly when supplied with all possible parameters
1866 int UtcDaliVisualFactoryGetPrimitiveVisual2(void)
1868 //Set up test application first, so everything else can be handled.
1869 ToolkitTestApplication application;
1871 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual2: Request primitive visual with everything");
1873 static std::vector<UniformData> customUniforms =
1875 UniformData("uObjectMatrix", Property::Type::MATRIX),
1878 TestGraphicsController& graphics = application.GetGraphicsController();
1879 graphics.AddCustomUniforms(customUniforms);
1881 //Set up visual properties.
1882 Property::Map propertyMap;
1883 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
1884 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE);
1885 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
1886 propertyMap.Insert(PrimitiveVisual::Property::SLICES, 10);
1887 propertyMap.Insert(PrimitiveVisual::Property::STACKS, 20);
1888 propertyMap.Insert(PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f);
1889 propertyMap.Insert(PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f);
1890 propertyMap.Insert(PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f);
1891 propertyMap.Insert(PrimitiveVisual::Property::SCALE_RADIUS, 60.0f);
1892 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_PERCENTAGE, 0.7f);
1893 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_SMOOTHNESS, 0.8f);
1894 propertyMap.Insert(MeshVisual::Property::LIGHT_POSITION, Vector3(0.9, 1.0, 1.1));
1896 //Test to see if shape loads correctly.
1897 TestPrimitiveVisualWithProperties(propertyMap, application);
1902 //Test if primitive shape loads a sphere correctly.
1903 int UtcDaliVisualFactoryGetPrimitiveVisual3(void)
1905 //Set up test application first, so everything else can be handled.
1906 ToolkitTestApplication application;
1908 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual3: Request primitive visual to display a sphere");
1910 static std::vector<UniformData> customUniforms =
1912 UniformData("uObjectMatrix", Property::Type::MATRIX),
1915 TestGraphicsController& graphics = application.GetGraphicsController();
1916 graphics.AddCustomUniforms(customUniforms);
1918 //Set up visual properties.
1919 Property::Map propertyMap;
1920 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
1921 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
1922 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
1923 propertyMap.Insert(PrimitiveVisual::Property::SLICES, 10);
1924 propertyMap.Insert(PrimitiveVisual::Property::STACKS, 20);
1926 //Test to see if shape loads correctly.
1927 TestPrimitiveVisualWithProperties(propertyMap, application);
1932 //Test if primitive shape loads a conic section correctly.
1933 int UtcDaliVisualFactoryGetPrimitiveVisual4(void)
1935 //Set up test application first, so everything else can be handled.
1936 ToolkitTestApplication application;
1938 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual4: Request primitive visual to display a conic section");
1940 static std::vector<UniformData> customUniforms =
1942 UniformData("uObjectMatrix", Property::Type::MATRIX),
1945 TestGraphicsController& graphics = application.GetGraphicsController();
1946 graphics.AddCustomUniforms(customUniforms);
1948 //Set up visual properties.
1949 Property::Map propertyMap;
1950 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
1951 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CONICAL_FRUSTUM);
1952 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
1953 propertyMap.Insert(PrimitiveVisual::Property::SLICES, 10);
1954 propertyMap.Insert(PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f);
1955 propertyMap.Insert(PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f);
1956 propertyMap.Insert(PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f);
1958 //Test to see if shape loads correctly.
1959 TestPrimitiveVisualWithProperties(propertyMap, application);
1964 //Test if primitive shape loads a bevelled cube correctly.
1965 int UtcDaliVisualFactoryGetPrimitiveVisual5(void)
1967 //Set up test application first, so everything else can be handled.
1968 ToolkitTestApplication application;
1970 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual5: Request primitive visual to display a bevelled cube");
1972 static std::vector<UniformData> customUniforms =
1974 UniformData("uObjectMatrix", Property::Type::MATRIX),
1977 TestGraphicsController& graphics = application.GetGraphicsController();
1978 graphics.AddCustomUniforms(customUniforms);
1980 //Set up visual properties.
1981 Property::Map propertyMap;
1982 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
1983 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::BEVELLED_CUBE);
1984 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
1985 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_PERCENTAGE, 0.7f);
1987 //Test to see if shape loads correctly.
1988 TestPrimitiveVisualWithProperties(propertyMap, application);
1993 //Test if primitive shape loads an octahedron correctly.
1994 int UtcDaliVisualFactoryGetPrimitiveVisual6(void)
1996 //Set up test application first, so everything else can be handled.
1997 ToolkitTestApplication application;
1999 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual6: Request primitive visual to display an octahedron");
2001 static std::vector<UniformData> customUniforms =
2003 UniformData("uObjectMatrix", Property::Type::MATRIX),
2006 TestGraphicsController& graphics = application.GetGraphicsController();
2007 graphics.AddCustomUniforms(customUniforms);
2009 //Set up visual properties.
2010 Property::Map propertyMap;
2011 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2012 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::OCTAHEDRON);
2013 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2015 //Test to see if shape loads correctly.
2016 TestPrimitiveVisualWithProperties(propertyMap, application);
2021 //Test if primitive shape loads a cone correctly.
2022 int UtcDaliVisualFactoryGetPrimitiveVisual7(void)
2024 //Set up test application first, so everything else can be handled.
2025 ToolkitTestApplication application;
2027 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual7: Request primitive visual to display a cone");
2029 static std::vector<UniformData> customUniforms =
2031 UniformData("uObjectMatrix", Property::Type::MATRIX),
2034 TestGraphicsController& graphics = application.GetGraphicsController();
2035 graphics.AddCustomUniforms(customUniforms);
2037 //Set up visual properties.
2038 Property::Map propertyMap;
2039 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2040 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CONE);
2041 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2042 propertyMap.Insert(PrimitiveVisual::Property::SLICES, 10);
2043 propertyMap.Insert(PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f);
2044 propertyMap.Insert(PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f);
2046 //Test to see if shape loads correctly.
2047 TestPrimitiveVisualWithProperties(propertyMap, application);
2052 //Test if primitive shape loads correctly when light position is manually set.
2053 int UtcDaliVisualFactoryGetPrimitiveVisual8(void)
2055 //Set up test application first, so everything else can be handled.
2056 ToolkitTestApplication application;
2058 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual8: Request primitive visual with set light position");
2060 static std::vector<UniformData> customUniforms =
2062 UniformData("uObjectMatrix", Property::Type::MATRIX),
2065 TestGraphicsController& graphics = application.GetGraphicsController();
2066 graphics.AddCustomUniforms(customUniforms);
2068 //Set up visual properties.
2069 Property::Map propertyMap;
2070 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2071 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2072 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2073 propertyMap.Insert(MeshVisual::Property::LIGHT_POSITION, Vector3(0.0, 1.0, 2.0));
2075 //Test to see if shape loads correctly.
2076 TestPrimitiveVisualWithProperties(propertyMap, application);
2081 //Test if primitive shape loads correctly when told to use too many slices.
2082 int UtcDaliVisualFactoryGetPrimitiveVisual9(void)
2084 //Set up test application first, so everything else can be handled.
2085 ToolkitTestApplication application;
2087 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual9: Request primitive visual with above-cap slices.");
2089 static std::vector<UniformData> customUniforms =
2091 UniformData("uObjectMatrix", Property::Type::MATRIX),
2094 TestGraphicsController& graphics = application.GetGraphicsController();
2095 graphics.AddCustomUniforms(customUniforms);
2097 //Set up visual properties.
2098 Property::Map propertyMap;
2099 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2100 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2101 propertyMap.Insert(PrimitiveVisual::Property::SLICES, Property::Value(1000000));
2103 //Test to see if shape loads correctly.
2104 TestPrimitiveVisualWithProperties(propertyMap, application);
2109 //Test if primitive shape loads correctly when told to use too few slices. (2 slices or less.)
2110 int UtcDaliVisualFactoryGetPrimitiveVisual10(void)
2112 //Set up test application first, so everything else can be handled.
2113 ToolkitTestApplication application;
2115 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual10: Request primitive visual with too few slices.");
2117 static std::vector<UniformData> customUniforms =
2119 UniformData("uObjectMatrix", Property::Type::MATRIX),
2122 TestGraphicsController& graphics = application.GetGraphicsController();
2123 graphics.AddCustomUniforms(customUniforms);
2125 //Set up visual properties.
2126 Property::Map propertyMap;
2127 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2128 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2129 propertyMap.Insert(PrimitiveVisual::Property::SLICES, Property::Value(2));
2131 //Test to see if shape loads correctly.
2132 TestPrimitiveVisualWithProperties(propertyMap, application);
2137 //Test if primitive shape loads correctly when told to use too many stacks.
2138 int UtcDaliVisualFactoryGetPrimitiveVisual11(void)
2140 //Set up test application first, so everything else can be handled.
2141 ToolkitTestApplication application;
2143 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual11: Request primitive visual with too many stacks.");
2145 static std::vector<UniformData> customUniforms =
2147 UniformData("uObjectMatrix", Property::Type::MATRIX),
2150 TestGraphicsController& graphics = application.GetGraphicsController();
2151 graphics.AddCustomUniforms(customUniforms);
2153 //Set up visual properties.
2154 Property::Map propertyMap;
2155 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2156 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2157 propertyMap.Insert(PrimitiveVisual::Property::STACKS, Property::Value(1000000));
2159 //Test to see if shape loads correctly.
2160 TestPrimitiveVisualWithProperties(propertyMap, application);
2165 //Test if primitive shape loads correctly when told to use too few stacks. (1 stack or less.)
2166 int UtcDaliVisualFactoryGetPrimitiveVisual12(void)
2168 //Set up test application first, so everything else can be handled.
2169 ToolkitTestApplication application;
2171 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual12: Request primitive visual with too few stacks.");
2173 static std::vector<UniformData> customUniforms =
2175 UniformData("uObjectMatrix", Property::Type::MATRIX),
2178 TestGraphicsController& graphics = application.GetGraphicsController();
2179 graphics.AddCustomUniforms(customUniforms);
2181 //Set up visual properties.
2182 Property::Map propertyMap;
2183 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2184 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2185 propertyMap.Insert(PrimitiveVisual::Property::STACKS, Property::Value(1));
2187 //Test to see if shape loads correctly.
2188 TestPrimitiveVisualWithProperties(propertyMap, application);
2193 //Test if primitive shape loads correctly when told to use invalid (zero or negative) dimensions.
2194 int UtcDaliVisualFactoryGetPrimitiveVisual13(void)
2196 //Set up test application first, so everything else can be handled.
2197 ToolkitTestApplication application;
2199 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual13: Request primitive visual with invalid scale dimensions.");
2201 static std::vector<UniformData> customUniforms =
2203 UniformData("uObjectMatrix", Property::Type::MATRIX),
2206 TestGraphicsController& graphics = application.GetGraphicsController();
2207 graphics.AddCustomUniforms(customUniforms);
2209 //Set up visual properties.
2210 Property::Map propertyMap;
2211 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2212 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2213 propertyMap.Insert(PrimitiveVisual::Property::SCALE_DIMENSIONS, Vector3::ZERO);
2215 //Test to see if shape loads correctly.
2216 TestPrimitiveVisualWithProperties(propertyMap, application);
2221 //Test if primitive shape loads correctly when told to use too low a bevel percentage.
2222 int UtcDaliVisualFactoryGetPrimitiveVisual14(void)
2224 //Set up test application first, so everything else can be handled.
2225 ToolkitTestApplication application;
2227 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual14: Request primitive visual with too low a bevel percentage.");
2229 static std::vector<UniformData> customUniforms =
2231 UniformData("uObjectMatrix", Property::Type::MATRIX),
2234 TestGraphicsController& graphics = application.GetGraphicsController();
2235 graphics.AddCustomUniforms(customUniforms);
2237 //Set up visual properties.
2238 Property::Map propertyMap;
2239 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2240 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2241 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_PERCENTAGE, Property::Value(-1.0f));
2243 //Test to see if shape loads correctly.
2244 TestPrimitiveVisualWithProperties(propertyMap, application);
2249 //Test if primitive shape loads correctly when told to use too high a bevel percentage.
2250 int UtcDaliVisualFactoryGetPrimitiveVisual15(void)
2252 //Set up test application first, so everything else can be handled.
2253 ToolkitTestApplication application;
2255 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual15: Request primitive visual with too high a bevel percentage.");
2257 static std::vector<UniformData> customUniforms =
2259 UniformData("uObjectMatrix", Property::Type::MATRIX),
2262 TestGraphicsController& graphics = application.GetGraphicsController();
2263 graphics.AddCustomUniforms(customUniforms);
2265 //Set up visual properties.
2266 Property::Map propertyMap;
2267 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2268 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2269 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_PERCENTAGE, Property::Value(2.0f));
2271 //Test to see if shape loads correctly.
2272 TestPrimitiveVisualWithProperties(propertyMap, application);
2277 //Test if primitive shape loads correctly when told to use too low a bevel smoothness.
2278 int UtcDaliVisualFactoryGetPrimitiveVisual16(void)
2280 //Set up test application first, so everything else can be handled.
2281 ToolkitTestApplication application;
2283 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual16: Request primitive visual with too low a bevel smoothness.");
2285 static std::vector<UniformData> customUniforms =
2287 UniformData("uObjectMatrix", Property::Type::MATRIX),
2290 TestGraphicsController& graphics = application.GetGraphicsController();
2291 graphics.AddCustomUniforms(customUniforms);
2293 //Set up visual properties.
2294 Property::Map propertyMap;
2295 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2296 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2297 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_SMOOTHNESS, Property::Value(-1.0f));
2299 //Test to see if shape loads correctly.
2300 TestPrimitiveVisualWithProperties(propertyMap, application);
2305 //Test if primitive shape loads correctly when told to use too high a bevel smoothness.
2306 int UtcDaliVisualFactoryGetPrimitiveVisual17(void)
2308 //Set up test application first, so everything else can be handled.
2309 ToolkitTestApplication application;
2311 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual17: Request primitive visual with too high a bevel smoothness.");
2313 static std::vector<UniformData> customUniforms =
2315 UniformData("uObjectMatrix", Property::Type::MATRIX),
2318 TestGraphicsController& graphics = application.GetGraphicsController();
2319 graphics.AddCustomUniforms(customUniforms);
2321 //Set up visual properties.
2322 Property::Map propertyMap;
2323 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2324 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::SPHERE);
2325 propertyMap.Insert(PrimitiveVisual::Property::BEVEL_SMOOTHNESS, Property::Value(2.0f));
2327 //Test to see if shape loads correctly.
2328 TestPrimitiveVisualWithProperties(propertyMap, application);
2333 //Test if primitive shape loads a conic section correctly.
2334 int UtcDaliVisualFactoryGetPrimitiveVisual18(void)
2336 //Set up test application first, so everything else can be handled.
2337 ToolkitTestApplication application;
2339 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisual18: Request primitive visual to display a conic section");
2341 static std::vector<UniformData> customUniforms =
2343 UniformData("uObjectMatrix", Property::Type::MATRIX),
2346 TestGraphicsController& graphics = application.GetGraphicsController();
2347 graphics.AddCustomUniforms(customUniforms);
2349 //Set up visual properties.
2350 Property::Map propertyMap;
2351 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2352 propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CONICAL_FRUSTUM);
2353 propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Vector4(0.5, 0.5, 0.5, 1.0));
2354 propertyMap.Insert(PrimitiveVisual::Property::SLICES, 10);
2355 propertyMap.Insert(PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f);
2356 propertyMap.Insert(PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f);
2357 propertyMap.Insert(PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f);
2359 //Test to see if shape loads correctly.
2360 TestPrimitiveVisualWithProperties(propertyMap, application);
2365 //Test if primitive shape visual handles the case of not being passed a specific shape to use.
2366 int UtcDaliVisualFactoryGetPrimitiveVisualN1(void)
2368 //Set up test application first, so everything else can be handled.
2369 ToolkitTestApplication application;
2371 tet_infoline("UtcDaliVisualFactoryGetPrimitiveVisualN1: Request primitive visual without shape");
2373 static std::vector<UniformData> customUniforms =
2375 UniformData("uObjectMatrix", Property::Type::MATRIX),
2378 TestGraphicsController& graphics = application.GetGraphicsController();
2379 graphics.AddCustomUniforms(customUniforms);
2381 //Set up visual properties, without supplying shape.
2382 Property::Map propertyMap;
2383 propertyMap.Insert(Toolkit::Visual::Property::TYPE, Visual::PRIMITIVE);
2385 //Test to see if shape loads regardless of missing input.
2386 TestPrimitiveVisualWithProperties(propertyMap, application);
2391 int UtcDaliVisualFactoryGetAnimatedImageVisual1(void)
2393 ToolkitTestApplication application;
2394 tet_infoline("UtcDaliVisualFactoryGetAnimatedImageVisual1: Request animated image visual with a gif url");
2396 TestGlAbstraction& gl = application.GetGlAbstraction();
2397 TraceCallStack& textureTrace = gl.GetTextureTrace();
2398 textureTrace.Enable(true);
2400 VisualFactory factory = VisualFactory::Get();
2401 Visual::Base visual = factory.CreateVisual(TEST_GIF_FILE_NAME, ImageDimensions());
2402 DALI_TEST_CHECK(visual);
2404 DummyControl actor = DummyControl::New(true);
2405 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
2406 dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual);
2407 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
2408 application.GetScene().Add(actor);
2410 application.SendNotification();
2411 application.Render();
2413 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION);
2415 application.SendNotification();
2416 application.Render();
2418 // renderer is added to actor
2419 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
2420 Renderer renderer = actor.GetRendererAt(0u);
2421 DALI_TEST_CHECK(renderer);
2423 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
2424 textureTrace.Reset();
2426 // Force the timer used by the animatedImageVisual to tick,
2427 Dali::Timer timer = Timer::New(0);
2428 timer.MockEmitSignal();
2429 application.SendNotification();
2430 application.Render();
2432 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
2434 application.SendNotification();
2435 application.Render();
2436 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
2437 textureTrace.Reset();
2439 // Force the timer used by the animatedImageVisual to tick,
2440 timer.MockEmitSignal();
2441 application.SendNotification();
2442 application.Render();
2444 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
2446 application.SendNotification();
2447 application.Render();
2448 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
2449 textureTrace.Reset();
2451 // Force the timer used by the animatedImageVisual to tick,
2452 timer.MockEmitSignal();
2453 application.SendNotification();
2454 application.Render();
2456 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
2458 application.SendNotification();
2459 application.Render();
2460 DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION);
2461 textureTrace.Reset();
2463 // Test SetOffScene().
2465 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);
2470 int UtcDaliVisualFactoryGetAnimatedImageVisual2(void)
2472 ToolkitTestApplication application;
2473 tet_infoline("UtcDaliVisualFactoryGetAnimatedImageVisual2: Request animated image visual with a Property::Map, test custom wrap mode and pixel area");
2475 static std::vector<UniformData> customUniforms =
2477 UniformData("pixelArea", Property::Type::VECTOR4),
2478 UniformData("wrapMode", Property::Type::VECTOR2),
2481 TestGraphicsController& graphics = application.GetGraphicsController();
2482 graphics.AddCustomUniforms(customUniforms);
2484 const Vector4 pixelArea(-0.5f, -0.5f, 2.f, 2.f);
2485 Property::Map propertyMap;
2486 propertyMap.Add(Toolkit::Visual::Property::TYPE, Visual::IMAGE)
2487 .Add(ImageVisual::Property::URL, TEST_GIF_FILE_NAME)
2488 .Add(ImageVisual::Property::PIXEL_AREA, pixelArea)
2489 .Add(ImageVisual::Property::WRAP_MODE_U, WrapMode::MIRRORED_REPEAT)
2490 .Add(ImageVisual::Property::WRAP_MODE_V, WrapMode::REPEAT);
2492 Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap);
2493 DALI_TEST_CHECK(visual);
2495 TestGlAbstraction& gl = application.GetGlAbstraction();
2496 TraceCallStack& textureTrace = gl.GetTextureTrace();
2497 textureTrace.Enable(true);
2498 TraceCallStack& texParameterTrace = gl.GetTexParameterTrace();
2499 texParameterTrace.Enable(true);
2501 DummyControl actor = DummyControl::New(true);
2502 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(actor.GetImplementation());
2503 dummyImpl.RegisterVisual(Control::CONTROL_PROPERTY_END_INDEX + 1, visual);
2504 actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f));
2505 application.GetScene().Add(actor);
2507 application.SendNotification();
2508 application.Render();
2510 DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION);
2512 application.SendNotification();
2513 application.Render();
2515 DALI_TEST_CHECK(actor.GetRendererCount() == 1u);
2517 DALI_TEST_EQUALS(textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION);
2519 // For animated image visual, the wrapping is handled manually in shader, so the following gl function should not be called
2520 std::stringstream out;
2521 out << GL_TEXTURE_2D << ", " << GL_TEXTURE_WRAP_S << ", " << GL_MIRRORED_REPEAT;
2522 DALI_TEST_CHECK(!texParameterTrace.FindMethodAndParams("TexParameteri", out.str()));
2524 out << GL_TEXTURE_2D << ", " << GL_TEXTURE_WRAP_T << ", " << GL_REPEAT;
2525 DALI_TEST_CHECK(!texParameterTrace.FindMethodAndParams("TexParameteri", out.str()));
2527 // test the uniforms which used to handle the wrap mode
2528 Renderer renderer = actor.GetRendererAt(0u);
2529 DALI_TEST_CHECK(renderer);
2531 Property::Value pixelAreaValue = renderer.GetProperty(renderer.GetPropertyIndex("pixelArea"));
2532 DALI_TEST_EQUALS(pixelAreaValue.Get<Vector4>(), pixelArea, TEST_LOCATION);
2533 Vector4 pixelAreaUniform;
2534 DALI_TEST_CHECK(gl.GetUniformValue<Vector4>("pixelArea", pixelAreaUniform));
2535 DALI_TEST_EQUALS(pixelArea, pixelAreaUniform, Math::MACHINE_EPSILON_100, TEST_LOCATION);
2537 Property::Value wrapModeValue = renderer.GetProperty(renderer.GetPropertyIndex("wrapMode"));
2538 Vector2 wrapMode(WrapMode::MIRRORED_REPEAT - 1, WrapMode::REPEAT - 1);
2539 DALI_TEST_EQUALS(wrapModeValue.Get<Vector2>(), wrapMode, TEST_LOCATION);
2540 Vector2 wrapModeUniform;
2541 DALI_TEST_CHECK(gl.GetUniformValue<Vector2>("wrapMode", wrapModeUniform));
2542 DALI_TEST_EQUALS(wrapMode, wrapModeUniform, Math::MACHINE_EPSILON_100, TEST_LOCATION);
2545 DALI_TEST_CHECK(actor.GetRendererCount() == 0u);