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