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