Further Setter/Getter public API removal from Dali::Actor
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-internal / utc-Dali-Visuals-internal.cpp
1 /*
2  * Copyright (c) 2018 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 #include <iostream>
19
20 #include <stdlib.h>
21
22 #include <dali-toolkit-test-suite-utils.h>
23 #include <dali-toolkit/dali-toolkit.h>
24 #include <toolkit-text-utils.h>
25 #include <toolkit-event-thread-callback.h>
26 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
27 #include <dali-toolkit/internal/visuals/visual-factory-cache.h>
28 #include <dali-toolkit/internal/visuals/color/color-visual.h>
29 #include <dali-toolkit/internal/visuals/npatch-loader.h>
30 #include <dummy-visual.h>
31 #include <../dali-toolkit/dali-toolkit-test-utils/dummy-control.h>
32 #include <dali-toolkit/devel-api/visuals/arc-visual-properties-devel.h>
33
34 using namespace Dali;
35 using namespace Toolkit;
36
37 namespace
38 {
39
40 const char* TEST_VECTOR_IMAGE_FILE_NAME =  TEST_RESOURCE_DIR  "/insta_camera.json";
41
42 }
43
44 int UtcDaliVisualAction(void)
45 {
46   ToolkitTestApplication application;
47   tet_infoline( "Register an ImageVisual and and perform an Action on Visual directly" );
48   Vector2 controlSize( 20.f, 30.f );
49
50   //Created DummyVisual
51   Property::Map settings;
52   Toolkit::Internal::DummyVisualPtr dummyVisualPtr = Toolkit::Internal::DummyVisual::New( settings );
53
54   DummyControl dummyControl = DummyControl::New( true );
55   Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
56
57   tet_infoline( "Register visual and stage control" );
58
59   Toolkit::Visual::Base visualBaseHandle = Toolkit::Visual::Base( dummyVisualPtr.Get() );
60   dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visualBaseHandle );
61   dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
62   Stage::GetCurrent().Add( dummyControl );
63
64   application.SendNotification();
65   application.Render();
66
67   tet_infoline( "Check action counter is 0 before DoAction" );
68   DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION );
69
70   tet_infoline( "Perform TEST_ACTION action on Visual. Should increase the action counter" );
71
72   Property::Map attributes;
73   Toolkit::Internal::Visual::Base& internalVisualBase =  GetImplementation( visualBaseHandle );
74   internalVisualBase.DoAction( Dali::Toolkit::Internal::DummyVisual::TEST_ACTION, attributes );
75   application.SendNotification();
76   DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 1, TEST_LOCATION );
77
78   END_TEST;
79 }
80
81 int UtcDaliVisualActionNotImplemented(void)
82 {
83   ToolkitTestApplication application;
84   tet_infoline( "Register an ImageVisual and and perform an Action on a Visual which does not support any Actions" );
85   Vector2 controlSize( 20.f, 30.f );
86
87   //Created DummyVisual
88   Property::Map settings;
89   Toolkit::Internal::DummyVisualPtr dummyVisualPtr = Toolkit::Internal::DummyVisual::New( settings );
90
91   DummyControl dummyControl = DummyControl::New( true );
92   Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummyControl.GetImplementation());
93
94   tet_infoline( "Register visual and stage control" );
95
96   VisualFactory factory = VisualFactory::Get();
97   Property::Map propertyMap;
98   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
99   propertyMap.Insert(ColorVisual::Property::MIX_COLOR,  Color::BLUE);
100   Visual::Base visual = factory.CreateVisual( propertyMap );
101
102   dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
103   dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
104   Stage::GetCurrent().Add( dummyControl );
105
106   application.SendNotification();
107   application.Render();
108
109   tet_infoline( "Check action counter is 0 before DoAction" );
110   DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION );
111
112   tet_infoline( "Perform TEST_ACTION action on Color Visual which does not support it.. Should not increment the action counter" );
113   Property::Map attributes;
114   GetImplementation( visual ).DoAction( Dali::Toolkit::Internal::DummyVisual::TEST_ACTION, attributes );
115   application.SendNotification();
116   DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION );
117
118   END_TEST;
119 }
120
121 int UtcDaliVisualSetProperties(void)
122 {
123   ToolkitTestApplication application;
124   tet_infoline( "Register a visual and SetProperties" );
125
126   Toolkit::Internal::VisualFactoryCache* factoryCache = new Toolkit::Internal::VisualFactoryCache(false);
127
128   //Created ColorVisual
129   Property::Map propertyMap1;
130   propertyMap1.Insert(Visual::Property::TYPE,  Visual::COLOR);
131   propertyMap1.Insert(ColorVisual::Property::MIX_COLOR,  Color::RED);
132   Toolkit::Internal::ColorVisualPtr colorVisualPtr = Toolkit::Internal::ColorVisual::New( *factoryCache, propertyMap1 );
133
134   DummyControl dummyControl = DummyControl::New( true );
135   Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummyControl.GetImplementation() );
136
137   Toolkit::Visual::Base visualBaseHandle = Toolkit::Visual::Base( colorVisualPtr.Get() );
138   dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visualBaseHandle );
139   dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) );
140   Stage::GetCurrent().Add( dummyControl );
141
142   application.SendNotification();
143   application.Render();
144
145   Property::Map propertyMap;
146   propertyMap.Insert( Visual::Property::MIX_COLOR,  Color::BLUE );
147
148   colorVisualPtr->SetProperties( propertyMap );
149   application.SendNotification();
150   application.Render();
151
152   Property::Map resultMap;
153   visualBaseHandle.CreatePropertyMap( resultMap );
154
155   Property::Value* colorValue = resultMap.Find( Visual::Property::MIX_COLOR,  Property::VECTOR4 );
156   DALI_TEST_CHECK( colorValue );
157   DALI_TEST_CHECK( colorValue->Get< Vector4 >() == Color::BLUE );
158
159   delete factoryCache;
160
161   END_TEST;
162 }
163
164 int UtcDaliNPatchBufferGetRedOffsetAndMask(void)
165 {
166   TestApplication application;
167
168   tet_infoline("UtcDaliNPatchBufferGetRedOffsetAndMask");
169
170   int byteOffset = 0;
171   int bitMask = 0;
172
173   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::A8, byteOffset, bitMask );
174   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
175   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::L8, byteOffset, bitMask );
176   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
177   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::LA88, byteOffset, bitMask );
178   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
179
180   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGB888, byteOffset, bitMask );
181   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xff );
182   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGB8888, byteOffset, bitMask );
183   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xff );
184   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGBA8888, byteOffset, bitMask );
185   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xff );
186
187   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGR8888, byteOffset, bitMask );
188   DALI_TEST_CHECK( byteOffset == 2 && bitMask == 0xff );
189   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGRA8888, byteOffset, bitMask );
190   DALI_TEST_CHECK( byteOffset == 2 && bitMask == 0xff );
191
192   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGB565, byteOffset, bitMask );
193   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xf8 );
194
195   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGR565, byteOffset, bitMask );
196   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x1f );
197
198   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGBA4444, byteOffset, bitMask );
199   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xf0 );
200
201   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGRA4444, byteOffset, bitMask );
202   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0xf0 );
203
204   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGBA5551, byteOffset, bitMask );
205   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0xf8 );
206
207   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::BGRA5551, byteOffset, bitMask );
208   DALI_TEST_CHECK( byteOffset == 1 && bitMask == 0x1e );
209
210   // Compressed formats are not supported
211   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::INVALID, byteOffset, bitMask );
212   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
213   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_R11_EAC, byteOffset, bitMask );
214   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
215   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SIGNED_R11_EAC, byteOffset, bitMask );
216   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
217   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RG11_EAC, byteOffset, bitMask );
218   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
219   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SIGNED_RG11_EAC, byteOffset, bitMask );
220   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
221   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGB8_ETC2, byteOffset, bitMask );
222   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
223   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ETC2, byteOffset, bitMask );
224   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
225   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGB8_ETC1, byteOffset, bitMask );
226   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
227   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGB_PVRTC_4BPPV1, byteOffset, bitMask );
228   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
229   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, byteOffset, bitMask );
230   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
231   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, byteOffset, bitMask );
232   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
233   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA8_ETC2_EAC, byteOffset, bitMask );
234   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
235   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, byteOffset, bitMask );
236   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
237   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_4x4_KHR, byteOffset, bitMask );
238   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
239   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_5x4_KHR, byteOffset, bitMask );
240   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
241   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_5x5_KHR, byteOffset, bitMask );
242   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
243   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_6x5_KHR, byteOffset, bitMask );
244   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
245   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_6x6_KHR, byteOffset, bitMask );
246   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
247   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_8x5_KHR, byteOffset, bitMask );
248   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
249   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_8x6_KHR, byteOffset, bitMask );
250   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
251   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_8x8_KHR, byteOffset, bitMask );
252   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
253   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_10x5_KHR, byteOffset, bitMask );
254   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
255   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_10x6_KHR, byteOffset, bitMask );
256   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
257   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_10x8_KHR, byteOffset, bitMask );
258   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
259   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_10x10_KHR, byteOffset, bitMask );
260   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
261   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_12x10_KHR, byteOffset, bitMask );
262   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
263   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_RGBA_ASTC_12x12_KHR, byteOffset, bitMask );
264   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
265   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR, byteOffset, bitMask );
266   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
267   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR, byteOffset, bitMask );
268   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
269   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR, byteOffset, bitMask );
270   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
271   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR, byteOffset, bitMask );
272   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
273   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR, byteOffset, bitMask );
274   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
275   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR, byteOffset, bitMask );
276   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
277   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR, byteOffset, bitMask );
278   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
279   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR, byteOffset, bitMask );
280   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
281   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR, byteOffset, bitMask );
282   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
283   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR, byteOffset, bitMask );
284   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
285   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR, byteOffset, bitMask );
286   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
287   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, byteOffset, bitMask );
288   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
289   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR, byteOffset, bitMask );
290   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
291   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR, byteOffset, bitMask );
292   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
293
294   // Not supported
295   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGB16F, byteOffset, bitMask );
296   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
297   Toolkit::Internal::NPatchBuffer::GetRedOffsetAndMask( Pixel::RGB32F, byteOffset, bitMask );
298   DALI_TEST_CHECK( byteOffset == 0 && bitMask == 0 );
299
300   END_TEST;
301 }
302
303 int UtcDaliAnimatedVectorImageVisualCreateInstancePropertyMap(void)
304 {
305   ToolkitTestApplication application;
306   tet_infoline( "UtcDaliAnimatedVectorImageVisualCreateInstancePropertyMap" );
307
308   Property::Map propertyMap;
309   propertyMap.Add( Toolkit::Visual::Property::TYPE,  DevelVisual::ANIMATED_VECTOR_IMAGE )
310              .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME  );
311
312   // request AnimatedVectorImageVisual with a property map
313   VisualFactory factory = VisualFactory::Get();
314   Visual::Base visual = factory.CreateVisual( propertyMap );
315   Toolkit::Internal::Visual::Base& visualImpl = GetImplementation( visual );
316
317   Property::Map resultMap;
318   visualImpl.CreateInstancePropertyMap( resultMap );
319
320   // check the property values from the returned map from a visual
321   DALI_TEST_CHECK( resultMap.Empty() );   // Now the map is empty
322
323   END_TEST;
324 }
325
326 int UtcDaliAnimatedVectorImageVisualSetProperties(void)
327 {
328   ToolkitTestApplication application;
329   tet_infoline( "UtcDaliAnimatedVectorImageVisualSetProperties" );
330
331   Property::Map propertyMap;
332   propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE )
333              .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME  )
334              .Add( DevelImageVisual::Property::LOOP_COUNT, 3  )
335              .Add( DevelImageVisual::Property::PLAY_RANGE, Vector2( 0.2f, 0.8f )  );
336
337   Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap );
338   Toolkit::Internal::Visual::Base& visualImpl = GetImplementation( visual );
339   DALI_TEST_CHECK( visual );
340
341   DummyControl actor = DummyControl::New( true );
342   DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() );
343   dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
344   actor.SetProperty( Actor::Property::SIZE, Vector2( 200.0f, 200.0f ) );
345   Stage::GetCurrent().Add( actor );
346
347   application.SendNotification();
348   application.Render();
349
350   // renderer is added to actor
351   DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
352   Renderer renderer = actor.GetRendererAt( 0u );
353   DALI_TEST_CHECK( renderer );
354
355   Property::Map propertyMap1;
356   propertyMap1.Add( DevelImageVisual::Property::LOOP_COUNT, 1  )
357               .Add( DevelImageVisual::Property::PLAY_RANGE, Vector2( 0.4f, 0.6f )  );
358
359   visualImpl.SetProperties( propertyMap1 );
360
361   application.SendNotification();
362   application.Render();
363
364   DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
365   renderer = actor.GetRendererAt( 0u );
366   DALI_TEST_CHECK( renderer );
367
368   actor.Unparent( );
369   DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
370
371   END_TEST;
372 }
373
374 int UtcDaliArcVisualCreateInstancePropertyMap(void)
375 {
376   ToolkitTestApplication application;
377   tet_infoline( "UtcDaliArcVisualCreateInstancePropertyMap" );
378
379   Property::Map propertyMap;
380   propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ARC )
381              .Add( DevelArcVisual::Property::THICKNESS, 20.0f );
382
383   // request ArcVisual with a property map
384   VisualFactory factory = VisualFactory::Get();
385   Visual::Base visual = factory.CreateVisual( propertyMap );
386   Toolkit::Internal::Visual::Base& visualImpl = GetImplementation( visual );
387
388   Property::Map resultMap;
389   visualImpl.CreateInstancePropertyMap( resultMap );
390
391   // check the property values from the returned map from a visual
392   DALI_TEST_CHECK( resultMap.Empty() );   // Now the map is empty
393
394   END_TEST;
395 }