Add SetProperty and GetProperty to Visuals.
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-Visual.cpp
1 /*
2  * Copyright (c) 2016 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/public-api/rendering/renderer.h>
21 #include <dali/public-api/rendering/texture-set.h>
22 #include <dali/public-api/rendering/shader.h>
23 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
24 #include <dali-toolkit/dali-toolkit.h>
25
26 using namespace Dali;
27 using namespace Dali::Toolkit;
28
29 namespace
30 {
31 const char* TEST_IMAGE_FILE_NAME =  "gallery_image_01.jpg";
32 const char* TEST_NPATCH_FILE_NAME =  "gallery_image_01.9.jpg";
33 const char* TEST_SVG_FILE_NAME = TEST_RESOURCE_DIR "/svg1.svg";
34 const char* TEST_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube.obj";
35 const char* TEST_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal.mtl";
36 const char* TEST_RESOURCE_LOCATION = TEST_RESOURCE_DIR "/";
37 }
38
39 void dali_visual_startup(void)
40 {
41   test_return_value = TET_UNDEF;
42 }
43
44 void dali_visual_cleanup(void)
45 {
46   test_return_value = TET_PASS;
47 }
48
49 int UtcDaliVisualCopyAndAssignment(void)
50 {
51   ToolkitTestApplication application;
52   tet_infoline( "UtcDaliVisualCopyAndAssignment" );
53
54   VisualFactory factory = VisualFactory::Get();
55   Property::Map propertyMap;
56   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
57   propertyMap.Insert(ColorVisual::Property::MIX_COLOR,  Color::BLUE);
58   Visual::Base visual = factory.CreateVisual( propertyMap );
59
60   Visual::Base visualCopy( visual );
61   DALI_TEST_CHECK(visual == visualCopy);
62
63   Visual::Base emptyVisual;
64   Visual::Base emptyVisualCopy( emptyVisual );
65   DALI_TEST_CHECK(emptyVisual == emptyVisualCopy);
66
67   Visual::Base visualEquals;
68   visualEquals = visual;
69   DALI_TEST_CHECK(visual == visualEquals);
70
71   Visual::Base emptyVisualEquals;
72   emptyVisualEquals = emptyVisual;
73   DALI_TEST_CHECK( emptyVisual == emptyVisualEquals );
74
75   //self assignment
76   visual = visual;
77   DALI_TEST_CHECK( visual = visualCopy );
78
79   END_TEST;
80 }
81
82 int UtcDaliVisualSetGetDepthIndex(void)
83 {
84   ToolkitTestApplication application;
85   tet_infoline( "UtcDaliVisualSetDepthIndex" );
86
87   VisualFactory factory = VisualFactory::Get();
88   Property::Map propertyMap;
89   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
90   propertyMap.Insert(ColorVisual::Property::MIX_COLOR,  Color::BLUE);
91   Visual::Base visual = factory.CreateVisual( propertyMap );
92
93   visual.SetDepthIndex( 1.f );
94
95   Actor actor = Actor::New();
96   actor.SetSize(200.f, 200.f);
97   Stage::GetCurrent().Add( actor );
98   visual.SetOnStage( actor );
99
100   int depthIndex = actor.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
101   DALI_TEST_EQUALS( depthIndex, 1, TEST_LOCATION );
102   DALI_TEST_EQUALS( visual.GetDepthIndex(), 1.f, TEST_LOCATION );
103
104   visual.SetDepthIndex( -1.f );
105   depthIndex = actor.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
106   DALI_TEST_EQUALS( depthIndex, -1, TEST_LOCATION );
107   DALI_TEST_EQUALS( visual.GetDepthIndex(), -1.f, TEST_LOCATION );
108
109   END_TEST;
110 }
111
112 int UtcDaliVisualSize(void)
113 {
114   ToolkitTestApplication application;
115   tet_infoline( "UtcDaliVisualGetNaturalSize" );
116
117   VisualFactory factory = VisualFactory::Get();
118   Vector2 visualSize( 20.f, 30.f );
119   Vector2 naturalSize;
120
121   // color colorVisual
122   Dali::Property::Map map;
123   map[ Visual::Property::TYPE ] = Visual::COLOR;
124   map[ ColorVisual::Property::MIX_COLOR ] = Color::MAGENTA;
125   Visual::Base colorVisual = factory.CreateVisual( map );
126   colorVisual.SetSize( visualSize );
127   DALI_TEST_EQUALS( colorVisual.GetSize(), visualSize, TEST_LOCATION );
128   colorVisual.GetNaturalSize(naturalSize);
129   DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
130
131   // image visual
132   Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
133   Visual::Base imageVisual = factory.CreateVisual( image );
134   imageVisual.SetSize( visualSize );
135   DALI_TEST_EQUALS( imageVisual.GetSize(), visualSize, TEST_LOCATION );
136   imageVisual.GetNaturalSize(naturalSize);
137   DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 200.f), TEST_LOCATION );
138
139   // n patch visual
140   TestPlatformAbstraction& platform = application.GetPlatform();
141   Vector2 testSize(80.f, 160.f);
142   platform.SetClosestImageSize(testSize);
143   image = ResourceImage::New(TEST_NPATCH_FILE_NAME);
144   Visual::Base nPatchVisual = factory.CreateVisual( image );
145   nPatchVisual.SetSize( visualSize );
146   DALI_TEST_EQUALS( nPatchVisual.GetSize(), visualSize, TEST_LOCATION );
147   nPatchVisual.GetNaturalSize(naturalSize);
148   DALI_TEST_EQUALS( naturalSize, testSize, TEST_LOCATION );
149
150   // border visual
151   float borderSize = 5.f;
152   map.Clear();
153   map[ Visual::Property::TYPE ] = Visual::BORDER;
154   map[ BorderVisual::Property::COLOR  ] = Color::RED;
155   map[ BorderVisual::Property::SIZE   ] = borderSize;
156   Visual::Base borderVisual = factory.CreateVisual( map );
157   borderVisual.SetSize( visualSize );
158   DALI_TEST_EQUALS( borderVisual.GetSize(), visualSize, TEST_LOCATION );
159   borderVisual.GetNaturalSize(naturalSize);
160   DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
161
162   // gradient gradientVisual
163   Property::Map propertyMap;
164   propertyMap.Insert(Visual::Property::TYPE,  Visual::GRADIENT);
165   Vector2 start(-1.f, -1.f);
166   Vector2 end(1.f, 1.f);
167   propertyMap.Insert(GradientVisual::Property::START_POSITION,   start);
168   propertyMap.Insert(GradientVisual::Property::END_POSITION,   end);
169   propertyMap.Insert(GradientVisual::Property::STOP_OFFSET,   Vector2(0.f, 1.f));
170   Property::Array stopColors;
171   stopColors.PushBack( Color::RED );
172   stopColors.PushBack( Color::GREEN );
173   propertyMap.Insert(GradientVisual::Property::STOP_COLOR,   stopColors);
174   Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
175   gradientVisual.SetSize( visualSize );
176   DALI_TEST_EQUALS( gradientVisual.GetSize(), visualSize, TEST_LOCATION );
177   gradientVisual.GetNaturalSize(naturalSize);
178   DALI_TEST_EQUALS( naturalSize, Vector2::ZERO,TEST_LOCATION );
179
180   // svg visual
181   Visual::Base svgVisual = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
182   svgVisual.SetSize( visualSize );
183   DALI_TEST_EQUALS( svgVisual.GetSize(), visualSize, TEST_LOCATION );
184   svgVisual.GetNaturalSize(naturalSize);
185   // TEST_SVG_FILE:
186   //  <svg width="100" height="100">
187   //  <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
188   //  </svg>
189   DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION );
190
191   // Batch Image visual
192   propertyMap.Clear();
193   propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
194   propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
195   propertyMap.Insert( ImageVisual::Property::BATCHING_ENABLED, true );
196   Visual::Base batchImageVisual = factory.CreateVisual( propertyMap );
197   batchImageVisual.SetSize( visualSize );
198   DALI_TEST_EQUALS( batchImageVisual.GetSize(), visualSize, TEST_LOCATION );
199   batchImageVisual.GetNaturalSize( naturalSize );
200   DALI_TEST_EQUALS( naturalSize, Vector2( 80.0f, 160.0f ), TEST_LOCATION );
201
202   END_TEST;
203 }
204
205 int UtcDaliVisualSetOnOffStage(void)
206 {
207   ToolkitTestApplication application;
208   tet_infoline( "UtcDaliVisualSetDepthIndex" );
209
210   VisualFactory factory = VisualFactory::Get();
211   Property::Map propertyMap;
212   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
213   propertyMap.Insert(ColorVisual::Property::MIX_COLOR,  Color::BLUE);
214   Visual::Base visual = factory.CreateVisual( propertyMap );
215
216   Actor actor = Actor::New();
217   actor.SetSize(200.f, 200.f);
218   Stage::GetCurrent().Add( actor );
219
220   application.SendNotification();
221   application.Render(0);
222   DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
223
224   visual.SetOnStage( actor );
225   application.SendNotification();
226   application.Render(0);
227   DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
228
229   visual.SetOffStage( actor );
230   application.SendNotification();
231   application.Render(0);
232   DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
233
234   END_TEST;
235 }
236
237 int UtcDaliVisualRemoveAndReset(void)
238 {
239   ToolkitTestApplication application;
240   tet_infoline( "intUtcDaliVisualRemoveAndReset" );
241
242   VisualFactory factory = VisualFactory::Get();
243
244   Actor actor = Actor::New();
245   actor.SetSize(200.f, 200.f);
246   Stage::GetCurrent().Add( actor );
247
248   Visual::Base imageVisual;
249   // test calling RemoveAndReset with an empty handle
250   try
251   {
252     imageVisual.RemoveAndReset( actor );
253     tet_result(TET_PASS);
254   }
255   catch (DaliException& exception)
256   {
257     tet_result(TET_FAIL);
258   }
259
260   Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
261   imageVisual = factory.CreateVisual(image);
262   DALI_TEST_CHECK( imageVisual );
263
264   imageVisual.SetOnStage( actor );
265   application.SendNotification();
266   application.Render(0);
267   DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
268
269   imageVisual.RemoveAndReset( actor );
270   application.SendNotification();
271   application.Render(0);
272   DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); // visual is removed from actor
273   DALI_TEST_CHECK( !imageVisual ); // visual is reset
274
275   END_TEST;
276 }
277
278 int UtcDaliVisualGetPropertyMap1(void)
279 {
280   ToolkitTestApplication application;
281   tet_infoline( "UtcDaliVisualGetPropertyMap1: ColorVisual" );
282
283   VisualFactory factory = VisualFactory::Get();
284   Property::Map propertyMap;
285   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
286   propertyMap.Insert(ColorVisual::Property::MIX_COLOR,  Color::BLUE);
287   Visual::Base colorVisual = factory.CreateVisual( propertyMap );
288
289   Property::Map resultMap;
290   colorVisual.CreatePropertyMap( resultMap );
291
292   Property::Value* typeValue = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
293   DALI_TEST_CHECK( typeValue );
294   DALI_TEST_CHECK( typeValue->Get<int>() == Visual::COLOR );
295
296   Property::Value* colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR,  Property::VECTOR4 );
297   DALI_TEST_CHECK( colorValue );
298   DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
299
300   // change the blend color
301   Actor actor;
302   colorVisual.RemoveAndReset( actor );
303   propertyMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN;
304   colorVisual = factory.CreateVisual( propertyMap  );
305   colorVisual.CreatePropertyMap( resultMap );
306
307   colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR,  Property::VECTOR4 );
308   DALI_TEST_CHECK( colorValue );
309   DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
310
311   // Test the properties. TODO: to be completed.
312   colorVisual.SetProperty( ColorVisual::Property::MIX_COLOR, Color::RED );
313   Property::Value value = colorVisual.GetProperty( ColorVisual::Property::MIX_COLOR );
314
315   END_TEST;
316 }
317
318 int UtcDaliVisualGetPropertyMap2(void)
319 {
320   ToolkitTestApplication application;
321   tet_infoline( "UtcDaliVisualGetPropertyMap2: BorderVisual" );
322
323   VisualFactory factory = VisualFactory::Get();
324   Property::Map propertyMap;
325   propertyMap.Insert(Visual::Property::TYPE,  Visual::BORDER);
326   propertyMap.Insert(BorderVisual::Property::COLOR,  Color::BLUE);
327   propertyMap.Insert(BorderVisual::Property::SIZE,  5.f);
328   Visual::Base borderVisual = factory.CreateVisual( propertyMap );
329
330   Property::Map resultMap;
331   borderVisual.CreatePropertyMap( resultMap );
332
333   // check the property values from the returned map from visual
334   Property::Value* typeValue = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
335   DALI_TEST_CHECK( typeValue );
336   DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
337
338   Property::Value* colorValue = resultMap.Find( BorderVisual::Property::COLOR,  Property::VECTOR4 );
339   DALI_TEST_CHECK( colorValue );
340   DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
341
342   Property::Value* sizeValue = resultMap.Find( BorderVisual::Property::SIZE,  Property::FLOAT );
343   DALI_TEST_CHECK( sizeValue );
344   DALI_TEST_CHECK( sizeValue->Get<float>() == 5.f );
345
346   Property::Map propertyMap1;
347   propertyMap1[ Visual::Property::TYPE ] = Visual::BORDER;
348   propertyMap1[ BorderVisual::Property::COLOR  ] = Color::CYAN;
349   propertyMap1[ BorderVisual::Property::SIZE   ] = 10.0f;
350   borderVisual = factory.CreateVisual( propertyMap1 );
351   borderVisual.CreatePropertyMap( resultMap );
352
353   typeValue = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
354   DALI_TEST_CHECK( typeValue );
355   DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
356
357   colorValue = resultMap.Find( BorderVisual::Property::COLOR,  Property::VECTOR4 );
358   DALI_TEST_CHECK( colorValue );
359   DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
360
361   colorValue = resultMap.Find( BorderVisual::Property::SIZE,  Property::FLOAT );
362   DALI_TEST_CHECK( colorValue );
363   DALI_TEST_CHECK( colorValue->Get<float>() == 10.f );
364
365   // Test the properties. TODO: to be completed.
366   borderVisual.SetProperty( BorderVisual::Property::COLOR, Color::RED );
367   Property::Value value = borderVisual.GetProperty( BorderVisual::Property::COLOR );
368
369   END_TEST;
370 }
371
372 int UtcDaliVisualGetPropertyMap3(void)
373 {
374   ToolkitTestApplication application;
375   tet_infoline( "UtcDaliVisualGetPropertyMap3: linear GradientVisual" );
376
377   VisualFactory factory = VisualFactory::Get();
378   DALI_TEST_CHECK( factory );
379
380   Property::Map propertyMap;
381   propertyMap.Insert(Visual::Property::TYPE,  Visual::GRADIENT);
382
383   Vector2 start(-1.f, -1.f);
384   Vector2 end(1.f, 1.f);
385   propertyMap.Insert(GradientVisual::Property::START_POSITION, start);
386   propertyMap.Insert(GradientVisual::Property::END_POSITION, end);
387   propertyMap.Insert(GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT);
388
389   propertyMap.Insert(GradientVisual::Property::STOP_OFFSET,   Vector2(0.2f, 0.8f));
390
391   Property::Array stopColors;
392   stopColors.PushBack( Color::RED );
393   stopColors.PushBack( Color::GREEN );
394   propertyMap.Insert(GradientVisual::Property::STOP_COLOR,   stopColors);
395
396   Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
397
398   Property::Map resultMap;
399   gradientVisual.CreatePropertyMap( resultMap );
400
401   // check the property values from the returned map from visual
402   Property::Value* value = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
403   DALI_TEST_CHECK( value );
404   DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
405
406   value = resultMap.Find( GradientVisual::Property::UNITS,  Property::INTEGER );
407   DALI_TEST_CHECK( value );
408   DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::OBJECT_BOUNDING_BOX );
409
410   value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD,   Property::INTEGER );
411   DALI_TEST_CHECK( value );
412   DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::REPEAT );
413
414   value = resultMap.Find( GradientVisual::Property::START_POSITION,   Property::VECTOR2 );
415   DALI_TEST_CHECK( value );
416   DALI_TEST_EQUALS( value->Get<Vector2>(), start , Math::MACHINE_EPSILON_100, TEST_LOCATION );
417
418   value = resultMap.Find( GradientVisual::Property::END_POSITION,   Property::VECTOR2 );
419   DALI_TEST_CHECK( value );
420   DALI_TEST_EQUALS( value->Get<Vector2>(), end , Math::MACHINE_EPSILON_100, TEST_LOCATION );
421
422   value = resultMap.Find( GradientVisual::Property::STOP_OFFSET,   Property::ARRAY );
423   DALI_TEST_CHECK( value );
424   Property::Array* offsetArray = value->GetArray();
425   DALI_TEST_CHECK( offsetArray->Count() == 2 );
426   DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.2f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
427   DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.8f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
428
429   value = resultMap.Find( GradientVisual::Property::STOP_COLOR,   Property::ARRAY );
430   DALI_TEST_CHECK( value );
431   Property::Array* colorArray = value->GetArray();
432   DALI_TEST_CHECK( colorArray->Count() == 2 );
433   DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
434   DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
435
436   // Test the properties. TODO: to be completed.
437   gradientVisual.SetProperty( GradientVisual::Property::STOP_COLOR, Color::RED );
438   Property::Value gradientValue = gradientVisual.GetProperty( GradientVisual::Property::STOP_COLOR );
439
440   END_TEST;
441 }
442
443 int UtcDaliVisualGetPropertyMap4(void)
444 {
445   ToolkitTestApplication application;
446   tet_infoline( "UtcDaliVisualGetPropertyMap4: radial GradientVisual" );
447
448   VisualFactory factory = VisualFactory::Get();
449   DALI_TEST_CHECK( factory );
450
451   Property::Map propertyMap;
452   propertyMap.Insert(Visual::Property::TYPE,  Visual::GRADIENT);
453
454   Vector2 center(100.f, 100.f);
455   float radius = 100.f;
456   propertyMap.Insert(GradientVisual::Property::UNITS,  GradientVisual::Units::USER_SPACE);
457   propertyMap.Insert(GradientVisual::Property::CENTER,  center);
458   propertyMap.Insert(GradientVisual::Property::RADIUS,  radius);
459   propertyMap.Insert(GradientVisual::Property::STOP_OFFSET,   Vector3(0.1f, 0.3f, 1.1f));
460
461   Property::Array stopColors;
462   stopColors.PushBack( Color::RED );
463   stopColors.PushBack( Color::BLACK );
464   stopColors.PushBack( Color::GREEN );
465   propertyMap.Insert(GradientVisual::Property::STOP_COLOR,   stopColors);
466
467   Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
468   DALI_TEST_CHECK( gradientVisual );
469
470   Property::Map resultMap;
471   gradientVisual.CreatePropertyMap( resultMap );
472
473   // check the property values from the returned map from visual
474   Property::Value* value = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
475   DALI_TEST_CHECK( value );
476   DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
477
478   value = resultMap.Find( GradientVisual::Property::UNITS,  Property::INTEGER );
479   DALI_TEST_CHECK( value );
480   DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::USER_SPACE );
481
482   value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD,   Property::INTEGER );
483   DALI_TEST_CHECK( value );
484   DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::PAD );
485
486   value = resultMap.Find( GradientVisual::Property::CENTER,  Property::VECTOR2 );
487   DALI_TEST_CHECK( value );
488   DALI_TEST_EQUALS( value->Get<Vector2>(), center , Math::MACHINE_EPSILON_100, TEST_LOCATION );
489
490   value = resultMap.Find( GradientVisual::Property::RADIUS,  Property::FLOAT );
491   DALI_TEST_CHECK( value );
492   DALI_TEST_EQUALS( value->Get<float>(), radius , Math::MACHINE_EPSILON_100, TEST_LOCATION );
493
494   value = resultMap.Find( GradientVisual::Property::STOP_OFFSET,   Property::ARRAY );
495   DALI_TEST_CHECK( value );
496   Property::Array* offsetArray = value->GetArray();
497   DALI_TEST_CHECK( offsetArray->Count() == 3 );
498   DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.1f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
499   DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.3f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
500   // any stop value will be clamped to [0.0, 1.0];
501   DALI_TEST_EQUALS( offsetArray->GetElementAt(2).Get<float>(), 1.0f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
502
503   value = resultMap.Find( GradientVisual::Property::STOP_COLOR,   Property::ARRAY );
504   DALI_TEST_CHECK( value );
505   Property::Array* colorArray = value->GetArray();
506   DALI_TEST_CHECK( colorArray->Count() == 3 );
507   DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
508   DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::BLACK , Math::MACHINE_EPSILON_100, TEST_LOCATION );
509   DALI_TEST_EQUALS( colorArray->GetElementAt(2).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
510
511   END_TEST;
512 }
513
514 int UtcDaliVisualGetPropertyMap5(void)
515 {
516   ToolkitTestApplication application;
517   tet_infoline( "UtcDaliVisualGetPropertyMap5: ImageVisual" );
518
519   VisualFactory factory = VisualFactory::Get();
520   Property::Map propertyMap;
521   propertyMap.Insert( Visual::Property::TYPE,  Visual::IMAGE );
522   propertyMap.Insert( ImageVisual::Property::URL,  TEST_IMAGE_FILE_NAME );
523   propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH,   20 );
524   propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT,   30 );
525   propertyMap.Insert( ImageVisual::Property::FITTING_MODE,   FittingMode::FIT_HEIGHT );
526   propertyMap.Insert( ImageVisual::Property::SAMPLING_MODE,   SamplingMode::BOX_THEN_NEAREST );
527   propertyMap.Insert( ImageVisual::Property::PIXEL_AREA, Vector4( 0.25f, 0.25f, 0.5f, 0.5f ) );
528   propertyMap.Insert( ImageVisual::Property::WRAP_MODE_U, WrapMode::REPEAT );
529   propertyMap.Insert( ImageVisual::Property::WRAP_MODE_V, WrapMode::MIRRORED_REPEAT );
530   propertyMap.Insert( "synchronousLoading",   true );
531
532   Visual::Base imageVisual = factory.CreateVisual(propertyMap);
533   DALI_TEST_CHECK( imageVisual );
534
535   Property::Map resultMap;
536   imageVisual.CreatePropertyMap( resultMap );
537
538   // check the property values from the returned map from visual
539   Property::Value* value = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
540   DALI_TEST_CHECK( value );
541   DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
542
543   value = resultMap.Find( ImageVisual::Property::URL,  Property::STRING );
544   DALI_TEST_CHECK( value );
545   DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
546
547   value = resultMap.Find( ImageVisual::Property::FITTING_MODE,   Property::INTEGER );
548   DALI_TEST_CHECK( value );
549   DALI_TEST_CHECK( value->Get<int>() == FittingMode::FIT_HEIGHT );
550
551   value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE,   Property::INTEGER );
552   DALI_TEST_CHECK( value );
553   DALI_TEST_CHECK( value->Get<int>() == SamplingMode::BOX_THEN_NEAREST );
554
555   value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH,   Property::INTEGER );
556   DALI_TEST_CHECK( value );
557   DALI_TEST_CHECK( value->Get<int>() == 20 );
558
559   value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT,   Property::INTEGER );
560   DALI_TEST_CHECK( value );
561   DALI_TEST_CHECK( value->Get<int>() == 30 );
562
563   value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 );
564   DALI_TEST_CHECK( value );
565   DALI_TEST_EQUALS( value->Get<Vector4>(), Vector4( 0.25f, 0.25f, 0.5f, 0.5f ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
566
567   value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER );
568   DALI_TEST_CHECK( value );
569   DALI_TEST_CHECK(  value->Get<int>() == WrapMode::REPEAT);
570
571   value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER );
572   DALI_TEST_CHECK( value );
573   DALI_TEST_CHECK(  value->Get<int>() == WrapMode::MIRRORED_REPEAT);
574
575   value = resultMap.Find( "synchronousLoading",   Property::BOOLEAN );
576   DALI_TEST_CHECK( value );
577   DALI_TEST_CHECK( value->Get<bool>() == true );
578
579   // Get an image visual with an image handle, and test the default property values
580   Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
581   imageVisual = factory.CreateVisual(image);
582   imageVisual.CreatePropertyMap( resultMap );
583
584   value = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
585   DALI_TEST_CHECK( value );
586   DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
587
588   value = resultMap.Find( ImageVisual::Property::URL,  Property::STRING );
589   DALI_TEST_CHECK( value );
590   DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
591
592   value = resultMap.Find( ImageVisual::Property::FITTING_MODE,   Property::INTEGER );
593   DALI_TEST_CHECK( value );
594   DALI_TEST_CHECK( value->Get<int>() == FittingMode::SHRINK_TO_FIT );
595
596   value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE,   Property::INTEGER );
597   DALI_TEST_CHECK( value );
598   DALI_TEST_CHECK( value->Get<int>() == SamplingMode::BOX );
599
600   value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH,   Property::INTEGER );
601   DALI_TEST_CHECK( value );
602   DALI_TEST_CHECK( value->Get<int>() == 100 );
603
604   value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT,   Property::INTEGER );
605   DALI_TEST_CHECK( value );
606   DALI_TEST_CHECK( value->Get<int>() == 200 );
607
608   value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 );
609   DALI_TEST_CHECK( value );
610   DALI_TEST_EQUALS( value->Get<Vector4>(), Vector4( 0.f, 0.f, 1.f, 1.f ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
611
612   value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER );
613   DALI_TEST_CHECK( value );
614   DALI_TEST_CHECK(  value->Get<int>() == WrapMode::DEFAULT);
615
616   value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER );
617   DALI_TEST_CHECK( value );
618   DALI_TEST_CHECK(  value->Get<int>() == WrapMode::DEFAULT);
619
620   value = resultMap.Find( "synchronousLoading",   Property::BOOLEAN );
621   DALI_TEST_CHECK( value );
622   DALI_TEST_CHECK( value->Get<bool>() == false );
623
624   // Test the properties. TODO: to be completed.
625   imageVisual.SetProperty( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
626   Property::Value imageValue = imageVisual.GetProperty( ImageVisual::Property::URL );
627
628   END_TEST;
629 }
630
631 int UtcDaliVisualGetPropertyMap6(void)
632 {
633   ToolkitTestApplication application;
634   tet_infoline( "UtcDaliVisualGetPropertyMap6: NPatchVisual" );
635
636   VisualFactory factory = VisualFactory::Get();
637   Property::Map propertyMap;
638   propertyMap.Insert( Visual::Property::TYPE,  Visual::IMAGE );
639   propertyMap.Insert( ImageVisual::Property::URL,  TEST_NPATCH_FILE_NAME );
640   propertyMap.Insert( ImageVisual::Property::BORDER_ONLY,  true );
641   Visual::Base nPatchVisual = factory.CreateVisual( propertyMap );
642
643   Property::Map resultMap;
644   nPatchVisual.CreatePropertyMap( resultMap );
645
646   // check the property values from the returned map from visual
647   Property::Value* value = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
648   DALI_TEST_CHECK( value );
649   DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
650
651   value = resultMap.Find( ImageVisual::Property::URL,  Property::STRING );
652   DALI_TEST_CHECK( value );
653   DALI_TEST_CHECK( value->Get<std::string>() == TEST_NPATCH_FILE_NAME );
654
655   value = resultMap.Find( ImageVisual::Property::BORDER_ONLY,  Property::BOOLEAN );
656   DALI_TEST_CHECK( value );
657   DALI_TEST_CHECK( value->Get<bool>() );
658
659   // Test the properties. TODO: to be completed.
660   nPatchVisual.SetProperty( ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME );
661   Property::Value nPatchValue = nPatchVisual.GetProperty( ImageVisual::Property::URL );
662
663   END_TEST;
664 }
665
666 int UtcDaliVisualGetPropertyMap7(void)
667 {
668   ToolkitTestApplication application;
669   tet_infoline( "UtcDaliVisualGetPropertyMap7: SvgVisual" );
670
671   // request SvgVisual with a property map
672   VisualFactory factory = VisualFactory::Get();
673   Property::Map propertyMap;
674   propertyMap.Insert( Visual::Property::TYPE,  Visual::IMAGE );
675   propertyMap.Insert( ImageVisual::Property::URL, TEST_SVG_FILE_NAME );
676   Visual::Base svgVisual = factory.CreateVisual( propertyMap );
677
678   Property::Map resultMap;
679   svgVisual.CreatePropertyMap( resultMap );
680   // check the property values from the returned map from a visual
681   Property::Value* value = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
682   DALI_TEST_CHECK( value );
683   DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
684
685   value = resultMap.Find( ImageVisual::Property::URL,  Property::STRING );
686   DALI_TEST_CHECK( value );
687   DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
688
689   // request SvgVisual with an URL
690   Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
691   resultMap.Clear();
692   svgVisual2.CreatePropertyMap( resultMap );
693   // check the property values from the returned map from a visual
694   value = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
695   DALI_TEST_CHECK( value );
696   DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
697
698   value = resultMap.Find( ImageVisual::Property::URL,  Property::STRING );
699   DALI_TEST_CHECK( value );
700   DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
701
702   // Test the properties. TODO: to be completed.
703   svgVisual.SetProperty( ImageVisual::Property::URL, TEST_SVG_FILE_NAME );
704   Property::Value svgValue = svgVisual.GetProperty( ImageVisual::Property::URL );
705
706   END_TEST;
707 }
708
709 //Mesh visual
710 int UtcDaliVisualGetPropertyMap8(void)
711 {
712   ToolkitTestApplication application;
713   tet_infoline( "UtcDaliVisualGetPropertyMap8: MeshVisual" );
714
715   //Request MeshVisual using a property map.
716   VisualFactory factory = VisualFactory::Get();
717   Property::Map propertyMap;
718   propertyMap.Insert( Visual::Property::TYPE, Visual::MESH );
719   propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
720   propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
721   propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_LOCATION );
722   propertyMap.Insert( MeshVisual::Property::SHADING_MODE, MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
723   propertyMap.Insert( MeshVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
724   Visual::Base meshVisual = factory.CreateVisual( propertyMap );
725
726   Property::Map resultMap;
727   meshVisual.CreatePropertyMap( resultMap );
728
729   //Check values in the result map are identical to the initial map's values.
730   Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
731   DALI_TEST_CHECK( value );
732   DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::MESH, TEST_LOCATION );
733
734   value = resultMap.Find( MeshVisual::Property::OBJECT_URL, Property::STRING );
735   DALI_TEST_CHECK( value );
736   DALI_TEST_EQUALS( value->Get<std::string>(), TEST_OBJ_FILE_NAME, TEST_LOCATION );
737
738   value = resultMap.Find( MeshVisual::Property::MATERIAL_URL, Property::STRING );
739   DALI_TEST_CHECK( value );
740   DALI_TEST_EQUALS( value->Get<std::string>(), TEST_MTL_FILE_NAME, TEST_LOCATION );
741
742   value = resultMap.Find( MeshVisual::Property::TEXTURES_PATH, Property::STRING );
743   DALI_TEST_CHECK( value );
744   DALI_TEST_EQUALS( value->Get<std::string>(), TEST_RESOURCE_LOCATION, TEST_LOCATION );
745
746   value = resultMap.Find( MeshVisual::Property::SHADING_MODE, Property::INTEGER );
747   DALI_TEST_CHECK( value );
748   DALI_TEST_EQUALS( value->Get<int>(), (int)MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING, TEST_LOCATION );
749
750   value = resultMap.Find( MeshVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
751   DALI_TEST_CHECK( value );
752   DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
753
754   // Test the properties. TODO: to be completed.
755   meshVisual.SetProperty( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
756   Property::Value meshValue = meshVisual.GetProperty( MeshVisual::Property::OBJECT_URL );
757
758   END_TEST;
759 }
760
761 //Primitive shape visual
762 int UtcDaliVisualGetPropertyMap9(void)
763 {
764   ToolkitTestApplication application;
765   tet_infoline( "UtcDaliVisualGetPropertyMap9: PrimitiveVisual" );
766
767   Vector4 color = Vector4( 1.0, 0.8, 0.6, 1.0);
768   Vector3 dimensions = Vector3( 1.0, 2.0, 3.0 );
769
770   //Request PrimitiveVisual using a property map.
771   VisualFactory factory = VisualFactory::Get();
772   Property::Map propertyMap;
773   propertyMap.Insert( Visual::Property::TYPE, Visual::PRIMITIVE );
774   propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE );
775   propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, color );
776   propertyMap.Insert( PrimitiveVisual::Property::SLICES, 10 );
777   propertyMap.Insert( PrimitiveVisual::Property::STACKS, 20 );
778   propertyMap.Insert( PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f );
779   propertyMap.Insert( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f );
780   propertyMap.Insert( PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f );
781   propertyMap.Insert( PrimitiveVisual::Property::SCALE_RADIUS, 60.0f );
782   propertyMap.Insert( PrimitiveVisual::Property::SCALE_DIMENSIONS, dimensions );
783   propertyMap.Insert( PrimitiveVisual::Property::BEVEL_PERCENTAGE, 0.3f );
784   propertyMap.Insert( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, 0.6f );
785   propertyMap.Insert( PrimitiveVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
786   Visual::Base primitiveVisual = factory.CreateVisual( propertyMap );
787
788   Property::Map resultMap;
789   primitiveVisual.CreatePropertyMap( resultMap );
790
791   //Check values in the result map are identical to the initial map's values.
792   Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
793   DALI_TEST_CHECK( value );
794   DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::PRIMITIVE, TEST_LOCATION );
795
796   value = resultMap.Find( PrimitiveVisual::Property::SHAPE, Property::INTEGER );
797   DALI_TEST_CHECK( value );
798   DALI_TEST_EQUALS( value->Get<int>(), (int)PrimitiveVisual::Shape::CUBE, TEST_LOCATION );
799
800   value = resultMap.Find( PrimitiveVisual::Property::MIX_COLOR, Property::VECTOR4 );
801   DALI_TEST_CHECK( value );
802   DALI_TEST_CHECK( value->Get<Vector4>() == color );
803   DALI_TEST_EQUALS( value->Get<Vector4>(), color, Math::MACHINE_EPSILON_100, TEST_LOCATION );
804
805   value = resultMap.Find( PrimitiveVisual::Property::SLICES, Property::INTEGER );
806   DALI_TEST_CHECK( value );
807   DALI_TEST_EQUALS( value->Get<int>(), 10, TEST_LOCATION );
808
809   value = resultMap.Find( PrimitiveVisual::Property::STACKS, Property::INTEGER );
810   DALI_TEST_CHECK( value );
811   DALI_TEST_EQUALS( value->Get<int>(), 20, TEST_LOCATION );
812
813   value = resultMap.Find( PrimitiveVisual::Property::SCALE_TOP_RADIUS, Property::FLOAT );
814   DALI_TEST_CHECK( value );
815   DALI_TEST_EQUALS( value->Get<float>(), 30.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
816
817   value = resultMap.Find( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, Property::FLOAT );
818   DALI_TEST_CHECK( value );
819   DALI_TEST_EQUALS( value->Get<float>(), 40.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
820
821   value = resultMap.Find( PrimitiveVisual::Property::SCALE_HEIGHT, Property::FLOAT );
822   DALI_TEST_CHECK( value );
823   DALI_TEST_EQUALS( value->Get<float>(), 50.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
824
825   value = resultMap.Find( PrimitiveVisual::Property::SCALE_RADIUS, Property::FLOAT );
826   DALI_TEST_CHECK( value );
827   DALI_TEST_EQUALS( value->Get<float>(), 60.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
828
829   value = resultMap.Find( PrimitiveVisual::Property::SCALE_DIMENSIONS, Property::VECTOR3 );
830   DALI_TEST_CHECK( value );
831   DALI_TEST_EQUALS( value->Get<Vector3>(), dimensions, Math::MACHINE_EPSILON_100, TEST_LOCATION );
832
833   value = resultMap.Find( PrimitiveVisual::Property::BEVEL_PERCENTAGE, Property::FLOAT );
834   DALI_TEST_CHECK( value );
835   DALI_TEST_EQUALS( value->Get<float>(), 0.3f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
836
837   value = resultMap.Find( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, Property::FLOAT );
838   DALI_TEST_CHECK( value );
839   DALI_TEST_EQUALS( value->Get<float>(), 0.6f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
840
841   value = resultMap.Find( PrimitiveVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
842   DALI_TEST_CHECK( value );
843   DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
844
845   // Test the properties. TODO: to be completed.
846   primitiveVisual.SetProperty( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE );
847   Property::Value primitiveValue = primitiveVisual.GetProperty( PrimitiveVisual::Property::SHAPE );
848
849   END_TEST;
850 }
851
852 int UtcDaliVisualGetPropertyMapBatchImageVisual(void)
853 {
854   ToolkitTestApplication application;
855   tet_infoline( "UtcDaliVisualGetPropertyMapBatchImageVisual:" );
856
857   VisualFactory factory = VisualFactory::Get();
858   Property::Map propertyMap;
859   propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
860   propertyMap.Insert( ImageVisual::Property::BATCHING_ENABLED, true );
861   propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
862   propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 20 );
863   propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 30 );
864
865   Visual::Base batchImageVisual = factory.CreateVisual( propertyMap );
866   DALI_TEST_CHECK( batchImageVisual );
867
868   Property::Map resultMap;
869   batchImageVisual.CreatePropertyMap( resultMap );
870
871   // Check the property values from the returned map from visual
872   Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
873   DALI_TEST_CHECK( value );
874   DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
875
876   value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
877   DALI_TEST_CHECK( value );
878   DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
879
880   value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER );
881   DALI_TEST_CHECK( value );
882   DALI_TEST_CHECK( value->Get<int>() == 20 );
883
884   value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER );
885   DALI_TEST_CHECK( value );
886   DALI_TEST_CHECK( value->Get<int>() == 30 );
887
888   // Test the properties. TODO: to be completed.
889   batchImageVisual.SetProperty( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
890   Property::Value primitiveValue = batchImageVisual.GetProperty( ImageVisual::Property::URL );
891
892   END_TEST;
893 }
894
895 int UtcDaliVisualGetPropertyMapBatchImageVisualNoAtlas(void)
896 {
897   ToolkitTestApplication application;
898   tet_infoline( "UtcDaliVisualGetPropertyMapBatchImageVisualNoAtlas:" );
899
900   VisualFactory factory = VisualFactory::Get();
901   Property::Map propertyMap;
902   propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
903   propertyMap.Insert( ImageVisual::Property::BATCHING_ENABLED, true );
904   propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
905
906   // Set the desired size to be larger than the atlas limit of 1024x1024.
907   propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 2048 );
908   propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 2048 );
909
910   // Create the visual.
911   Visual::Base batchImageVisual = factory.CreateVisual( propertyMap );
912
913   DALI_TEST_CHECK( batchImageVisual );
914
915   Actor actor = Actor::New();
916   batchImageVisual.SetOnStage( actor );
917
918   DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
919
920   END_TEST;
921 }
922
923 int UtcDaliVisualAnimateBorderVisual01(void)
924 {
925   ToolkitTestApplication application;
926   tet_infoline( "UtcDaliAnimateBorderVisual Color" );
927
928   VisualFactory factory = VisualFactory::Get();
929   Property::Map propertyMap;
930   propertyMap.Insert(Visual::Property::TYPE,  Visual::BORDER);
931   propertyMap.Insert(BorderVisual::Property::COLOR,  Color::BLUE);
932   propertyMap.Insert(BorderVisual::Property::SIZE,  5.f);
933   Visual::Base borderVisual = factory.CreateVisual( propertyMap );
934
935   Actor actor = Actor::New();
936   actor.SetSize(2000, 2000);
937   actor.SetParentOrigin(ParentOrigin::CENTER);
938   Stage::GetCurrent().Add(actor);
939   borderVisual.SetOnStage( actor );
940
941   DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
942
943   Renderer renderer = actor.GetRendererAt(0);
944   Property::Index index = renderer.GetPropertyIndex( BorderVisual::Property::COLOR );
945
946   Animation animation = Animation::New(4.0f);
947   animation.AnimateTo( Property(renderer, index), Color::WHITE );
948   animation.Play();
949
950   application.SendNotification();
951   application.Render(0);
952   application.Render(2000u); // halfway point between blue and white
953
954   Vector4 color = renderer.GetProperty<Vector4>( index );
955   Vector4 testColor = (Color::BLUE + Color::WHITE)*0.5f;
956   DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
957   DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", testColor ), true, TEST_LOCATION );
958
959   application.Render(2000u); // halfway point between blue and white
960
961   color = renderer.GetProperty<Vector4>( index );
962   DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION );
963   DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", Color::WHITE ), true, TEST_LOCATION );
964
965   END_TEST;
966 }
967
968
969 int UtcDaliVisualAnimateBorderVisual02(void)
970 {
971   ToolkitTestApplication application;
972   tet_infoline( "UtcDaliAnimateBorderVisual Size" );
973
974   VisualFactory factory = VisualFactory::Get();
975   Property::Map propertyMap;
976   propertyMap.Insert(Visual::Property::TYPE,  Visual::BORDER);
977   propertyMap.Insert(BorderVisual::Property::COLOR,  Color::BLUE);
978   propertyMap.Insert(BorderVisual::Property::SIZE,  5.f);
979   Visual::Base borderVisual = factory.CreateVisual( propertyMap );
980
981   Actor actor = Actor::New();
982   actor.SetSize(2000, 2000);
983   actor.SetParentOrigin(ParentOrigin::CENTER);
984   Stage::GetCurrent().Add(actor);
985   borderVisual.SetOnStage( actor );
986
987   DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
988
989   Renderer renderer = actor.GetRendererAt(0);
990   Property::Index index = renderer.GetPropertyIndex( BorderVisual::Property::SIZE );
991
992   Animation animation = Animation::New(4.0f);
993   animation.AnimateTo( Property(renderer, index), 9.0f );
994   animation.Play();
995
996   application.SendNotification();
997   application.Render(0);
998   application.Render(2000u); // halfway point
999
1000   float size = renderer.GetProperty<float>( index );
1001   DALI_TEST_EQUALS( size, 7.0f, 0.0001f, TEST_LOCATION );
1002   DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 7.0f ), true, TEST_LOCATION );
1003
1004   application.Render(2000u); // halfway point between blue and white
1005
1006   size = renderer.GetProperty<float>( index );
1007   DALI_TEST_EQUALS( size, 9.0f, 0.0001f, TEST_LOCATION );
1008   DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 9.0f ), true, TEST_LOCATION );
1009
1010   END_TEST;
1011 }
1012
1013 int UtcDaliVisualAnimateColorVisual(void)
1014 {
1015   ToolkitTestApplication application;
1016   tet_infoline( "UtcDaliAnimateColorVisual mixColor" );
1017
1018   VisualFactory factory = VisualFactory::Get();
1019   Property::Map propertyMap;
1020   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
1021   propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1022   Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1023
1024   Actor actor = Actor::New();
1025   actor.SetSize(2000, 2000);
1026   actor.SetParentOrigin(ParentOrigin::CENTER);
1027   Stage::GetCurrent().Add(actor);
1028   borderVisual.SetOnStage( actor );
1029
1030   DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1031
1032   Renderer renderer = actor.GetRendererAt(0);
1033   Property::Index index = renderer.GetPropertyIndex( ColorVisual::Property::MIX_COLOR );
1034
1035   Animation animation = Animation::New(4.0f);
1036   animation.AnimateTo( Property(renderer, index), Color::WHITE );
1037   animation.Play();
1038
1039   application.SendNotification();
1040   application.Render(0);
1041   application.Render(2000u); // halfway point
1042
1043   Vector4 color = renderer.GetProperty<Vector4>( index );
1044   Vector4 testColor = (Color::BLUE + Color::WHITE)*0.5f;
1045   DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1046
1047   DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", testColor ), true, TEST_LOCATION );
1048
1049   application.Render(2000u); // halfway point between blue and white
1050
1051   color = renderer.GetProperty<Vector4>( index );
1052   DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION );
1053
1054   DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", Color::WHITE ), true, TEST_LOCATION );
1055
1056
1057   END_TEST;
1058 }
1059
1060
1061 int UtcDaliVisualAnimatePrimitiveVisual(void)
1062 {
1063   ToolkitTestApplication application;
1064   tet_infoline( "UtcDaliAnimatePrimitiveVisual color" );
1065
1066   VisualFactory factory = VisualFactory::Get();
1067   Property::Map propertyMap;
1068   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
1069   propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1070   Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1071
1072   Actor actor = Actor::New();
1073   actor.SetSize(2000, 2000);
1074   actor.SetParentOrigin(ParentOrigin::CENTER);
1075   actor.SetColor(Color::BLACK);
1076   Stage::GetCurrent().Add(actor);
1077   borderVisual.SetOnStage( actor );
1078
1079   DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1080
1081   Renderer renderer = actor.GetRendererAt(0);
1082   Property::Index index = renderer.GetPropertyIndex( PrimitiveVisual::Property::MIX_COLOR );
1083
1084   // The property isn't registered on the renderer, it's instead registered on the shader.
1085   DALI_TEST_EQUALS( index, Property::INVALID_INDEX, TEST_LOCATION );
1086
1087   Animation animation = Animation::New(4.0f);
1088   animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE );
1089   animation.Play();
1090
1091   application.SendNotification();
1092   application.Render(0);
1093   application.Render(2000u); // halfway point
1094
1095   // Actor color overrides renderer color.
1096   DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Vector4(0.5f, 0.5f, 0.5f, 1.0f )), true, TEST_LOCATION );
1097
1098   application.Render(2000u); // halfway point between blue and white
1099
1100   DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::WHITE, TEST_LOCATION );
1101   DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Color::WHITE ), true, TEST_LOCATION );
1102
1103
1104   END_TEST;
1105 }
1106
1107 int UtcDaliVisualWireframeVisual(void)
1108 {
1109   ToolkitTestApplication application;
1110
1111   VisualFactory factory = VisualFactory::Get();
1112   Property::Map propertyMap;
1113   propertyMap.Insert( Visual::Property::TYPE, Visual::WIREFRAME );
1114
1115   // Create the visual.
1116   Visual::Base visual = factory.CreateVisual( propertyMap );
1117
1118   DALI_TEST_CHECK( visual );
1119
1120   Property::Map resultMap;
1121   visual.CreatePropertyMap( resultMap );
1122
1123   // Check the property values from the returned map from visual
1124   Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1125   DALI_TEST_CHECK( value );
1126   DALI_TEST_CHECK( value->Get<int>() == Visual::WIREFRAME );
1127
1128   // Test the properties. TODO: to be completed.
1129   Property::Value primitiveValue = visual.GetProperty( Visual::Property::TYPE );
1130
1131   END_TEST;
1132 }