4959ed91f84233dfaf6197c85f4f567aa99fb5d7
[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 <unistd.h>
20
21 #include <dali-toolkit-test-suite-utils.h>
22 #include <dali/public-api/rendering/renderer.h>
23 #include <dali/public-api/rendering/texture-set.h>
24 #include <dali/public-api/rendering/shader.h>
25 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
26 #include <dali-toolkit/devel-api/visual-factory/devel-visual-properties.h>
27 #include <dali-toolkit/devel-api/align-enums.h>
28 #include <dali-toolkit/dali-toolkit.h>
29 #include "dummy-control.h"
30
31 using namespace Dali;
32 using namespace Dali::Toolkit;
33
34 namespace
35 {
36 const char* TEST_IMAGE_FILE_NAME =  TEST_RESOURCE_DIR "/gallery-small-1.jpg";
37 const char* TEST_NPATCH_FILE_NAME =  "gallery_image_01.9.jpg";
38 const char* TEST_SVG_FILE_NAME = TEST_RESOURCE_DIR "/svg1.svg";
39 const char* TEST_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube.obj";
40 const char* TEST_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal.mtl";
41 const char* TEST_RESOURCE_LOCATION = TEST_RESOURCE_DIR "/";
42
43 const std::string DEFAULT_FONT_DIR( "/resources/fonts" );
44
45 bool DaliTestCheckMaps( const Property::Map& fontStyleMapGet, const Property::Map& fontStyleMapSet )
46 {
47   if( fontStyleMapGet.Count() == fontStyleMapSet.Count() )
48   {
49     for( unsigned int index = 0u; index < fontStyleMapGet.Count(); ++index )
50     {
51       const KeyValuePair& valueGet = fontStyleMapGet.GetKeyValue( index );
52
53       Property::Value* valueSet = fontStyleMapSet.Find( valueGet.first.stringKey );
54       if( NULL != valueSet )
55       {
56         if( valueGet.second.Get<std::string>() != valueSet->Get<std::string>() )
57         {
58           tet_printf( "  Value got : [%s], expected : [%s]", valueGet.second.Get<std::string>().c_str(), valueSet->Get<std::string>().c_str() );
59           return false;
60         }
61       }
62       else
63       {
64         tet_printf( "  The key %s doesn't exist.", valueGet.first.stringKey.c_str() );
65         return false;
66       }
67     }
68   }
69
70   return true;
71 }
72
73 } //namespace
74
75 void dali_visual_startup(void)
76 {
77   test_return_value = TET_UNDEF;
78 }
79
80 void dali_visual_cleanup(void)
81 {
82   test_return_value = TET_PASS;
83 }
84
85 int UtcDaliVisualCopyAndAssignment(void)
86 {
87   ToolkitTestApplication application;
88   tet_infoline( "UtcDaliVisualCopyAndAssignment" );
89
90   VisualFactory factory = VisualFactory::Get();
91   Property::Map propertyMap;
92   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
93   propertyMap.Insert(ColorVisual::Property::MIX_COLOR,  Color::BLUE);
94   Visual::Base visual = factory.CreateVisual( propertyMap );
95
96   Visual::Base visualCopy( visual );
97   DALI_TEST_CHECK(visual == visualCopy);
98
99   Visual::Base emptyVisual;
100   Visual::Base emptyVisualCopy( emptyVisual );
101   DALI_TEST_CHECK(emptyVisual == emptyVisualCopy);
102
103   Visual::Base visualEquals;
104   visualEquals = visual;
105   DALI_TEST_CHECK(visual == visualEquals);
106
107   Visual::Base emptyVisualEquals;
108   emptyVisualEquals = emptyVisual;
109   DALI_TEST_CHECK( emptyVisual == emptyVisualEquals );
110
111   //self assignment
112   visual = visual;
113   DALI_TEST_CHECK( visual = visualCopy );
114
115   END_TEST;
116 }
117
118 int UtcDaliVisualSetName01(void)
119 {
120   ToolkitTestApplication application;
121   tet_infoline( "UtcDaliVisualSetName" );
122
123   VisualFactory factory = VisualFactory::Get();
124   Property::Map propertyMap;
125   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
126   propertyMap.Insert(ColorVisual::Property::MIX_COLOR,  Color::BLUE);
127   Visual::Base visual = factory.CreateVisual( propertyMap );
128
129   const char* visualName = "backgroundVisual";
130   visual.SetName( visualName );
131
132   DALI_TEST_EQUALS( visual.GetName(), visualName, TEST_LOCATION );
133
134   END_TEST;
135 }
136
137 int UtcDaliVisualSetGetDepthIndex(void)
138 {
139   ToolkitTestApplication application;
140   tet_infoline( "UtcDaliVisualSetDepthIndex" );
141
142   VisualFactory factory = VisualFactory::Get();
143   Property::Map propertyMap;
144   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
145   propertyMap.Insert(ColorVisual::Property::MIX_COLOR,  Color::BLUE);
146   Visual::Base visual = factory.CreateVisual( propertyMap );
147
148   visual.SetDepthIndex( 1.f );
149
150   Actor actor = Actor::New();
151   actor.SetSize(200.f, 200.f);
152   Stage::GetCurrent().Add( actor );
153   visual.SetOnStage( actor );
154
155   int depthIndex = actor.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
156   DALI_TEST_EQUALS( depthIndex, 1, TEST_LOCATION );
157   DALI_TEST_EQUALS( visual.GetDepthIndex(), 1.f, TEST_LOCATION );
158
159   visual.SetDepthIndex( -1.f );
160   depthIndex = actor.GetRendererAt(0u).GetProperty<int>( Renderer::Property::DEPTH_INDEX );
161   DALI_TEST_EQUALS( depthIndex, -1, TEST_LOCATION );
162   DALI_TEST_EQUALS( visual.GetDepthIndex(), -1.f, TEST_LOCATION );
163
164   END_TEST;
165 }
166
167 int UtcDaliVisualSize(void)
168 {
169   ToolkitTestApplication application;
170   tet_infoline( "UtcDaliVisualGetNaturalSize" );
171
172   VisualFactory factory = VisualFactory::Get();
173   Vector2 visualSize( 20.f, 30.f );
174   Vector2 naturalSize;
175
176   // color colorVisual
177   Dali::Property::Map map;
178   map[ Visual::Property::TYPE ] = Visual::COLOR;
179   map[ ColorVisual::Property::MIX_COLOR ] = Color::MAGENTA;
180   Visual::Base colorVisual = factory.CreateVisual( map );
181   colorVisual.SetSize( visualSize );
182   DALI_TEST_EQUALS( colorVisual.GetSize(), visualSize, TEST_LOCATION );
183   colorVisual.GetNaturalSize(naturalSize);
184   DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
185
186   // image visual
187   Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
188   Visual::Base imageVisual = factory.CreateVisual( image );
189   imageVisual.SetSize( visualSize );
190   DALI_TEST_EQUALS( imageVisual.GetSize(), visualSize, TEST_LOCATION );
191   imageVisual.GetNaturalSize(naturalSize);
192   DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 200.f), TEST_LOCATION );
193
194   // n patch visual
195   TestPlatformAbstraction& platform = application.GetPlatform();
196   Vector2 testSize(80.f, 160.f);
197   platform.SetClosestImageSize(testSize);
198   image = ResourceImage::New(TEST_NPATCH_FILE_NAME);
199   Visual::Base nPatchVisual = factory.CreateVisual( image );
200   nPatchVisual.SetSize( visualSize );
201   DALI_TEST_EQUALS( nPatchVisual.GetSize(), visualSize, TEST_LOCATION );
202   nPatchVisual.GetNaturalSize(naturalSize);
203   DALI_TEST_EQUALS( naturalSize, testSize, TEST_LOCATION );
204
205   // border visual
206   float borderSize = 5.f;
207   map.Clear();
208   map[ Visual::Property::TYPE ] = Visual::BORDER;
209   map[ BorderVisual::Property::COLOR  ] = Color::RED;
210   map[ BorderVisual::Property::SIZE   ] = borderSize;
211   Visual::Base borderVisual = factory.CreateVisual( map );
212   borderVisual.SetSize( visualSize );
213   DALI_TEST_EQUALS( borderVisual.GetSize(), visualSize, TEST_LOCATION );
214   borderVisual.GetNaturalSize(naturalSize);
215   DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION );
216
217   // gradient gradientVisual
218   Property::Map propertyMap;
219   propertyMap.Insert(Visual::Property::TYPE,  Visual::GRADIENT);
220   Vector2 start(-1.f, -1.f);
221   Vector2 end(1.f, 1.f);
222   propertyMap.Insert(GradientVisual::Property::START_POSITION,   start);
223   propertyMap.Insert(GradientVisual::Property::END_POSITION,   end);
224   propertyMap.Insert(GradientVisual::Property::STOP_OFFSET,   Vector2(0.f, 1.f));
225   Property::Array stopColors;
226   stopColors.PushBack( Color::RED );
227   stopColors.PushBack( Color::GREEN );
228   propertyMap.Insert(GradientVisual::Property::STOP_COLOR,   stopColors);
229   Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
230   gradientVisual.SetSize( visualSize );
231   DALI_TEST_EQUALS( gradientVisual.GetSize(), visualSize, TEST_LOCATION );
232   gradientVisual.GetNaturalSize(naturalSize);
233   DALI_TEST_EQUALS( naturalSize, Vector2::ZERO,TEST_LOCATION );
234
235   // svg visual
236   Visual::Base svgVisual = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
237   svgVisual.SetSize( visualSize );
238   DALI_TEST_EQUALS( svgVisual.GetSize(), visualSize, TEST_LOCATION );
239   svgVisual.GetNaturalSize(naturalSize);
240   // TEST_SVG_FILE:
241   //  <svg width="100" height="100">
242   //  <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
243   //  </svg>
244   DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION );
245
246   // svg visual with a size
247   Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions(200, 200) );
248   DALI_TEST_EQUALS( svgVisual2.GetSize(), Vector2( 200.f, 200.f ), TEST_LOCATION );
249   svgVisual2.GetNaturalSize(naturalSize);
250   DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION ); // Natural size should still be 100, 100
251
252   // Batch Image visual
253   propertyMap.Clear();
254   propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
255   propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
256   propertyMap.Insert( ImageVisual::Property::BATCHING_ENABLED, true );
257   Visual::Base batchImageVisual = factory.CreateVisual( propertyMap );
258   batchImageVisual.SetSize( visualSize );
259   DALI_TEST_EQUALS( batchImageVisual.GetSize(), visualSize, TEST_LOCATION );
260   batchImageVisual.GetNaturalSize( naturalSize );
261   DALI_TEST_EQUALS( naturalSize, Vector2( 80.0f, 160.0f ), TEST_LOCATION );
262
263   // Text visual.
264
265   // Load some fonts to get the same metrics on different platforms.
266   TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
267   fontClient.SetDpi( 96u, 96u );
268
269   char* pathNamePtr = get_current_dir_name();
270   const std::string pathName( pathNamePtr );
271   free( pathNamePtr );
272
273   fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" );
274
275   propertyMap.Clear();
276   propertyMap.Insert( Visual::Property::TYPE, Visual::TEXT );
277   propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true );
278   propertyMap.Insert( TextVisual::Property::TEXT, "<font family='TizenSans' size='12'>Hello world</font>" );
279   propertyMap.Insert( TextVisual::Property::MULTI_LINE, true );
280
281   Visual::Base textVisual = factory.CreateVisual( propertyMap );
282   textVisual.GetNaturalSize( naturalSize );
283   DALI_TEST_EQUALS( naturalSize, Size( 80.f, 20.f ), TEST_LOCATION );
284
285   const float height = textVisual.GetHeightForWidth( 40.f );
286   DALI_TEST_EQUALS( height, 40.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
287
288   END_TEST;
289 }
290
291 int UtcDaliVisualSetOnOffStage(void)
292 {
293   ToolkitTestApplication application;
294   tet_infoline( "UtcDaliVisualSetDepthIndex" );
295
296   VisualFactory factory = VisualFactory::Get();
297   Property::Map propertyMap;
298   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
299   propertyMap.Insert(ColorVisual::Property::MIX_COLOR,  Color::BLUE);
300   Visual::Base visual = factory.CreateVisual( propertyMap );
301
302   Actor actor = Actor::New();
303   actor.SetSize(200.f, 200.f);
304   Stage::GetCurrent().Add( actor );
305
306   application.SendNotification();
307   application.Render(0);
308   DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
309
310   visual.SetOnStage( actor );
311   application.SendNotification();
312   application.Render(0);
313   DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
314
315   visual.SetOffStage( actor );
316   application.SendNotification();
317   application.Render(0);
318   DALI_TEST_CHECK( actor.GetRendererCount() == 0u );
319
320   END_TEST;
321 }
322
323 int UtcDaliVisualRemoveAndReset(void)
324 {
325   ToolkitTestApplication application;
326   tet_infoline( "intUtcDaliVisualRemoveAndReset" );
327
328   VisualFactory factory = VisualFactory::Get();
329
330   Actor actor = Actor::New();
331   actor.SetSize(200.f, 200.f);
332   Stage::GetCurrent().Add( actor );
333
334   Visual::Base imageVisual;
335   // test calling RemoveAndReset with an empty handle
336   try
337   {
338     imageVisual.RemoveAndReset( actor );
339     tet_result(TET_PASS);
340   }
341   catch (DaliException& exception)
342   {
343     tet_result(TET_FAIL);
344   }
345
346   Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
347   imageVisual = factory.CreateVisual(image);
348   DALI_TEST_CHECK( imageVisual );
349
350   imageVisual.SetOnStage( actor );
351   application.SendNotification();
352   application.Render(0);
353   DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
354
355   imageVisual.RemoveAndReset( actor );
356   application.SendNotification();
357   application.Render(0);
358   DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); // visual is removed from actor
359   DALI_TEST_CHECK( !imageVisual ); // visual is reset
360
361   END_TEST;
362 }
363
364 int UtcDaliVisualGetPropertyMap1(void)
365 {
366   ToolkitTestApplication application;
367   tet_infoline( "UtcDaliVisualGetPropertyMap1: ColorVisual" );
368
369   VisualFactory factory = VisualFactory::Get();
370   Property::Map propertyMap;
371   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
372   propertyMap.Insert(ColorVisual::Property::MIX_COLOR,  Color::BLUE);
373   Visual::Base colorVisual = factory.CreateVisual( propertyMap );
374
375   Property::Map resultMap;
376   colorVisual.CreatePropertyMap( resultMap );
377
378   Property::Value* typeValue = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
379   DALI_TEST_CHECK( typeValue );
380   DALI_TEST_CHECK( typeValue->Get<int>() == Visual::COLOR );
381
382   Property::Value* colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR,  Property::VECTOR4 );
383   DALI_TEST_CHECK( colorValue );
384   DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
385
386   // change the blend color
387   Actor actor;
388   colorVisual.RemoveAndReset( actor );
389   propertyMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN;
390   colorVisual = factory.CreateVisual( propertyMap  );
391   colorVisual.CreatePropertyMap( resultMap );
392
393   colorValue = resultMap.Find( ColorVisual::Property::MIX_COLOR,  Property::VECTOR4 );
394   DALI_TEST_CHECK( colorValue );
395   DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
396
397   // Test the properties. TODO: to be completed.
398   colorVisual.SetProperty( ColorVisual::Property::MIX_COLOR, Color::RED );
399   Property::Value value = colorVisual.GetProperty( ColorVisual::Property::MIX_COLOR );
400
401   END_TEST;
402 }
403
404 int UtcDaliVisualGetPropertyMap2(void)
405 {
406   ToolkitTestApplication application;
407   tet_infoline( "UtcDaliVisualGetPropertyMap2: BorderVisual" );
408
409   VisualFactory factory = VisualFactory::Get();
410   Property::Map propertyMap;
411   propertyMap.Insert(Visual::Property::TYPE,  Visual::BORDER);
412   propertyMap.Insert(BorderVisual::Property::COLOR,  Color::BLUE);
413   propertyMap.Insert(BorderVisual::Property::SIZE,  5.f);
414   Visual::Base borderVisual = factory.CreateVisual( propertyMap );
415
416   Property::Map resultMap;
417   borderVisual.CreatePropertyMap( resultMap );
418
419   // check the property values from the returned map from visual
420   Property::Value* typeValue = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
421   DALI_TEST_CHECK( typeValue );
422   DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
423
424   Property::Value* colorValue = resultMap.Find( BorderVisual::Property::COLOR,  Property::VECTOR4 );
425   DALI_TEST_CHECK( colorValue );
426   DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::BLUE );
427
428   Property::Value* sizeValue = resultMap.Find( BorderVisual::Property::SIZE,  Property::FLOAT );
429   DALI_TEST_CHECK( sizeValue );
430   DALI_TEST_CHECK( sizeValue->Get<float>() == 5.f );
431
432   Property::Map propertyMap1;
433   propertyMap1[ Visual::Property::TYPE ] = Visual::BORDER;
434   propertyMap1[ BorderVisual::Property::COLOR  ] = Color::CYAN;
435   propertyMap1[ BorderVisual::Property::SIZE   ] = 10.0f;
436   borderVisual = factory.CreateVisual( propertyMap1 );
437   borderVisual.CreatePropertyMap( resultMap );
438
439   typeValue = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
440   DALI_TEST_CHECK( typeValue );
441   DALI_TEST_CHECK( typeValue->Get<int>() == Visual::BORDER );
442
443   colorValue = resultMap.Find( BorderVisual::Property::COLOR,  Property::VECTOR4 );
444   DALI_TEST_CHECK( colorValue );
445   DALI_TEST_CHECK( colorValue->Get<Vector4>() == Color::CYAN );
446
447   colorValue = resultMap.Find( BorderVisual::Property::SIZE,  Property::FLOAT );
448   DALI_TEST_CHECK( colorValue );
449   DALI_TEST_CHECK( colorValue->Get<float>() == 10.f );
450
451   // Test the properties. TODO: to be completed.
452   borderVisual.SetProperty( BorderVisual::Property::COLOR, Color::RED );
453   Property::Value value = borderVisual.GetProperty( BorderVisual::Property::COLOR );
454
455   END_TEST;
456 }
457
458 int UtcDaliVisualGetPropertyMap3(void)
459 {
460   ToolkitTestApplication application;
461   tet_infoline( "UtcDaliVisualGetPropertyMap3: linear GradientVisual" );
462
463   VisualFactory factory = VisualFactory::Get();
464   DALI_TEST_CHECK( factory );
465
466   Property::Map propertyMap;
467   propertyMap.Insert(Visual::Property::TYPE,  Visual::GRADIENT);
468
469   Vector2 start(-1.f, -1.f);
470   Vector2 end(1.f, 1.f);
471   propertyMap.Insert(GradientVisual::Property::START_POSITION, start);
472   propertyMap.Insert(GradientVisual::Property::END_POSITION, end);
473   propertyMap.Insert(GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT);
474
475   propertyMap.Insert(GradientVisual::Property::STOP_OFFSET,   Vector2(0.2f, 0.8f));
476
477   Property::Array stopColors;
478   stopColors.PushBack( Color::RED );
479   stopColors.PushBack( Color::GREEN );
480   propertyMap.Insert(GradientVisual::Property::STOP_COLOR,   stopColors);
481
482   Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
483
484   Property::Map resultMap;
485   gradientVisual.CreatePropertyMap( resultMap );
486
487   // check the property values from the returned map from visual
488   Property::Value* value = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
489   DALI_TEST_CHECK( value );
490   DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
491
492   value = resultMap.Find( GradientVisual::Property::UNITS,  Property::INTEGER );
493   DALI_TEST_CHECK( value );
494   DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::OBJECT_BOUNDING_BOX );
495
496   value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD,   Property::INTEGER );
497   DALI_TEST_CHECK( value );
498   DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::REPEAT );
499
500   value = resultMap.Find( GradientVisual::Property::START_POSITION,   Property::VECTOR2 );
501   DALI_TEST_CHECK( value );
502   DALI_TEST_EQUALS( value->Get<Vector2>(), start , Math::MACHINE_EPSILON_100, TEST_LOCATION );
503
504   value = resultMap.Find( GradientVisual::Property::END_POSITION,   Property::VECTOR2 );
505   DALI_TEST_CHECK( value );
506   DALI_TEST_EQUALS( value->Get<Vector2>(), end , Math::MACHINE_EPSILON_100, TEST_LOCATION );
507
508   value = resultMap.Find( GradientVisual::Property::STOP_OFFSET,   Property::ARRAY );
509   DALI_TEST_CHECK( value );
510   Property::Array* offsetArray = value->GetArray();
511   DALI_TEST_CHECK( offsetArray->Count() == 2 );
512   DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.2f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
513   DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.8f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
514
515   value = resultMap.Find( GradientVisual::Property::STOP_COLOR,   Property::ARRAY );
516   DALI_TEST_CHECK( value );
517   Property::Array* colorArray = value->GetArray();
518   DALI_TEST_CHECK( colorArray->Count() == 2 );
519   DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
520   DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
521
522   // Test the properties. TODO: to be completed.
523   gradientVisual.SetProperty( GradientVisual::Property::STOP_COLOR, Color::RED );
524   Property::Value gradientValue = gradientVisual.GetProperty( GradientVisual::Property::STOP_COLOR );
525
526   END_TEST;
527 }
528
529 int UtcDaliVisualGetPropertyMap4(void)
530 {
531   ToolkitTestApplication application;
532   tet_infoline( "UtcDaliVisualGetPropertyMap4: radial GradientVisual" );
533
534   VisualFactory factory = VisualFactory::Get();
535   DALI_TEST_CHECK( factory );
536
537   Property::Map propertyMap;
538   propertyMap.Insert(Visual::Property::TYPE,  Visual::GRADIENT);
539
540   Vector2 center(100.f, 100.f);
541   float radius = 100.f;
542   propertyMap.Insert(GradientVisual::Property::UNITS,  GradientVisual::Units::USER_SPACE);
543   propertyMap.Insert(GradientVisual::Property::CENTER,  center);
544   propertyMap.Insert(GradientVisual::Property::RADIUS,  radius);
545   propertyMap.Insert(GradientVisual::Property::STOP_OFFSET,   Vector3(0.1f, 0.3f, 1.1f));
546
547   Property::Array stopColors;
548   stopColors.PushBack( Color::RED );
549   stopColors.PushBack( Color::BLACK );
550   stopColors.PushBack( Color::GREEN );
551   propertyMap.Insert(GradientVisual::Property::STOP_COLOR,   stopColors);
552
553   Visual::Base gradientVisual = factory.CreateVisual(propertyMap);
554   DALI_TEST_CHECK( gradientVisual );
555
556   Property::Map resultMap;
557   gradientVisual.CreatePropertyMap( resultMap );
558
559   // check the property values from the returned map from visual
560   Property::Value* value = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
561   DALI_TEST_CHECK( value );
562   DALI_TEST_CHECK( value->Get<int>() == Visual::GRADIENT );
563
564   value = resultMap.Find( GradientVisual::Property::UNITS,  Property::INTEGER );
565   DALI_TEST_CHECK( value );
566   DALI_TEST_CHECK( value->Get<int>() == GradientVisual::Units::USER_SPACE );
567
568   value = resultMap.Find( GradientVisual::Property::SPREAD_METHOD,   Property::INTEGER );
569   DALI_TEST_CHECK( value );
570   DALI_TEST_CHECK( value->Get<int>() == GradientVisual::SpreadMethod::PAD );
571
572   value = resultMap.Find( GradientVisual::Property::CENTER,  Property::VECTOR2 );
573   DALI_TEST_CHECK( value );
574   DALI_TEST_EQUALS( value->Get<Vector2>(), center , Math::MACHINE_EPSILON_100, TEST_LOCATION );
575
576   value = resultMap.Find( GradientVisual::Property::RADIUS,  Property::FLOAT );
577   DALI_TEST_CHECK( value );
578   DALI_TEST_EQUALS( value->Get<float>(), radius , Math::MACHINE_EPSILON_100, TEST_LOCATION );
579
580   value = resultMap.Find( GradientVisual::Property::STOP_OFFSET,   Property::ARRAY );
581   DALI_TEST_CHECK( value );
582   Property::Array* offsetArray = value->GetArray();
583   DALI_TEST_CHECK( offsetArray->Count() == 3 );
584   DALI_TEST_EQUALS( offsetArray->GetElementAt(0).Get<float>(), 0.1f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
585   DALI_TEST_EQUALS( offsetArray->GetElementAt(1).Get<float>(), 0.3f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
586   // any stop value will be clamped to [0.0, 1.0];
587   DALI_TEST_EQUALS( offsetArray->GetElementAt(2).Get<float>(), 1.0f , Math::MACHINE_EPSILON_100, TEST_LOCATION );
588
589   value = resultMap.Find( GradientVisual::Property::STOP_COLOR,   Property::ARRAY );
590   DALI_TEST_CHECK( value );
591   Property::Array* colorArray = value->GetArray();
592   DALI_TEST_CHECK( colorArray->Count() == 3 );
593   DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get<Vector4>(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION );
594   DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get<Vector4>(), Color::BLACK , Math::MACHINE_EPSILON_100, TEST_LOCATION );
595   DALI_TEST_EQUALS( colorArray->GetElementAt(2).Get<Vector4>(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION );
596
597   END_TEST;
598 }
599
600 int UtcDaliVisualGetPropertyMap5(void)
601 {
602   ToolkitTestApplication application;
603   tet_infoline( "UtcDaliVisualGetPropertyMap5: ImageVisual" );
604
605   VisualFactory factory = VisualFactory::Get();
606   Property::Map propertyMap;
607   propertyMap.Insert( Visual::Property::TYPE,  Visual::IMAGE );
608   propertyMap.Insert( ImageVisual::Property::URL,  TEST_IMAGE_FILE_NAME );
609   propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH,   20 );
610   propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT,   30 );
611   propertyMap.Insert( ImageVisual::Property::FITTING_MODE,   FittingMode::FIT_HEIGHT );
612   propertyMap.Insert( ImageVisual::Property::SAMPLING_MODE,   SamplingMode::BOX_THEN_NEAREST );
613   propertyMap.Insert( ImageVisual::Property::PIXEL_AREA, Vector4( 0.25f, 0.25f, 0.5f, 0.5f ) );
614   propertyMap.Insert( ImageVisual::Property::WRAP_MODE_U, WrapMode::REPEAT );
615   propertyMap.Insert( ImageVisual::Property::WRAP_MODE_V, WrapMode::MIRRORED_REPEAT );
616   propertyMap.Insert( "synchronousLoading",   true );
617
618   Visual::Base imageVisual = factory.CreateVisual(propertyMap);
619   DALI_TEST_CHECK( imageVisual );
620
621   Property::Map resultMap;
622   imageVisual.CreatePropertyMap( resultMap );
623
624   // check the property values from the returned map from visual
625   Property::Value* value = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
626   DALI_TEST_CHECK( value );
627   DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
628
629   value = resultMap.Find( ImageVisual::Property::URL,  Property::STRING );
630   DALI_TEST_CHECK( value );
631   DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
632
633   value = resultMap.Find( ImageVisual::Property::FITTING_MODE,   Property::INTEGER );
634   DALI_TEST_CHECK( value );
635   DALI_TEST_CHECK( value->Get<int>() == FittingMode::FIT_HEIGHT );
636
637   value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE,   Property::INTEGER );
638   DALI_TEST_CHECK( value );
639   DALI_TEST_CHECK( value->Get<int>() == SamplingMode::BOX_THEN_NEAREST );
640
641   value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH,   Property::INTEGER );
642   DALI_TEST_CHECK( value );
643   DALI_TEST_CHECK( value->Get<int>() == 20 );
644
645   value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT,   Property::INTEGER );
646   DALI_TEST_CHECK( value );
647   DALI_TEST_CHECK( value->Get<int>() == 30 );
648
649   value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 );
650   DALI_TEST_CHECK( value );
651   DALI_TEST_EQUALS( value->Get<Vector4>(), Vector4( 0.25f, 0.25f, 0.5f, 0.5f ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
652
653   value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER );
654   DALI_TEST_CHECK( value );
655   DALI_TEST_CHECK(  value->Get<int>() == WrapMode::REPEAT);
656
657   value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER );
658   DALI_TEST_CHECK( value );
659   DALI_TEST_CHECK(  value->Get<int>() == WrapMode::MIRRORED_REPEAT);
660
661   value = resultMap.Find( "synchronousLoading",   Property::BOOLEAN );
662   DALI_TEST_CHECK( value );
663   DALI_TEST_CHECK( value->Get<bool>() == true );
664
665   // Get an image visual with an image handle, and test the default property values
666   Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
667   imageVisual = factory.CreateVisual(image);
668   imageVisual.CreatePropertyMap( resultMap );
669
670   value = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
671   DALI_TEST_CHECK( value );
672   DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
673
674   value = resultMap.Find( ImageVisual::Property::URL,  Property::STRING );
675   DALI_TEST_CHECK( value );
676   DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
677
678   value = resultMap.Find( ImageVisual::Property::FITTING_MODE,   Property::INTEGER );
679   DALI_TEST_CHECK( value );
680   DALI_TEST_CHECK( value->Get<int>() == FittingMode::SHRINK_TO_FIT );
681
682   value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE,   Property::INTEGER );
683   DALI_TEST_CHECK( value );
684   DALI_TEST_CHECK( value->Get<int>() == SamplingMode::BOX );
685
686   value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH,   Property::INTEGER );
687   DALI_TEST_CHECK( value );
688   DALI_TEST_CHECK( value->Get<int>() == 100 );
689
690   value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT,   Property::INTEGER );
691   DALI_TEST_CHECK( value );
692   DALI_TEST_CHECK( value->Get<int>() == 200 );
693
694   value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 );
695   DALI_TEST_CHECK( value );
696   DALI_TEST_EQUALS( value->Get<Vector4>(), Vector4( 0.f, 0.f, 1.f, 1.f ), Math::MACHINE_EPSILON_100, TEST_LOCATION );
697
698   value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER );
699   DALI_TEST_CHECK( value );
700   DALI_TEST_CHECK(  value->Get<int>() == WrapMode::DEFAULT);
701
702   value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER );
703   DALI_TEST_CHECK( value );
704   DALI_TEST_CHECK(  value->Get<int>() == WrapMode::DEFAULT);
705
706   value = resultMap.Find( "synchronousLoading",   Property::BOOLEAN );
707   DALI_TEST_CHECK( value );
708   DALI_TEST_CHECK( value->Get<bool>() == false );
709
710   // Test the properties. TODO: to be completed.
711   imageVisual.SetProperty( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
712   Property::Value imageValue = imageVisual.GetProperty( ImageVisual::Property::URL );
713
714   END_TEST;
715 }
716
717 int UtcDaliVisualGetPropertyMap6(void)
718 {
719   ToolkitTestApplication application;
720   tet_infoline( "UtcDaliVisualGetPropertyMap6: NPatchVisual" );
721
722   VisualFactory factory = VisualFactory::Get();
723   Property::Map propertyMap;
724   propertyMap.Insert( Visual::Property::TYPE,  Visual::IMAGE );
725   propertyMap.Insert( ImageVisual::Property::URL,  TEST_NPATCH_FILE_NAME );
726   propertyMap.Insert( ImageVisual::Property::BORDER_ONLY,  true );
727   Visual::Base nPatchVisual = factory.CreateVisual( propertyMap );
728
729   Property::Map resultMap;
730   nPatchVisual.CreatePropertyMap( resultMap );
731
732   // check the property values from the returned map from visual
733   Property::Value* value = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
734   DALI_TEST_CHECK( value );
735   DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
736
737   value = resultMap.Find( ImageVisual::Property::URL,  Property::STRING );
738   DALI_TEST_CHECK( value );
739   DALI_TEST_CHECK( value->Get<std::string>() == TEST_NPATCH_FILE_NAME );
740
741   value = resultMap.Find( ImageVisual::Property::BORDER_ONLY,  Property::BOOLEAN );
742   DALI_TEST_CHECK( value );
743   DALI_TEST_CHECK( value->Get<bool>() );
744
745   // Test the properties. TODO: to be completed.
746   nPatchVisual.SetProperty( ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME );
747   Property::Value nPatchValue = nPatchVisual.GetProperty( ImageVisual::Property::URL );
748
749   END_TEST;
750 }
751
752 int UtcDaliVisualGetPropertyMap7(void)
753 {
754   ToolkitTestApplication application;
755   tet_infoline( "UtcDaliVisualGetPropertyMap7: SvgVisual" );
756
757   // request SvgVisual with a property map
758   VisualFactory factory = VisualFactory::Get();
759   Property::Map propertyMap;
760   propertyMap.Insert( Visual::Property::TYPE,  Visual::IMAGE );
761   propertyMap.Insert( ImageVisual::Property::URL, TEST_SVG_FILE_NAME );
762   Visual::Base svgVisual = factory.CreateVisual( propertyMap );
763
764   Property::Map resultMap;
765   svgVisual.CreatePropertyMap( resultMap );
766   // check the property values from the returned map from a visual
767   Property::Value* value = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
768   DALI_TEST_CHECK( value );
769   DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
770
771   value = resultMap.Find( ImageVisual::Property::URL,  Property::STRING );
772   DALI_TEST_CHECK( value );
773   DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
774
775   // request SvgVisual with an URL
776   Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() );
777   resultMap.Clear();
778   svgVisual2.CreatePropertyMap( resultMap );
779   // check the property values from the returned map from a visual
780   value = resultMap.Find( Visual::Property::TYPE,  Property::INTEGER );
781   DALI_TEST_CHECK( value );
782   DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
783
784   value = resultMap.Find( ImageVisual::Property::URL,  Property::STRING );
785   DALI_TEST_CHECK( value );
786   DALI_TEST_CHECK( value->Get<std::string>() == TEST_SVG_FILE_NAME );
787
788   // Test the properties. TODO: to be completed.
789   svgVisual.SetProperty( ImageVisual::Property::URL, TEST_SVG_FILE_NAME );
790   Property::Value svgValue = svgVisual.GetProperty( ImageVisual::Property::URL );
791
792   END_TEST;
793 }
794
795 //Mesh visual
796 int UtcDaliVisualGetPropertyMap8(void)
797 {
798   ToolkitTestApplication application;
799   tet_infoline( "UtcDaliVisualGetPropertyMap8: MeshVisual" );
800
801   //Request MeshVisual using a property map.
802   VisualFactory factory = VisualFactory::Get();
803   Property::Map propertyMap;
804   propertyMap.Insert( Visual::Property::TYPE, Visual::MESH );
805   propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
806   propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
807   propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_LOCATION );
808   propertyMap.Insert( MeshVisual::Property::SHADING_MODE, MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
809   propertyMap.Insert( MeshVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
810   Visual::Base meshVisual = factory.CreateVisual( propertyMap );
811
812   Property::Map resultMap;
813   meshVisual.CreatePropertyMap( resultMap );
814
815   //Check values in the result map are identical to the initial map's values.
816   Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
817   DALI_TEST_CHECK( value );
818   DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::MESH, TEST_LOCATION );
819
820   value = resultMap.Find( MeshVisual::Property::OBJECT_URL, Property::STRING );
821   DALI_TEST_CHECK( value );
822   DALI_TEST_EQUALS( value->Get<std::string>(), TEST_OBJ_FILE_NAME, TEST_LOCATION );
823
824   value = resultMap.Find( MeshVisual::Property::MATERIAL_URL, Property::STRING );
825   DALI_TEST_CHECK( value );
826   DALI_TEST_EQUALS( value->Get<std::string>(), TEST_MTL_FILE_NAME, TEST_LOCATION );
827
828   value = resultMap.Find( MeshVisual::Property::TEXTURES_PATH, Property::STRING );
829   DALI_TEST_CHECK( value );
830   DALI_TEST_EQUALS( value->Get<std::string>(), TEST_RESOURCE_LOCATION, TEST_LOCATION );
831
832   value = resultMap.Find( MeshVisual::Property::SHADING_MODE, Property::INTEGER );
833   DALI_TEST_CHECK( value );
834   DALI_TEST_EQUALS( value->Get<int>(), (int)MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING, TEST_LOCATION );
835
836   value = resultMap.Find( MeshVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
837   DALI_TEST_CHECK( value );
838   DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
839
840   // Test the properties. TODO: to be completed.
841   meshVisual.SetProperty( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
842   Property::Value meshValue = meshVisual.GetProperty( MeshVisual::Property::OBJECT_URL );
843
844   END_TEST;
845 }
846
847 //Primitive shape visual
848 int UtcDaliVisualGetPropertyMap9(void)
849 {
850   ToolkitTestApplication application;
851   tet_infoline( "UtcDaliVisualGetPropertyMap9: PrimitiveVisual" );
852
853   Vector4 color = Vector4( 1.0, 0.8, 0.6, 1.0);
854   Vector3 dimensions = Vector3( 1.0, 2.0, 3.0 );
855
856   //Request PrimitiveVisual using a property map.
857   VisualFactory factory = VisualFactory::Get();
858   Property::Map propertyMap;
859   propertyMap.Insert( Visual::Property::TYPE, Visual::PRIMITIVE );
860   propertyMap.Insert( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE );
861   propertyMap.Insert( PrimitiveVisual::Property::MIX_COLOR, color );
862   propertyMap.Insert( PrimitiveVisual::Property::SLICES, 10 );
863   propertyMap.Insert( PrimitiveVisual::Property::STACKS, 20 );
864   propertyMap.Insert( PrimitiveVisual::Property::SCALE_TOP_RADIUS, 30.0f );
865   propertyMap.Insert( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, 40.0f );
866   propertyMap.Insert( PrimitiveVisual::Property::SCALE_HEIGHT, 50.0f );
867   propertyMap.Insert( PrimitiveVisual::Property::SCALE_RADIUS, 60.0f );
868   propertyMap.Insert( PrimitiveVisual::Property::SCALE_DIMENSIONS, dimensions );
869   propertyMap.Insert( PrimitiveVisual::Property::BEVEL_PERCENTAGE, 0.3f );
870   propertyMap.Insert( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, 0.6f );
871   propertyMap.Insert( PrimitiveVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
872   Visual::Base primitiveVisual = factory.CreateVisual( propertyMap );
873
874   Property::Map resultMap;
875   primitiveVisual.CreatePropertyMap( resultMap );
876
877   //Check values in the result map are identical to the initial map's values.
878   Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
879   DALI_TEST_CHECK( value );
880   DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::PRIMITIVE, TEST_LOCATION );
881
882   value = resultMap.Find( PrimitiveVisual::Property::SHAPE, Property::INTEGER );
883   DALI_TEST_CHECK( value );
884   DALI_TEST_EQUALS( value->Get<int>(), (int)PrimitiveVisual::Shape::CUBE, TEST_LOCATION );
885
886   value = resultMap.Find( PrimitiveVisual::Property::MIX_COLOR, Property::VECTOR4 );
887   DALI_TEST_CHECK( value );
888   DALI_TEST_CHECK( value->Get<Vector4>() == color );
889   DALI_TEST_EQUALS( value->Get<Vector4>(), color, Math::MACHINE_EPSILON_100, TEST_LOCATION );
890
891   value = resultMap.Find( PrimitiveVisual::Property::SLICES, Property::INTEGER );
892   DALI_TEST_CHECK( value );
893   DALI_TEST_EQUALS( value->Get<int>(), 10, TEST_LOCATION );
894
895   value = resultMap.Find( PrimitiveVisual::Property::STACKS, Property::INTEGER );
896   DALI_TEST_CHECK( value );
897   DALI_TEST_EQUALS( value->Get<int>(), 20, TEST_LOCATION );
898
899   value = resultMap.Find( PrimitiveVisual::Property::SCALE_TOP_RADIUS, Property::FLOAT );
900   DALI_TEST_CHECK( value );
901   DALI_TEST_EQUALS( value->Get<float>(), 30.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
902
903   value = resultMap.Find( PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, Property::FLOAT );
904   DALI_TEST_CHECK( value );
905   DALI_TEST_EQUALS( value->Get<float>(), 40.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
906
907   value = resultMap.Find( PrimitiveVisual::Property::SCALE_HEIGHT, Property::FLOAT );
908   DALI_TEST_CHECK( value );
909   DALI_TEST_EQUALS( value->Get<float>(), 50.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
910
911   value = resultMap.Find( PrimitiveVisual::Property::SCALE_RADIUS, Property::FLOAT );
912   DALI_TEST_CHECK( value );
913   DALI_TEST_EQUALS( value->Get<float>(), 60.0f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
914
915   value = resultMap.Find( PrimitiveVisual::Property::SCALE_DIMENSIONS, Property::VECTOR3 );
916   DALI_TEST_CHECK( value );
917   DALI_TEST_EQUALS( value->Get<Vector3>(), dimensions, Math::MACHINE_EPSILON_100, TEST_LOCATION );
918
919   value = resultMap.Find( PrimitiveVisual::Property::BEVEL_PERCENTAGE, Property::FLOAT );
920   DALI_TEST_CHECK( value );
921   DALI_TEST_EQUALS( value->Get<float>(), 0.3f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
922
923   value = resultMap.Find( PrimitiveVisual::Property::BEVEL_SMOOTHNESS, Property::FLOAT );
924   DALI_TEST_CHECK( value );
925   DALI_TEST_EQUALS( value->Get<float>(), 0.6f, Math::MACHINE_EPSILON_100, TEST_LOCATION );
926
927   value = resultMap.Find( PrimitiveVisual::Property::LIGHT_POSITION, Property::VECTOR3 );
928   DALI_TEST_CHECK( value );
929   DALI_TEST_EQUALS( value->Get<Vector3>(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION );
930
931   // Test the properties. TODO: to be completed.
932   primitiveVisual.SetProperty( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE );
933   Property::Value primitiveValue = primitiveVisual.GetProperty( PrimitiveVisual::Property::SHAPE );
934
935   END_TEST;
936 }
937
938 int UtcDaliVisualGetPropertyMapBatchImageVisual(void)
939 {
940   ToolkitTestApplication application;
941   tet_infoline( "UtcDaliVisualGetPropertyMapBatchImageVisual:" );
942
943   VisualFactory factory = VisualFactory::Get();
944   Property::Map propertyMap;
945   propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
946   propertyMap.Insert( ImageVisual::Property::BATCHING_ENABLED, true );
947   propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
948   propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 20 );
949   propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 30 );
950
951   Visual::Base batchImageVisual = factory.CreateVisual( propertyMap );
952   DALI_TEST_CHECK( batchImageVisual );
953
954   Property::Map resultMap;
955   batchImageVisual.CreatePropertyMap( resultMap );
956
957   // Check the property values from the returned map from visual
958   Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
959   DALI_TEST_CHECK( value );
960   DALI_TEST_CHECK( value->Get<int>() == Visual::IMAGE );
961
962   value = resultMap.Find( ImageVisual::Property::URL, Property::STRING );
963   DALI_TEST_CHECK( value );
964   DALI_TEST_CHECK( value->Get<std::string>() == TEST_IMAGE_FILE_NAME );
965
966   value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER );
967   DALI_TEST_CHECK( value );
968   DALI_TEST_CHECK( value->Get<int>() == 20 );
969
970   value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER );
971   DALI_TEST_CHECK( value );
972   DALI_TEST_CHECK( value->Get<int>() == 30 );
973
974   // Test the properties. TODO: to be completed.
975   batchImageVisual.SetProperty( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
976   Property::Value primitiveValue = batchImageVisual.GetProperty( ImageVisual::Property::URL );
977
978   END_TEST;
979 }
980
981 //Text shape visual
982 int UtcDaliVisualGetPropertyMap10(void)
983 {
984   ToolkitTestApplication application;
985   tet_infoline( "UtcDaliVisualGetPropertyMap10: TextVisual" );
986
987   //Request PrimitiveVisual using a property map.
988   VisualFactory factory = VisualFactory::Get();
989
990   Property::Map propertyMap;
991   propertyMap.Insert( Visual::Property::TYPE, Visual::TEXT );
992   propertyMap.Insert( "renderingBackend", static_cast<int>( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) );
993   propertyMap.Insert( "text", "Hello world" );
994   propertyMap.Insert( "fontFamily", "TizenSans" );
995
996   Property::Map fontStyleMapSet;
997   fontStyleMapSet.Insert( "weight", "bold" );
998   propertyMap.Insert( "fontStyle", fontStyleMapSet );
999
1000   propertyMap.Insert( "pointSize", 12.f );
1001   propertyMap.Insert( "multiLine", true );
1002   propertyMap.Insert( "horizontalAlignment", "CENTER" );
1003   propertyMap.Insert( "verticalAlignment", "CENTER" );
1004   propertyMap.Insert( "textColor", Color::RED );
1005   propertyMap.Insert( "enableMarkup", false );
1006   propertyMap.Insert( "enableAutoScroll", false );
1007   propertyMap.Insert( "lineSpacing", 0.f );
1008   propertyMap.Insert( "batchingEnabled", false );
1009   Visual::Base textVisual = factory.CreateVisual( propertyMap );
1010
1011   Property::Map resultMap;
1012   textVisual.CreatePropertyMap( resultMap );
1013
1014   //Check values in the result map are identical to the initial map's values.
1015   Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1016   DALI_TEST_CHECK( value );
1017   DALI_TEST_EQUALS( value->Get<int>(), (int)Visual::TEXT, TEST_LOCATION );
1018
1019   value = resultMap.Find( TextVisual::Property::RENDERING_BACKEND, Property::INTEGER );
1020   DALI_TEST_CHECK( value );
1021   DALI_TEST_EQUALS( value->Get<int>(), Toolkit::Text::DEFAULT_RENDERING_BACKEND, TEST_LOCATION );
1022
1023   value = resultMap.Find( TextVisual::Property::TEXT, Property::STRING );
1024   DALI_TEST_CHECK( value );
1025   DALI_TEST_EQUALS( value->Get<std::string>(), "Hello world", TEST_LOCATION );
1026
1027   value = resultMap.Find( TextVisual::Property::FONT_FAMILY, Property::STRING );
1028   DALI_TEST_CHECK( value );
1029   DALI_TEST_EQUALS( value->Get<std::string>(), "TizenSans", TEST_LOCATION );
1030
1031   value = resultMap.Find( TextVisual::Property::FONT_STYLE, Property::MAP );
1032   DALI_TEST_CHECK( value );
1033
1034   Property::Map fontStyleMapGet = value->Get<Property::Map>();
1035   DALI_TEST_EQUALS( fontStyleMapGet.Count(), fontStyleMapSet.Count(), TEST_LOCATION );
1036   DALI_TEST_EQUALS( DaliTestCheckMaps( fontStyleMapGet, fontStyleMapSet ), true, TEST_LOCATION );
1037
1038   value = resultMap.Find( TextVisual::Property::POINT_SIZE, Property::FLOAT );
1039   DALI_TEST_CHECK( value );
1040   DALI_TEST_EQUALS( value->Get<float>(), 12.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
1041
1042   value = resultMap.Find( TextVisual::Property::MULTI_LINE, Property::BOOLEAN );
1043   DALI_TEST_CHECK( value );
1044   DALI_TEST_CHECK( value->Get<bool>() );
1045
1046   value = resultMap.Find( TextVisual::Property::HORIZONTAL_ALIGNMENT, Property::STRING );
1047   DALI_TEST_CHECK( value );
1048   DALI_TEST_EQUALS( value->Get<std::string>(), "CENTER", TEST_LOCATION );
1049
1050   value = resultMap.Find( TextVisual::Property::VERTICAL_ALIGNMENT, Property::STRING );
1051   DALI_TEST_CHECK( value );
1052   DALI_TEST_EQUALS( value->Get<std::string>(), "CENTER", TEST_LOCATION );
1053
1054   value = resultMap.Find( TextVisual::Property::TEXT_COLOR, Property::VECTOR4 );
1055   DALI_TEST_CHECK( value );
1056   DALI_TEST_EQUALS( value->Get<Vector4>(), Color::RED, TEST_LOCATION );
1057
1058   value = resultMap.Find( TextVisual::Property::ENABLE_MARKUP, Property::BOOLEAN );
1059   DALI_TEST_CHECK( value );
1060   DALI_TEST_CHECK( !value->Get<bool>() );
1061
1062   value = resultMap.Find( TextVisual::Property::ENABLE_AUTO_SCROLL, Property::BOOLEAN );
1063   DALI_TEST_CHECK( value );
1064   DALI_TEST_CHECK( !value->Get<bool>() );
1065
1066   value = resultMap.Find( TextVisual::Property::LINE_SPACING, Property::FLOAT );
1067   DALI_TEST_CHECK( value );
1068   DALI_TEST_EQUALS( value->Get<float>(), 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
1069
1070   value = resultMap.Find( TextVisual::Property::BATCHING_ENABLED, Property::BOOLEAN );
1071   DALI_TEST_CHECK( value );
1072   DALI_TEST_CHECK( !value->Get<bool>() );
1073
1074   END_TEST;
1075 }
1076
1077 int UtcDaliVisualGetPropertyMapBatchImageVisualNoAtlas(void)
1078 {
1079   ToolkitTestApplication application;
1080   tet_infoline( "UtcDaliVisualGetPropertyMapBatchImageVisualNoAtlas:" );
1081
1082   VisualFactory factory = VisualFactory::Get();
1083   Property::Map propertyMap;
1084   propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE );
1085   propertyMap.Insert( ImageVisual::Property::BATCHING_ENABLED, true );
1086   propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME );
1087
1088   // Set the desired size to be larger than the atlas limit of 1024x1024.
1089   propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 2048 );
1090   propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 2048 );
1091
1092   // Create the visual.
1093   Visual::Base batchImageVisual = factory.CreateVisual( propertyMap );
1094
1095   DALI_TEST_CHECK( batchImageVisual );
1096
1097   Actor actor = Actor::New();
1098   batchImageVisual.SetOnStage( actor );
1099
1100   DALI_TEST_CHECK( actor.GetRendererCount() == 1u );
1101
1102   END_TEST;
1103 }
1104
1105 int UtcDaliVisualAnimateBorderVisual01(void)
1106 {
1107   ToolkitTestApplication application;
1108   tet_infoline( "UtcDaliAnimateBorderVisual Color" );
1109
1110   VisualFactory factory = VisualFactory::Get();
1111   Property::Map propertyMap;
1112   propertyMap.Insert(Visual::Property::TYPE,  Visual::BORDER);
1113   propertyMap.Insert(BorderVisual::Property::COLOR,  Color::BLUE);
1114   propertyMap.Insert(BorderVisual::Property::SIZE,  5.f);
1115   Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1116
1117   Actor actor = Actor::New();
1118   actor.SetSize(2000, 2000);
1119   actor.SetParentOrigin(ParentOrigin::CENTER);
1120   Stage::GetCurrent().Add(actor);
1121   borderVisual.SetOnStage( actor );
1122
1123   DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1124
1125   Renderer renderer = actor.GetRendererAt(0);
1126   Property::Index index = renderer.GetPropertyIndex( BorderVisual::Property::COLOR );
1127
1128   Animation animation = Animation::New(4.0f);
1129   animation.AnimateTo( Property(renderer, index), Color::WHITE );
1130   animation.Play();
1131
1132   application.SendNotification();
1133   application.Render(0);
1134   application.Render(2000u); // halfway point between blue and white
1135
1136   Vector4 color = renderer.GetProperty<Vector4>( index );
1137   Vector4 testColor = (Color::BLUE + Color::WHITE)*0.5f;
1138   DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1139   DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", testColor ), true, TEST_LOCATION );
1140
1141   application.Render(2000u); // halfway point between blue and white
1142
1143   color = renderer.GetProperty<Vector4>( index );
1144   DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION );
1145   DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("borderColor", Color::WHITE ), true, TEST_LOCATION );
1146
1147   END_TEST;
1148 }
1149
1150
1151 int UtcDaliVisualAnimateBorderVisual02(void)
1152 {
1153   ToolkitTestApplication application;
1154   tet_infoline( "UtcDaliAnimateBorderVisual Size" );
1155
1156   VisualFactory factory = VisualFactory::Get();
1157   Property::Map propertyMap;
1158   propertyMap.Insert(Visual::Property::TYPE,  Visual::BORDER);
1159   propertyMap.Insert(BorderVisual::Property::COLOR,  Color::BLUE);
1160   propertyMap.Insert(BorderVisual::Property::SIZE,  5.f);
1161   Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1162
1163   Actor actor = Actor::New();
1164   actor.SetSize(2000, 2000);
1165   actor.SetParentOrigin(ParentOrigin::CENTER);
1166   Stage::GetCurrent().Add(actor);
1167   borderVisual.SetOnStage( actor );
1168
1169   DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1170
1171   Renderer renderer = actor.GetRendererAt(0);
1172   Property::Index index = renderer.GetPropertyIndex( BorderVisual::Property::SIZE );
1173
1174   Animation animation = Animation::New(4.0f);
1175   animation.AnimateTo( Property(renderer, index), 9.0f );
1176   animation.Play();
1177
1178   application.SendNotification();
1179   application.Render(0);
1180   application.Render(2000u); // halfway point
1181
1182   float size = renderer.GetProperty<float>( index );
1183   DALI_TEST_EQUALS( size, 7.0f, 0.0001f, TEST_LOCATION );
1184   DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 7.0f ), true, TEST_LOCATION );
1185
1186   application.Render(2000u); // halfway point between blue and white
1187
1188   size = renderer.GetProperty<float>( index );
1189   DALI_TEST_EQUALS( size, 9.0f, 0.0001f, TEST_LOCATION );
1190   DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<float>("borderSize", 9.0f ), true, TEST_LOCATION );
1191
1192   END_TEST;
1193 }
1194
1195 int UtcDaliVisualAnimateColorVisual(void)
1196 {
1197   ToolkitTestApplication application;
1198   tet_infoline( "UtcDaliAnimateColorVisual mixColor" );
1199
1200   VisualFactory factory = VisualFactory::Get();
1201   Property::Map propertyMap;
1202   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
1203   propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1204   Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1205
1206   Actor actor = Actor::New();
1207   actor.SetSize(2000, 2000);
1208   actor.SetParentOrigin(ParentOrigin::CENTER);
1209   Stage::GetCurrent().Add(actor);
1210   borderVisual.SetOnStage( actor );
1211
1212   DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1213
1214   Renderer renderer = actor.GetRendererAt(0);
1215   Property::Index index = renderer.GetPropertyIndex( ColorVisual::Property::MIX_COLOR );
1216
1217   Animation animation = Animation::New(4.0f);
1218   animation.AnimateTo( Property(renderer, index), Color::WHITE );
1219   animation.Play();
1220
1221   application.SendNotification();
1222   application.Render(0);
1223   application.Render(2000u); // halfway point
1224
1225   Vector4 color = renderer.GetProperty<Vector4>( index );
1226   Vector4 testColor = (Color::BLUE + Color::WHITE)*0.5f;
1227   DALI_TEST_EQUALS( color, testColor, TEST_LOCATION );
1228
1229   DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", testColor ), true, TEST_LOCATION );
1230
1231   application.Render(2000u); // halfway point between blue and white
1232
1233   color = renderer.GetProperty<Vector4>( index );
1234   DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION );
1235
1236   DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("mixColor", Color::WHITE ), true, TEST_LOCATION );
1237
1238
1239   END_TEST;
1240 }
1241
1242
1243 int UtcDaliVisualAnimatePrimitiveVisual(void)
1244 {
1245   ToolkitTestApplication application;
1246   tet_infoline( "UtcDaliAnimatePrimitiveVisual color" );
1247
1248   VisualFactory factory = VisualFactory::Get();
1249   Property::Map propertyMap;
1250   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
1251   propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1252   Visual::Base borderVisual = factory.CreateVisual( propertyMap );
1253
1254   Actor actor = Actor::New();
1255   actor.SetSize(2000, 2000);
1256   actor.SetParentOrigin(ParentOrigin::CENTER);
1257   actor.SetColor(Color::BLACK);
1258   Stage::GetCurrent().Add(actor);
1259   borderVisual.SetOnStage( actor );
1260
1261   DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION);
1262
1263   Renderer renderer = actor.GetRendererAt(0);
1264   Property::Index index = renderer.GetPropertyIndex( PrimitiveVisual::Property::MIX_COLOR );
1265
1266   // The property isn't registered on the renderer, it's instead registered on the shader.
1267   DALI_TEST_EQUALS( index, Property::INVALID_INDEX, TEST_LOCATION );
1268
1269   Animation animation = Animation::New(4.0f);
1270   animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE );
1271   animation.Play();
1272
1273   application.SendNotification();
1274   application.Render(0);
1275   application.Render(2000u); // halfway point
1276
1277   // Actor color overrides renderer color.
1278   DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Vector4(0.5f, 0.5f, 0.5f, 1.0f )), true, TEST_LOCATION );
1279
1280   application.Render(2000u); // halfway point between blue and white
1281
1282   DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::WHITE, TEST_LOCATION );
1283   DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue<Vector4>("uColor", Color::WHITE ), true, TEST_LOCATION );
1284
1285
1286   END_TEST;
1287 }
1288
1289 int UtcDaliVisualWireframeVisual(void)
1290 {
1291   ToolkitTestApplication application;
1292
1293   VisualFactory factory = VisualFactory::Get();
1294   Property::Map propertyMap;
1295   propertyMap.Insert( Visual::Property::TYPE, Visual::WIREFRAME );
1296
1297   // Create the visual.
1298   Visual::Base visual = factory.CreateVisual( propertyMap );
1299
1300   DALI_TEST_CHECK( visual );
1301
1302   Property::Map resultMap;
1303   visual.CreatePropertyMap( resultMap );
1304
1305   // Check the property values from the returned map from visual
1306   Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER );
1307   DALI_TEST_CHECK( value );
1308   DALI_TEST_CHECK( value->Get<int>() == Visual::WIREFRAME );
1309
1310   // Test the properties. TODO: to be completed.
1311   Property::Value primitiveValue = visual.GetProperty( Visual::Property::TYPE );
1312
1313   END_TEST;
1314 }
1315
1316 int UtcDaliVisualGetTransform(void)
1317 {
1318   ToolkitTestApplication application;
1319   tet_infoline( "UtcDaliVisualGetTransform: ColorVisual" );
1320
1321   VisualFactory factory = VisualFactory::Get();
1322   Property::Map propertyMap;
1323   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
1324   propertyMap.Insert(ColorVisual::Property::MIX_COLOR,  Color::BLUE);
1325   Visual::Base colorVisual = factory.CreateVisual( propertyMap );
1326
1327   Dali::Property::Map map;
1328   Dali::Property::Value transformProperty = colorVisual.GetProperty( Dali::Toolkit::Visual::DevelProperty::TRANSFORM );
1329   transformProperty.Get(map);
1330
1331   //Test default values
1332   {
1333     Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::OFFSET );
1334     DALI_TEST_CHECK( typeValue );
1335     DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(0.0f,0.0f) );
1336   }
1337   {
1338     Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::SIZE );
1339     DALI_TEST_CHECK( typeValue );
1340     DALI_TEST_CHECK( typeValue->Get<Vector2>() == Vector2(1.0f,1.0f) );
1341   }
1342   {
1343     Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::OFFSET_SIZE_MODE );
1344     DALI_TEST_CHECK( typeValue );
1345     DALI_TEST_CHECK( typeValue->Get<Vector4>() == Vector4(0.0f,0.0f,0.0f,0.0f) );
1346   }
1347   {
1348     Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::ORIGIN );
1349     DALI_TEST_CHECK( typeValue );
1350     DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::CENTER );
1351   }
1352   {
1353     Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::ANCHOR_POINT );
1354     DALI_TEST_CHECK( typeValue );
1355     DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get<int>() == Toolkit::Align::CENTER );
1356   }
1357
1358   END_TEST;
1359 }
1360
1361 static void TestTransform( ToolkitTestApplication& application, Visual::Base visual )
1362 {
1363   Property::Map transform;
1364   transform.Insert( Visual::DevelProperty::Transform::Property::OFFSET, Vector2(10.0f, 10.0f) );
1365   transform.Insert( Visual::DevelProperty::Transform::Property::SIZE, Vector2(0.2f, 0.2f) );
1366   transform.Insert( Visual::DevelProperty::Transform::Property::OFFSET_SIZE_MODE, Vector4(1.0f, 1.0f, 0.0f,0.0f) );
1367   transform.Insert( Visual::DevelProperty::Transform::Property::ORIGIN, "TOP_BEGIN" );
1368   transform.Insert( Visual::DevelProperty::Transform::Property::ANCHOR_POINT, Toolkit::Align::BOTTOM_END );
1369
1370   visual.SetProperty( Dali::Toolkit::Visual::DevelProperty::TRANSFORM, transform );
1371
1372   Dali::Property::Map map;
1373   Dali::Property::Value transformProperty = visual.GetProperty( Dali::Toolkit::Visual::DevelProperty::TRANSFORM );
1374   transformProperty.Get(map);
1375
1376   {
1377     Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::OFFSET );
1378     DALI_TEST_CHECK( typeValue );
1379     DALI_TEST_EQUALS( typeValue->Get<Vector2>(),Vector2(10.0f,10.0f), TEST_LOCATION );
1380   }
1381   {
1382     Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::SIZE );
1383     DALI_TEST_CHECK( typeValue );
1384     DALI_TEST_EQUALS( typeValue->Get<Vector2>(), Vector2(0.2f,0.2f), TEST_LOCATION );
1385   }
1386   {
1387     Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::OFFSET_SIZE_MODE );
1388     DALI_TEST_CHECK( typeValue );
1389     DALI_TEST_EQUALS( typeValue->Get<Vector4>(), Vector4(1.0f,1.0f,0.0f,0.0f), TEST_LOCATION );
1390   }
1391   {
1392     Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::ORIGIN );
1393     DALI_TEST_CHECK( typeValue );
1394     DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::TOP_BEGIN, TEST_LOCATION );
1395   }
1396   {
1397     Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::ANCHOR_POINT );
1398     DALI_TEST_CHECK( typeValue );
1399     DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get<int>(), Toolkit::Align::BOTTOM_END, TEST_LOCATION );
1400   }
1401
1402   //Put the visual on the stage
1403   Actor actor = Actor::New();
1404   actor.SetSize(200.f, 200.f);
1405   Stage::GetCurrent().Add( actor );
1406   visual.SetOnStage( actor );
1407   application.SendNotification();
1408   application.Render(0);
1409   Renderer renderer( actor.GetRendererAt(0) );
1410
1411   //Check that the properties have been registered on the Renderer
1412   Vector2 offset = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "offset" ) );
1413   DALI_TEST_EQUALS( offset, Vector2(10.0f,10.0f), TEST_LOCATION );
1414
1415   Vector2 size = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "size" ) );
1416   DALI_TEST_EQUALS( size, Vector2(0.2f,0.2f), TEST_LOCATION );
1417
1418   Vector4 offsetSizeMode = renderer.GetProperty<Vector4>( renderer.GetPropertyIndex( "offsetSizeMode" ) );
1419   DALI_TEST_EQUALS( offsetSizeMode, Vector4(1.0f,1.0f,0.0f,0.0f), TEST_LOCATION );
1420
1421   Vector2 parentOrigin = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "origin" ) );
1422   DALI_TEST_EQUALS( parentOrigin, Vector2(-0.5f,-0.5f), TEST_LOCATION );
1423
1424   Vector2 anchorPoint = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "anchorPoint" ) );
1425   DALI_TEST_EQUALS( anchorPoint, Vector2(-0.5f,-0.5f), TEST_LOCATION );
1426
1427   //Set a new transform
1428   transform.Clear();
1429   transform.Insert( Visual::DevelProperty::Transform::Property::OFFSET, Vector2(20.0f, 20.0f) );
1430   transform.Insert( Visual::DevelProperty::Transform::Property::SIZE, Vector2(100.0f, 100.0f) );
1431   transform.Insert( Visual::DevelProperty::Transform::Property::OFFSET_SIZE_MODE, Vector4(0.0f, 0.0f, 1.0f,1.0f) );
1432   visual.SetProperty( Dali::Toolkit::Visual::DevelProperty::TRANSFORM, transform );
1433   application.SendNotification();
1434   application.Render(0);
1435
1436   //Check that the values have changed in the renderer
1437   offset = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "offset" ) );
1438   DALI_TEST_EQUALS( offset, Vector2(20.0f,20.0f), TEST_LOCATION );
1439
1440   size = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "size" ) );
1441   DALI_TEST_EQUALS( size, Vector2(100.0f,100.0f), TEST_LOCATION );
1442
1443   offsetSizeMode = renderer.GetProperty<Vector4>( renderer.GetPropertyIndex( "offsetSizeMode" ) );
1444   DALI_TEST_EQUALS( offsetSizeMode, Vector4(0.0f,0.0f,1.0f,1.0f), TEST_LOCATION );
1445
1446   //Parent origin and anchor point should have default values
1447   parentOrigin = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "origin" ) );
1448   DALI_TEST_EQUALS( parentOrigin, Vector2(0.0f,0.0f), TEST_LOCATION );
1449
1450   anchorPoint = renderer.GetProperty<Vector2>( renderer.GetPropertyIndex( "anchorPoint" ) );
1451   DALI_TEST_EQUALS( anchorPoint, Vector2(0.0f,0.0f), TEST_LOCATION );
1452 }
1453
1454 int UtcDaliVisualSetTransform0(void)
1455 {
1456   ToolkitTestApplication application;
1457   tet_infoline( "UtcDaliVisualSetTransform: ColorVisual" );
1458
1459   VisualFactory factory = VisualFactory::Get();
1460   Property::Map propertyMap;
1461   propertyMap.Insert(Visual::Property::TYPE,  Visual::COLOR);
1462   propertyMap.Insert(ColorVisual::Property::MIX_COLOR,  Color::BLUE);
1463   Visual::Base visual = factory.CreateVisual( propertyMap );
1464   TestTransform( application, visual );
1465
1466   END_TEST;
1467 }
1468
1469 int UtcDaliVisualSetTransform1(void)
1470 {
1471   ToolkitTestApplication application;
1472   tet_infoline( "UtcDaliVisualSetTransform: PrimitiveVisual" );
1473
1474   VisualFactory factory = VisualFactory::Get();
1475   Property::Map propertyMap;
1476   propertyMap[ Visual::Property::TYPE           ] = Visual::PRIMITIVE;
1477   propertyMap[ PrimitiveVisual::Property::MIX_COLOR ] = Vector4(1.0f,1.0f,1.0f,1.0f);
1478   propertyMap[ PrimitiveVisual::Property::SHAPE  ] = PrimitiveVisual::Shape::SPHERE;
1479   propertyMap[ PrimitiveVisual::Property::SLICES ] = 10;
1480   propertyMap[ PrimitiveVisual::Property::STACKS ] = 10;
1481   Visual::Base visual = factory.CreateVisual( propertyMap );
1482   TestTransform( application, visual );
1483
1484   END_TEST;
1485 }
1486
1487 int UtcDaliVisualSetTransform2(void)
1488 {
1489   ToolkitTestApplication application;
1490   tet_infoline( "UtcDaliVisualSetTransform: GradientVisual" );
1491
1492   VisualFactory factory = VisualFactory::Get();
1493   Property::Map propertyMap;
1494   propertyMap.Insert( Visual::Property::TYPE,  Visual::GRADIENT );
1495   Property::Array stopOffsets;
1496   stopOffsets.PushBack( 0.0f );
1497   stopOffsets.PushBack( 0.3f );
1498   stopOffsets.PushBack( 0.6f );
1499   stopOffsets.PushBack( 0.8f );
1500   stopOffsets.PushBack( 1.0f );
1501   propertyMap.Insert( GradientVisual::Property::STOP_OFFSET, stopOffsets );
1502
1503   Property::Array stopColors;
1504   stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 255.f )/255.f );
1505   stopColors.PushBack( Vector4( 196.f, 198.f, 71.f, 122.f )/255.f );
1506   stopColors.PushBack( Vector4( 214.f, 37.f, 139.f, 191.f )/255.f );
1507   stopColors.PushBack( Vector4( 129.f, 198.f, 193.f, 150.f )/255.f );
1508   stopColors.PushBack( Color::YELLOW );
1509   propertyMap.Insert( GradientVisual::Property::STOP_COLOR, stopColors );
1510   propertyMap.Insert( GradientVisual::Property::CENTER, Vector2( 0.5f, 0.5f ) );
1511   propertyMap.Insert( GradientVisual::Property::RADIUS, 1.414f );
1512   Visual::Base visual = factory.CreateVisual( propertyMap );
1513   TestTransform( application, visual );
1514
1515   END_TEST;
1516 }
1517
1518 int UtcDaliVisualSetTransform3(void)
1519 {
1520   ToolkitTestApplication application;
1521   tet_infoline( "UtcDaliVisualSetTransform: BorderVisual" );
1522
1523   VisualFactory factory = VisualFactory::Get();
1524   Property::Map propertyMap;
1525   propertyMap.Insert( Visual::Property::TYPE, Visual::BORDER );
1526   propertyMap.Insert( BorderVisual::Property::COLOR, Vector4(0.f, 1.f, 0.f, 0.6f) );
1527   propertyMap.Insert( BorderVisual::Property::SIZE, 3.0f );
1528   Visual::Base visual = factory.CreateVisual( propertyMap );
1529   TestTransform( application, visual );
1530
1531   END_TEST;
1532 }
1533
1534 int UtcDaliVisualSetTransform4(void)
1535 {
1536   ToolkitTestApplication application;
1537   tet_infoline( "UtcDaliVisualSetTransform: MeshVisual" );
1538
1539   VisualFactory factory = VisualFactory::Get();
1540   Property::Map propertyMap;
1541   propertyMap.Insert( Visual::Property::TYPE, Visual::MESH );
1542   propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME );
1543   propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME );
1544   propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_LOCATION );
1545   propertyMap.Insert( MeshVisual::Property::SHADING_MODE, MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING );
1546   propertyMap.Insert( MeshVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) );
1547   Visual::Base visual = factory.CreateVisual( propertyMap );
1548   TestTransform( application, visual );
1549
1550   END_TEST;
1551 }
1552
1553 int UtcDaliVisualSetTransform5(void)
1554 {
1555   ToolkitTestApplication application;
1556   tet_infoline( "UtcDaliVisualSetTransform: ImageVisual from Image" );
1557
1558   VisualFactory factory = VisualFactory::Get();
1559   Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200));
1560   Visual::Base visual = factory.CreateVisual(image);
1561   TestTransform( application, visual );
1562
1563   END_TEST;
1564 }
1565
1566 int UtcDaliVisualSetTransform6(void)
1567 {
1568   ToolkitTestApplication application;
1569   tet_infoline( "UtcDaliVisualSetTransform: ImageVisual for URL " );
1570
1571   VisualFactory factory = VisualFactory::Get();
1572   Property::Map propertyMap;
1573   propertyMap[Toolkit::Visual::Property::TYPE] = Toolkit::Visual::IMAGE;
1574   propertyMap[Toolkit::ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME;
1575   propertyMap[Toolkit::ImageVisual::Property::DESIRED_WIDTH] = 100.0f;
1576   propertyMap[Toolkit::ImageVisual::Property::DESIRED_HEIGHT] = 100.0f;
1577   propertyMap[Toolkit::ImageVisual::Property::FITTING_MODE] = FittingMode::SCALE_TO_FILL;
1578   propertyMap[Toolkit::ImageVisual::Property::SAMPLING_MODE] = SamplingMode::BOX_THEN_LINEAR;
1579   propertyMap[Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING] = true;
1580   Visual::Base visual = factory.CreateVisual(propertyMap);
1581   TestTransform( application, visual );
1582
1583   END_TEST;
1584 }
1585
1586 int UtcDaliVisualSetTransform7(void)
1587 {
1588   ToolkitTestApplication application;
1589   tet_infoline( "UtcDaliVisualSetTransform: NPatch visual" );
1590
1591   VisualFactory factory = VisualFactory::Get();
1592   Image image = ResourceImage::New(TEST_NPATCH_FILE_NAME, ImageDimensions(100, 200));
1593   Visual::Base visual = factory.CreateVisual(image);
1594   TestTransform( application, visual );
1595
1596   END_TEST;
1597 }
1598
1599