43caadd2b1b0418174dd782d70fa40f92e03b9aa
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-ControlRenderer.cpp
1 /*
2  * Copyright (c) 2015 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 #include <iostream>
18 #include <stdlib.h>
19 #include <dali-toolkit-test-suite-utils.h>
20 #include <dali/devel-api/rendering/renderer.h>
21 #include <dali/devel-api/rendering/texture-set.h>
22 #include <dali/devel-api/rendering/shader.h>
23 #include <dali-toolkit/devel-api/controls/renderer-factory/renderer-factory.h>
24
25 using namespace Dali;
26 using namespace Dali::Toolkit;
27
28 namespace
29 {
30 const char* TEST_IMAGE_FILE_NAME =  "gallery_image_01.jpg";
31 const char* TEST_NPATCH_FILE_NAME =  "gallery_image_01.9.jpg";
32 const char* TEST_SVG_FILE_NAME = TEST_RESOURCE_DIR "/svg1.svg";
33 const char* TEST_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube.obj";
34 const char* TEST_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal.mtl";
35 const char* TEST_RESOURCE_LOCATION = TEST_RESOURCE_DIR "/";
36 }
37
38 void dali_control_renderer_startup(void)
39 {
40   test_return_value = TET_UNDEF;
41 }
42
43 void dali_control_renderer_cleanup(void)
44 {
45   test_return_value = TET_PASS;
46 }
47
48 int UtcDaliControlRendererCopyAndAssignment(void)
49 {
50   ToolkitTestApplication application;
51   tet_infoline( "UtcDaliControlRendererCopyAndAssignment" );
52
53   RendererFactory factory = RendererFactory::Get();
54   Property::Map propertyMap;
55   propertyMap.Insert("rendererType",  "color");
56   propertyMap.Insert("mixColor",  Color::BLUE);
57   ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap );
58
59   ControlRenderer controlRendererCopy( controlRenderer );
60   DALI_TEST_CHECK(controlRenderer == controlRendererCopy);
61
62   ControlRenderer emptyControlRenderer;
63   ControlRenderer emptyControlRendererCopy( emptyControlRenderer );
64   DALI_TEST_CHECK(emptyControlRenderer == emptyControlRendererCopy);
65
66   ControlRenderer controlRendererEquals;
67   controlRendererEquals = controlRenderer;
68   DALI_TEST_CHECK(controlRenderer == controlRendererEquals);
69
70   ControlRenderer emptyControlRendererEquals;
71   emptyControlRendererEquals = emptyControlRenderer;
72   DALI_TEST_CHECK( emptyControlRenderer == emptyControlRendererEquals );
73
74   //self assignment
75   controlRenderer = controlRenderer;
76   DALI_TEST_CHECK( controlRenderer = controlRendererCopy );
77
78   END_TEST;
79 }
80
81 int UtcDaliControlRendererSetGetDepthIndex(void)
82 {
83   ToolkitTestApplication application;
84   tet_infoline( "UtcDaliControlRendererSetDepthIndex" );
85
86   RendererFactory factory = RendererFactory::Get();
87   Property::Map propertyMap;
88   propertyMap.Insert("rendererType",  "color");
89   propertyMap.Insert("mixColor",  Color::BLUE);
90   ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap );
91
92   controlRenderer.SetDepthIndex( 1.f );
93
94   Actor actor = Actor::New();
95   actor.SetSize(200.f, 200.f);
96   Stage::GetCurrent().Add( actor );
97   controlRenderer.SetOnStage( actor );
98
99   int depthIndex = actor.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
100   DALI_TEST_EQUALS( depthIndex, 1, TEST_LOCATION );
101   DALI_TEST_EQUALS( controlRenderer.GetDepthIndex(), 1.f, TEST_LOCATION );
102
103   controlRenderer.SetDepthIndex( -1.f );
104   depthIndex = actor.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
105   DALI_TEST_EQUALS( depthIndex, -1, TEST_LOCATION );
106   DALI_TEST_EQUALS( controlRenderer.GetDepthIndex(), -1.f, TEST_LOCATION );
107
108   END_TEST;
109 }
110
111 int UtcDaliControlRendererSize(void)
112 {
113   ToolkitTestApplication application;
114   tet_infoline( "UtcDaliControlRendererGetNaturalSize" );
115
116   RendererFactory factory = RendererFactory::Get();
117   Vector2 rendererSize( 20.f, 30.f );
118   Vector2 naturalSize;
119
120   // color renderer
121   Dali::Property::Map map;
122   map[ "rendererType" ] = "color";
123   map[ "mixColor" ] = Color::MAGENTA;
124   ControlRenderer colorRenderer = factory.CreateControlRenderer( map );
125   colorRenderer.SetSize( rendererSize );
126   DALI_TEST_EQUALS( colorRenderer.GetSize(), rendererSize, TEST_LOCATION );
127   colorRenderer.GetNaturalSize(naturalSize);
128   DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
129
130   // image renderer
131   Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
132   ControlRenderer imageRenderer = factory.CreateControlRenderer( image );
133   imageRenderer.SetSize( rendererSize );
134   DALI_TEST_EQUALS( imageRenderer.GetSize(), rendererSize, TEST_LOCATION );
135   imageRenderer.GetNaturalSize(naturalSize);
136   DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 200.f), TEST_LOCATION );
137
138   // n patch renderer
139   TestPlatformAbstraction& platform = application.GetPlatform();
140   Vector2 testSize(80.f, 160.f);
141   platform.SetClosestImageSize(testSize);
142   image = ResourceImage::New(TEST_NPATCH_FILE_NAME);
143   ControlRenderer nPatchRenderer = factory.CreateControlRenderer( image );
144   nPatchRenderer.SetSize( rendererSize );
145   DALI_TEST_EQUALS( nPatchRenderer.GetSize(), rendererSize, TEST_LOCATION );
146   nPatchRenderer.GetNaturalSize(naturalSize);
147   DALI_TEST_EQUALS( naturalSize, testSize, TEST_LOCATION );
148
149   // border renderer
150   float borderSize = 5.f;
151   map.Clear();
152   map[ "rendererType" ] = "border";
153   map[ "borderColor"  ] = Color::RED;
154   map[ "borderSize"   ] = borderSize;
155   ControlRenderer borderRenderer = factory.CreateControlRenderer( map );
156   borderRenderer.SetSize( rendererSize );
157   DALI_TEST_EQUALS( borderRenderer.GetSize(), rendererSize, TEST_LOCATION );
158   borderRenderer.GetNaturalSize(naturalSize);
159   DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
160
161   // gradient renderer
162   Property::Map propertyMap;
163   propertyMap.Insert("rendererType",  "gradient");
164   Vector2 start(-1.f, -1.f);
165   Vector2 end(1.f, 1.f);
166   propertyMap.Insert("startPosition",   start);
167   propertyMap.Insert("endPosition",   end);
168   propertyMap.Insert("stopOffset",   Vector2(0.f, 1.f));
169   Property::Array stopColors;
170   stopColors.PushBack( Color::RED );
171   stopColors.PushBack( Color::GREEN );
172   propertyMap.Insert("stopColor",   stopColors);
173   ControlRenderer gradientRenderer = factory.CreateControlRenderer(propertyMap);
174   gradientRenderer.SetSize( rendererSize );
175   DALI_TEST_EQUALS( gradientRenderer.GetSize(), rendererSize, TEST_LOCATION );
176   gradientRenderer.GetNaturalSize(naturalSize);
177   DALI_TEST_EQUALS( naturalSize, Vector2::ZERO,TEST_LOCATION );
178
179   //svg renderer
180   ControlRenderer svgRenderer = factory.CreateControlRenderer( TEST_SVG_FILE_NAME, ImageDimensions() );
181   svgRenderer.SetSize( rendererSize );
182   DALI_TEST_EQUALS( svgRenderer.GetSize(), rendererSize, TEST_LOCATION );
183   svgRenderer.GetNaturalSize(naturalSize);
184   // TEST_SVG_FILE:
185   //  <svg width="100" height="100">
186   //  <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
187   //  </svg>
188   DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION );
189   END_TEST;
190 }
191
192 int UtcDaliControlRendererSetOnOffStage(void)
193 {
194   ToolkitTestApplication application;
195   tet_infoline( "UtcDaliControlRendererSetDepthIndex" );
196
197   RendererFactory factory = RendererFactory::Get();
198   Property::Map propertyMap;
199   propertyMap.Insert("rendererType",  "color");
200   propertyMap.Insert("mixColor",  Color::BLUE);
201   ControlRenderer controlRenderer = factory.CreateControlRenderer( propertyMap );
202
203   Actor actor = Actor::New();
204   actor.SetSize(200.f, 200.f);
205   Stage::GetCurrent().Add( actor );
206
207   application.SendNotification();
208   application.Render(0);
209   DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
210
211   controlRenderer.SetOnStage( actor );
212   application.SendNotification();
213   application.Render(0);
214   DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
215
216   controlRenderer.SetOffStage( actor );
217   application.SendNotification();
218   application.Render(0);
219   DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
220
221   END_TEST;
222 }
223
224 int UtcDaliControlRendererRemoveAndReset(void)
225 {
226   ToolkitTestApplication application;
227   tet_infoline( "intUtcDaliControlRendererRemoveAndReset" );
228
229   RendererFactory factory = RendererFactory::Get();
230
231   Actor actor = Actor::New();
232   actor.SetSize(200.f, 200.f);
233   Stage::GetCurrent().Add( actor );
234
235   ControlRenderer imageRenderer;
236   // test calling RemoveAndReset with an empty handle
237   try
238   {
239     imageRenderer.RemoveAndReset( actor );
240     tet_result(TET_PASS);
241   }
242   catch (DaliException& exception)
243   {
244     tet_result(TET_FAIL);
245   }
246
247   Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
248   imageRenderer = factory.CreateControlRenderer(image);
249   DALI_TEST_CHECK( imageRenderer );
250
251   imageRenderer.SetOnStage( actor );
252   application.SendNotification();
253   application.Render(0);
254   DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
255
256   imageRenderer.RemoveAndReset( actor );
257   application.SendNotification();
258   application.Render(0);
259   DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); // renderer is removed from actor
260   DALI_TEST_CHECK( !imageRenderer ); // control renderer is reset
261
262   END_TEST;
263 }
264
265 int UtcDaliControlRendererGetPropertyMap1(void)
266 {
267   ToolkitTestApplication application;
268   tet_infoline( "UtcDaliControlRendererGetPropertyMap1: ColorRenderer" );
269
270   RendererFactory factory = RendererFactory::Get();
271   Property::Map propertyMap;
272   propertyMap.Insert("rendererType",  "color");
273   propertyMap.Insert("mixColor",  Color::BLUE);
274   ControlRenderer colorRenderer = factory.CreateControlRenderer( propertyMap );
275
276   Property::Map resultMap;
277   colorRenderer.CreatePropertyMap( resultMap );
278
279   Property::Value* typeValue = resultMap.Find( "rendererType",  Property::STRING );
280   DALI_TEST_CHECK( typeValue );
281   DALI_TEST_CHECK( typeValue->Get<std::string>() == "color" );
282
283   Property::Value* colorValue = resultMap.Find( "mixColor",  Property::VECTOR4 );
284   DALI_TEST_CHECK( colorValue );
285   DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
286
287   // change the blend color
288   Actor actor;
289   colorRenderer.RemoveAndReset( actor );
290   propertyMap["mixColor"] = Color::CYAN;
291   colorRenderer = factory.CreateControlRenderer( propertyMap  );
292   colorRenderer.CreatePropertyMap( resultMap );
293
294   colorValue = resultMap.Find( "mixColor",  Property::VECTOR4 );
295   DALI_TEST_CHECK( colorValue );
296   DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
297
298   END_TEST;
299 }
300
301 int UtcDaliControlRendererGetPropertyMap2(void)
302 {
303   ToolkitTestApplication application;
304   tet_infoline( "UtcDaliControlRendererGetPropertyMap2: BorderRenderer" );
305
306   RendererFactory factory = RendererFactory::Get();
307   Property::Map propertyMap;
308   propertyMap.Insert("rendererType",  "border");
309   propertyMap.Insert("borderColor",  Color::BLUE);
310   propertyMap.Insert("borderSize",  5.f);
311   ControlRenderer borderRenderer = factory.CreateControlRenderer( propertyMap );
312
313   Property::Map resultMap;
314   borderRenderer.CreatePropertyMap( resultMap );
315
316   // check the property values from the returned map from control renderer
317   Property::Value* typeValue = resultMap.Find( "rendererType",  Property::STRING );
318   DALI_TEST_CHECK( typeValue );
319   DALI_TEST_CHECK( typeValue->Get<std::string>() == "border" );
320
321   Property::Value* colorValue = resultMap.Find( "borderColor",  Property::VECTOR4 );
322   DALI_TEST_CHECK( colorValue );
323   DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
324
325   Property::Value* sizeValue = resultMap.Find( "borderSize",  Property::FLOAT );
326   DALI_TEST_CHECK( sizeValue );
327   DALI_TEST_CHECK( sizeValue->Get<float>() == 5.f );
328
329   Property::Map propertyMap1;
330   propertyMap1[ "rendererType" ] = "border";
331   propertyMap1[ "borderColor"  ] = Color::CYAN;
332   propertyMap1[ "borderSize"   ] = 10.0f;
333   borderRenderer = factory.CreateControlRenderer( propertyMap1 );
334   borderRenderer.CreatePropertyMap( resultMap );
335
336   typeValue = resultMap.Find( "rendererType",  Property::STRING );
337   DALI_TEST_CHECK( typeValue );
338   DALI_TEST_CHECK( typeValue->Get<std::string>() == "border" );
339
340   colorValue = resultMap.Find( "borderColor",  Property::VECTOR4 );
341   DALI_TEST_CHECK( colorValue );
342   DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
343
344   colorValue = resultMap.Find( "borderSize",  Property::FLOAT );
345   DALI_TEST_CHECK( colorValue );
346   DALI_TEST_CHECK( colorValue->Get<float>() == 10.f );
347
348   END_TEST;
349 }
350
351 int UtcDaliControlRendererGetPropertyMap3(void)
352 {
353   ToolkitTestApplication application;
354   tet_infoline( "UtcDaliControlRendererGetPropertyMap3: linear GradientRenderer" );
355
356   RendererFactory factory = RendererFactory::Get();
357   DALI_TEST_CHECK( factory );
358
359   Property::Map propertyMap;
360   propertyMap.Insert("rendererType",  "gradient");
361
362   Vector2 start(-1.f, -1.f);
363   Vector2 end(1.f, 1.f);
364   propertyMap.Insert("startPosition",   start);
365   propertyMap.Insert("endPosition",   end);
366   propertyMap.Insert("spreadMethod",   "repeat");
367
368   propertyMap.Insert("stopOffset",   Vector2(0.2f, 0.8f));
369
370   Property::Array stopColors;
371   stopColors.PushBack( Color::RED );
372   stopColors.PushBack( Color::GREEN );
373   propertyMap.Insert("stopColor",   stopColors);
374
375   ControlRenderer gradientRenderer = factory.CreateControlRenderer(propertyMap);
376
377   Property::Map resultMap;
378   gradientRenderer.CreatePropertyMap( resultMap );
379
380   // check the property values from the returned map from control renderer
381   Property::Value* value = resultMap.Find( "rendererType",  Property::STRING );
382   DALI_TEST_CHECK( value );
383   DALI_TEST_CHECK( value->Get<std::string>() == "gradient" );
384
385   value = resultMap.Find( "units",  Property::STRING );
386   DALI_TEST_CHECK( value );
387   DALI_TEST_CHECK( value->Get<std::string>() == "objectBoundingBox" );
388
389   value = resultMap.Find( "spreadMethod",   Property::STRING );
390   DALI_TEST_CHECK( value );
391   DALI_TEST_CHECK( value->Get<std::string>() == "repeat" );
392
393   value = resultMap.Find( "startPosition",   Property::VECTOR2 );
394   DALI_TEST_CHECK( value );
395   DALI_TEST_EQUALS( value->Get<Vector2>(), start , Math::MACHINE_EPSILON_100, TEST_LOCATION );
396
397   value = resultMap.Find( "endPosition",   Property::VECTOR2 );
398   DALI_TEST_CHECK( value );
399   DALI_TEST_EQUALS( value->Get<Vector2>(), end , Math::MACHINE_EPSILON_100, TEST_LOCATION );
400
401   value = resultMap.Find( "stopOffset",   Property::ARRAY );
402   DALI_TEST_CHECK( value );
403   Property::Array* offsetArray = value->GetArray();
404   DALI_TEST_CHECK( offsetArray->Count() == 2 );
405   DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.2f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
406   DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.8f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
407
408   value = resultMap.Find( "stopColor",   Property::ARRAY );
409   DALI_TEST_CHECK( value );
410   Property::Array* colorArray = value->GetArray();
411   DALI_TEST_CHECK( colorArray->Count() == 2 );
412   DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
413   DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
414
415   END_TEST;
416 }
417
418 int UtcDaliControlRendererGetPropertyMap4(void)
419 {
420   ToolkitTestApplication application;
421   tet_infoline( "UtcDaliControlRendererGetPropertyMap4: radial GradientRenderer" );
422
423   RendererFactory factory = RendererFactory::Get();
424   DALI_TEST_CHECK( factory );
425
426   Property::Map propertyMap;
427   propertyMap.Insert("rendererType",  "gradient");
428
429   Vector2 center(100.f, 100.f);
430   float radius = 100.f;
431   propertyMap.Insert("units",  "userSpace");
432   propertyMap.Insert("center",  center);
433   propertyMap.Insert("radius",  radius);
434   propertyMap.Insert("stopOffset",   Vector3(0.1f, 0.3f, 1.1f));
435
436   Property::Array stopColors;
437   stopColors.PushBack( Color::RED );
438   stopColors.PushBack( Color::BLACK );
439   stopColors.PushBack( Color::GREEN );
440   propertyMap.Insert("stopColor",   stopColors);
441
442   ControlRenderer gradientRenderer = factory.CreateControlRenderer(propertyMap);
443   DALI_TEST_CHECK( gradientRenderer );
444
445   Property::Map resultMap;
446   gradientRenderer.CreatePropertyMap( resultMap );
447
448   // check the property values from the returned map from control renderer
449   Property::Value* value = resultMap.Find( "rendererType",  Property::STRING );
450   DALI_TEST_CHECK( value );
451   DALI_TEST_CHECK( value->Get<std::string>() == "gradient" );
452
453   value = resultMap.Find( "units",  Property::STRING );
454   DALI_TEST_CHECK( value );
455   DALI_TEST_CHECK( value->Get<std::string>() == "userSpace" );
456
457   value = resultMap.Find( "spreadMethod",   Property::STRING );
458   DALI_TEST_CHECK( value );
459   DALI_TEST_CHECK( value->Get<std::string>() == "pad" );
460
461   value = resultMap.Find( "center",  Property::VECTOR2 );
462   DALI_TEST_CHECK( value );
463   DALI_TEST_EQUALS( value->Get<Vector2>(), center , Math::MACHINE_EPSILON_100, TEST_LOCATION );
464
465   value = resultMap.Find( "radius",  Property::FLOAT );
466   DALI_TEST_CHECK( value );
467   DALI_TEST_EQUALS( value->Get<float>(), radius , Math::MACHINE_EPSILON_100, TEST_LOCATION );
468
469   value = resultMap.Find( "stopOffset",   Property::ARRAY );
470   DALI_TEST_CHECK( value );
471   Property::Array* offsetArray = value->GetArray();
472   DALI_TEST_CHECK( offsetArray->Count() == 3 );
473   DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.1f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
474   DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.3f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
475   // any stop value will be clamped to [0.0, 1.0];
476   DALI_TEST_EQUALS( offsetArray->GetElementAt(2).Get<float>(), 1.0f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
477
478   value = resultMap.Find( "stopColor",   Property::ARRAY );
479   DALI_TEST_CHECK( value );
480   Property::Array* colorArray = value->GetArray();
481   DALI_TEST_CHECK( colorArray->Count() == 3 );
482   DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
483   DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::BLACK , Math::MACHINE_EPSILON_100, TEST_LOCATION );
484   DALI_TEST_EQUALS( colorArray->GetElementAt(2).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
485
486   END_TEST;
487 }
488
489 int UtcDaliControlRendererGetPropertyMap5(void)
490 {
491   ToolkitTestApplication application;
492   tet_infoline( "UtcDaliControlRendererGetPropertyMap5: ImageRenderer" );
493
494   RendererFactory factory = RendererFactory::Get();
495   Property::Map propertyMap;
496   propertyMap.Insert( "rendererType",  "image" );
497   propertyMap.Insert( "url",  TEST_IMAGE_FILE_NAME );
498   propertyMap.Insert( "desiredWidth",   20 );
499   propertyMap.Insert( "desiredHeight",   30 );
500   propertyMap.Insert( "fittingMode",   "FIT_HEIGHT" );
501   propertyMap.Insert( "samplingMode",   "BOX_THEN_NEAREST" );
502   propertyMap.Insert( "synchronousLoading",   true );
503
504   ControlRenderer imageRenderer = factory.CreateControlRenderer(propertyMap);
505   DALI_TEST_CHECK( imageRenderer );
506
507   Property::Map resultMap;
508   imageRenderer.CreatePropertyMap( resultMap );
509
510   // check the property values from the returned map from control renderer
511   Property::Value* value = resultMap.Find( "rendererType",  Property::STRING );
512   DALI_TEST_CHECK( value );
513   DALI_TEST_CHECK( value->Get<std::string>() == "image" );
514
515   value = resultMap.Find( "url",  Property::STRING );
516   DALI_TEST_CHECK( value );
517   DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
518
519   value = resultMap.Find( "fittingMode",   Property::STRING );
520   DALI_TEST_CHECK( value );
521   DALI_TEST_CHECK( value->Get<std::string>() == "FIT_HEIGHT" );
522
523   value = resultMap.Find( "samplingMode",   Property::STRING );
524   DALI_TEST_CHECK( value );
525   DALI_TEST_CHECK( value->Get<std::string>() == "BOX_THEN_NEAREST" );
526
527   value = resultMap.Find( "desiredWidth",   Property::INTEGER );
528   DALI_TEST_CHECK( value );
529   DALI_TEST_CHECK( value->Get<int>() == 20 );
530
531   value = resultMap.Find( "desiredHeight",   Property::INTEGER );
532   DALI_TEST_CHECK( value );
533   DALI_TEST_CHECK( value->Get<int>() == 30 );
534
535   value = resultMap.Find( "synchronousLoading",   Property::BOOLEAN );
536   DALI_TEST_CHECK( value );
537   DALI_TEST_CHECK( value->Get<bool>() == true );
538
539   // Get an image renderer with an image handle, and test the default property values
540   Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
541   imageRenderer = factory.CreateControlRenderer(image);
542   imageRenderer.CreatePropertyMap( resultMap );
543
544   value = resultMap.Find( "rendererType",  Property::STRING );
545   DALI_TEST_CHECK( value );
546   DALI_TEST_CHECK( value->Get<std::string>() == "image" );
547
548   value = resultMap.Find( "url",  Property::STRING );
549   DALI_TEST_CHECK( value );
550   DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
551
552   value = resultMap.Find( "fittingMode",   Property::STRING );
553   DALI_TEST_CHECK( value );
554   DALI_TEST_CHECK( value->Get<std::string>() == "SHRINK_TO_FIT" );
555
556   value = resultMap.Find( "samplingMode",   Property::STRING );
557   DALI_TEST_CHECK( value );
558   DALI_TEST_CHECK( value->Get<std::string>() == "BOX" );
559
560   value = resultMap.Find( "desiredWidth",   Property::INTEGER );
561   DALI_TEST_CHECK( value );
562   DALI_TEST_CHECK( value->Get<int>() == 100 );
563
564   value = resultMap.Find( "desiredHeight",   Property::INTEGER );
565   DALI_TEST_CHECK( value );
566   DALI_TEST_CHECK( value->Get<int>() == 200 );
567
568   value = resultMap.Find( "synchronousLoading",   Property::BOOLEAN );
569   DALI_TEST_CHECK( value );
570   DALI_TEST_CHECK( value->Get<bool>() == false );
571
572   END_TEST;
573 }
574
575 int UtcDaliControlRendererGetPropertyMap6(void)
576 {
577   ToolkitTestApplication application;
578   tet_infoline( "UtcDaliControlRendererGetPropertyMap6: NPatchRenderer" );
579
580   RendererFactory factory = RendererFactory::Get();
581   Property::Map propertyMap;
582   propertyMap.Insert( "rendererType",  "image" );
583   propertyMap.Insert( "url",  TEST_NPATCH_FILE_NAME );
584   propertyMap.Insert( "borderOnly",  true );
585   ControlRenderer nPatchRenderer = factory.CreateControlRenderer( propertyMap );
586
587   Property::Map resultMap;
588   nPatchRenderer.CreatePropertyMap( resultMap );
589
590   // check the property values from the returned map from control renderer
591   Property::Value* value = resultMap.Find( "rendererType",  Property::STRING );
592   DALI_TEST_CHECK( value );
593   DALI_TEST_CHECK( value->Get<std::string>() == "image" );
594
595   value = resultMap.Find( "url",  Property::STRING );
596   DALI_TEST_CHECK( value );
597   DALI_TEST_CHECK( value->Get<std::string>() == TEST_NPATCH_FILE_NAME );
598
599   value = resultMap.Find( "borderOnly",  Property::BOOLEAN );
600   DALI_TEST_CHECK( value );
601   DALI_TEST_CHECK( value->Get<bool>() );
602
603   END_TEST;
604 }
605
606 int UtcDaliControlRendererGetPropertyMap7(void)
607 {
608   ToolkitTestApplication application;
609   tet_infoline( "UtcDaliControlRendererGetPropertyMap7: SvgRenderer" );
610
611   // request SvgRenderer with a property map
612   RendererFactory factory = RendererFactory::Get();
613   Property::Map propertyMap;
614   propertyMap.Insert( "rendererType",  "image" );
615   propertyMap.Insert( "url",  TEST_SVG_FILE_NAME );
616   ControlRenderer svgRenderer = factory.CreateControlRenderer( propertyMap );
617
618   Property::Map resultMap;
619   svgRenderer.CreatePropertyMap( resultMap );
620   // check the property values from the returned map from control renderer
621   Property::Value* value = resultMap.Find( "rendererType",  Property::STRING );
622   DALI_TEST_CHECK( value );
623   DALI_TEST_CHECK( value->Get<std::string>() == "image" );
624
625   value = resultMap.Find( "url",  Property::STRING );
626   DALI_TEST_CHECK( value );
627   DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
628
629   // request SvgRenderer with an URL
630   ControlRenderer svgRenderer2 = factory.CreateControlRenderer( TEST_SVG_FILE_NAME, ImageDimensions() );
631   resultMap.Clear();
632   svgRenderer2.CreatePropertyMap( resultMap );
633   // check the property values from the returned map from control renderer
634   value = resultMap.Find( "rendererType",  Property::STRING );
635   DALI_TEST_CHECK( value );
636   DALI_TEST_CHECK( value->Get<std::string>() == "image" );
637
638   value = resultMap.Find( "url",  Property::STRING );
639   DALI_TEST_CHECK( value );
640   DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
641
642   END_TEST;
643 }
644
645 //Mesh renderer
646 int UtcDaliControlRendererGetPropertyMap8(void)
647 {
648   ToolkitTestApplication application;
649   tet_infoline( "UtcDaliControlRendererGetPropertyMap8: MeshRenderer" );
650
651   //Request MeshRenderer using a property map.
652   RendererFactory factory = RendererFactory::Get();
653   Property::Map propertyMap;
654   propertyMap.Insert( "rendererType", "mesh" );
655   propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME );
656   propertyMap.Insert( "materialUrl", TEST_MTL_FILE_NAME );
657   propertyMap.Insert( "texturesPath", TEST_RESOURCE_LOCATION );
658   propertyMap.Insert( "shaderType", "textureless" );
659   ControlRenderer meshRenderer = factory.CreateControlRenderer( propertyMap );
660
661   Property::Map resultMap;
662   meshRenderer.CreatePropertyMap( resultMap );
663
664   //Check values in the result map are identical to the initial map's values.
665   Property::Value* value = resultMap.Find( "rendererType", Property::STRING );
666   DALI_TEST_CHECK( value );
667   DALI_TEST_CHECK( value->Get<std::string>() == "mesh" );
668
669   value = resultMap.Find( "objectUrl", Property::STRING );
670   DALI_TEST_CHECK( value );
671   DALI_TEST_CHECK( value->Get<std::string>() == TEST_OBJ_FILE_NAME );
672
673   value = resultMap.Find( "materialUrl", Property::STRING );
674   DALI_TEST_CHECK( value );
675   DALI_TEST_CHECK( value->Get<std::string>() == TEST_MTL_FILE_NAME );
676
677   value = resultMap.Find( "texturesPath", Property::STRING );
678   DALI_TEST_CHECK( value );
679   DALI_TEST_CHECK( value->Get<std::string>() == TEST_RESOURCE_LOCATION );
680
681   value = resultMap.Find( "shaderType", Property::STRING );
682   DALI_TEST_CHECK( value );
683   DALI_TEST_CHECK( value->Get<std::string>() == "textureless" );
684
685   END_TEST;
686 }