[4.0] Add Property::EXTENTS type
[platform/core/uifw/dali-core.git] / automated-tests / src / dali / utc-Dali-PropertyValue.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
18 #include <iostream>
19 #include <iomanip>
20 #include <stdlib.h>
21 #include <dali/public-api/dali-core.h>
22 #include <dali-test-suite-utils.h>
23
24 using namespace Dali;
25
26 namespace
27 {
28
29 template <typename T>
30 struct CheckCopyCtorP
31 {
32   CheckCopyCtorP(Property::Value value)
33   {
34     Property::Value copy( value );
35     DALI_TEST_CHECK( value.Get<T>() == copy.Get<T>() );
36   }
37 };
38
39 } // unnamed namespace
40
41 void utc_dali_property_value_startup(void)
42 {
43   test_return_value = TET_UNDEF;
44 }
45
46 void utc_dali_property_value_cleanup(void)
47 {
48   test_return_value = TET_PASS;
49 }
50
51
52 int UtcDaliPropertyValueConstructorsNoneP(void)
53 {
54   Property::Value value;
55
56   DALI_TEST_CHECK( value.GetType() == Property::NONE );
57
58   END_TEST;
59 }
60
61 int UtcDaliPropertyValueConstructorsNoneTypeP(void)
62 {
63   Property::Value value( Property::NONE );
64
65   DALI_TEST_CHECK( value.GetType() == Property::NONE );
66
67   END_TEST;
68 }
69
70 int UtcDaliPropertyValueConstructorsBoolP(void)
71 {
72   Property::Value value(true);
73
74   DALI_TEST_CHECK( value.GetType() == Property::BOOLEAN );
75   DALI_TEST_CHECK( value.Get<bool>() == true );
76
77   END_TEST;
78 }
79
80 int UtcDaliPropertyValueConstructorBoolTypeP(void)
81 {
82   Property::Value value(Property::BOOLEAN);
83
84   DALI_TEST_CHECK( value.GetType() == Property::BOOLEAN );
85   DALI_TEST_CHECK( value.Get<bool>() == false );
86
87   END_TEST;
88 }
89
90 int UtcDaliPropertyValueConstructorsFloatP(void)
91 {
92   Property::Value value(2.f);
93
94   DALI_TEST_CHECK( value.GetType() == Property::FLOAT );
95   DALI_TEST_CHECK( value.Get<float>() == 2.f );
96
97   END_TEST;
98 }
99
100 int UtcDaliPropertyValueConstructorsFloatTypeP(void)
101 {
102   Property::Value value(Property::FLOAT);
103
104   DALI_TEST_CHECK( value.GetType() == Property::FLOAT );
105   DALI_TEST_CHECK( value.Get<float>() == 0.f );
106
107   END_TEST;
108 }
109
110 int UtcDaliPropertyValueConstructorsIntP(void)
111 {
112   Property::Value value(1);
113
114   DALI_TEST_CHECK( value.GetType() == Property::INTEGER );
115   DALI_TEST_CHECK( value.Get<int>() == 1 );
116
117   END_TEST;
118 }
119
120 int UtcDaliPropertyValueConstructorsIntTypeP(void)
121 {
122   Property::Value value(Property::INTEGER);
123
124   DALI_TEST_CHECK( value.GetType() == Property::INTEGER );
125   DALI_TEST_CHECK( value.Get<int>() == 0 );
126
127   END_TEST;
128 }
129
130 int UtcDaliPropertyValueConstructorsVector2P(void)
131 {
132   Vector2 v(1,1);
133   Property::Value value(v);
134
135   DALI_TEST_CHECK( value.GetType() == Property::VECTOR2 );
136   DALI_TEST_CHECK( value.Get<Vector2>() == v );
137
138   END_TEST;
139 }
140
141 int UtcDaliPropertyValueConstructorsVector2TypeP(void)
142 {
143   Property::Value value( Property::VECTOR2 );
144
145   DALI_TEST_CHECK( value.GetType() == Property::VECTOR2 );
146   DALI_TEST_CHECK( value.Get<Vector2>() == Vector2::ZERO );
147
148   END_TEST;
149 }
150
151 int UtcDaliPropertyValueConstructorsVector3P(void)
152 {
153   Vector3 v(1.f,2.f,3.f);
154   Property::Value value(v);
155
156   DALI_TEST_CHECK( value.GetType() == Property::VECTOR3 );
157   DALI_TEST_CHECK( value.Get<Vector3>() == v );
158
159   END_TEST;
160 }
161
162 int UtcDaliPropertyValueConstructorsVector3TypeP(void)
163 {
164   Property::Value value( Property::VECTOR3 );
165
166   DALI_TEST_CHECK( value.GetType() == Property::VECTOR3 );
167   DALI_TEST_CHECK( value.Get<Vector3>() == Vector3() );
168
169   END_TEST;
170 }
171
172 int UtcDaliPropertyValueConstructorsVector4P(void)
173 {
174   Vector4 v(1.f,1.f,1.f,0.9f);
175   Property::Value value(v);
176
177   DALI_TEST_CHECK( value.GetType() == Property::VECTOR4 );
178   DALI_TEST_CHECK( value.Get<Vector4>() == v );
179
180   END_TEST;
181 }
182
183 int UtcDaliPropertyValueConstructorsVector4TypeP(void)
184 {
185   Property::Value value( Property::VECTOR4 );
186
187   DALI_TEST_CHECK( value.GetType() == Property::VECTOR4 );
188   DALI_TEST_CHECK( value.Get<Vector4>() == Vector4() );
189
190   END_TEST;
191 }
192
193 int UtcDaliPropertyValueConstructorsMatrix3P(void)
194 {
195   Matrix3 v(1.0,1.0,1.0, 1.0,1.0,1.0, 1.0,1.0,1.0);
196   Property::Value value(v);
197
198   DALI_TEST_CHECK( value.GetType() == Property::MATRIX3 );
199   DALI_TEST_CHECK( value.Get<Matrix3>() == v );
200
201   END_TEST;
202 }
203
204 int UtcDaliPropertyValueConstructorsMatrix3TypeP(void)
205 {
206   Property::Value value( Property::MATRIX3 );
207
208   DALI_TEST_CHECK( value.GetType() == Property::MATRIX3 );
209   DALI_TEST_CHECK( value.Get<Matrix3>() == Matrix3() );
210
211   END_TEST;
212 }
213
214 int UtcDaliPropertyValueConstructorsMatrixP(void)
215 {
216   float a[] = {1.0,1.0,1.0,1.0, 1.0,1.0,1.0,1.0, 1.0,1.0,1.0,1.0, 1.0,1.0,1.0,1.0};
217   Matrix v(a);
218   Property::Value value(v);
219
220   DALI_TEST_CHECK( value.GetType() == Property::MATRIX );
221   DALI_TEST_CHECK( value.Get<Matrix>() == v );
222
223   END_TEST;
224 }
225
226 int UtcDaliPropertyValueConstructorsMatrixTypeP(void)
227 {
228   Property::Value value( Property::MATRIX );
229
230   DALI_TEST_CHECK( value.GetType() == Property::MATRIX );
231   DALI_TEST_CHECK( value.Get<Matrix>() == Matrix() );
232
233   END_TEST;
234 }
235
236 int UtcDaliPropertyValueConstructorsRectP(void)
237 {
238   Rect<int> v(1.0,1.0,1.0,1.0);
239   Property::Value value(v);
240
241   DALI_TEST_EQUALS( value.GetType(), Property::RECTANGLE, TEST_LOCATION );
242   DALI_TEST_CHECK( value.Get<Rect<int> >() == v );
243
244   END_TEST;
245 }
246
247 int UtcDaliPropertyValueConstructorsRectTypeP(void)
248 {
249   Property::Value value( Property::RECTANGLE );
250
251   DALI_TEST_CHECK( value.GetType() == Property::RECTANGLE );
252   DALI_TEST_CHECK( value.Get<Rect<int> >() == Rect<int>(0,0,0,0) );
253
254   END_TEST;
255 }
256
257 int UtcDaliPropertyValueConstructorsAngleAxisP(void)
258 {
259   AngleAxis input( Dali::ANGLE_90, Vector3::XAXIS );
260   Property::Value value( input );
261
262   DALI_TEST_CHECK( value.GetType() == Property::ROTATION );
263   AngleAxis result = value.Get<AngleAxis>();
264   DALI_TEST_EQUALS( result.angle, input.angle, TEST_LOCATION );
265   DALI_TEST_EQUALS( result.axis, input.axis, TEST_LOCATION );
266
267   END_TEST;
268 }
269
270 int UtcDaliPropertyValueConstructorsQuaternionP(void)
271 {
272   Quaternion v( Radian( Math::PI ), Vector3::ZAXIS );
273   Property::Value value(v);
274
275   DALI_TEST_CHECK( value.GetType() == Property::ROTATION );
276   DALI_TEST_EQUALS( v, value.Get<Quaternion>(), 0.001, TEST_LOCATION);
277
278   END_TEST;
279 }
280
281 int UtcDaliPropertyValueConstructorsRotationTypeP(void)
282 {
283   Property::Value value( Property::ROTATION );
284
285   DALI_TEST_CHECK( value.GetType() == Property::ROTATION );
286   AngleAxis result = value.Get<AngleAxis>();
287   DALI_TEST_EQUALS( result.angle, Radian(0.f), TEST_LOCATION );
288   DALI_TEST_EQUALS( result.axis, Vector3::ZERO, TEST_LOCATION ); // identity quaternion returns a zero angle-axis
289
290   END_TEST;
291 }
292
293 int UtcDaliPropertyValueConstructorsStringP(void)
294 {
295   std::string v("1");
296   Property::Value value(v);
297
298   DALI_TEST_CHECK( value.GetType() == Property::STRING );
299   DALI_TEST_CHECK( value.Get<std::string>() == v );
300
301   END_TEST;
302 }
303
304 int UtcDaliPropertyValueConstructorsStringTypeP(void)
305 {
306   Property::Value value( Property::STRING );
307
308   DALI_TEST_CHECK( value.GetType() == Property::STRING );
309   DALI_TEST_CHECK( value.Get<std::string>() == std::string() );
310
311   END_TEST;
312 }
313
314 int UtcDaliPropertyValueConstructorsArrayP(void)
315 {
316   Property::Array foo;
317   Property::Value value( foo );
318
319   DALI_TEST_CHECK( value.GetType() == Property::ARRAY );
320   DALI_TEST_CHECK( value.Get<Property::Array>().Count() == 0 );
321
322   END_TEST;
323 }
324
325 int UtcDaliPropertyValueConstructorsArray2P(void)
326 {
327   Property::Array foo;
328   foo.PushBack( Property::Value() );
329   Property::Value value( foo );
330
331   DALI_TEST_CHECK( value.GetType() == Property::ARRAY );
332   DALI_TEST_CHECK( value.Get<Property::Array>().Count() == 1 );
333
334   END_TEST;
335 }
336
337 int UtcDaliPropertyValueConstructorsArrayTypeP(void)
338 {
339   Property::Value value(Property::ARRAY);
340
341   DALI_TEST_CHECK( value.GetType() == Property::ARRAY );
342   DALI_TEST_CHECK( value.Get<Property::Array>().Count() == 0 );
343
344   END_TEST;
345 }
346
347 int UtcDaliPropertyValueConstructorsMapP(void)
348 {
349   Property::Map map;
350   Property::Value value( map );
351
352   DALI_TEST_CHECK( value.GetType() == Property::MAP );
353   DALI_TEST_CHECK( value.Get<Property::Map>().Count() == 0 );
354
355   END_TEST;
356 }
357
358 int UtcDaliPropertyValueConstructorsMap2P(void)
359 {
360   Property::Map map;
361   map.Insert( "", "" );
362   Property::Value value( map );
363
364   DALI_TEST_CHECK( value.GetType() == Property::MAP );
365   DALI_TEST_CHECK( value.Get<Property::Map>().Count() == 1 );
366
367   END_TEST;
368 }
369
370 int UtcDaliPropertyValueConstructorsMapTypeP(void)
371 {
372   Property::Value value(Property::MAP);
373
374   DALI_TEST_CHECK( value.GetType() == Property::MAP );
375   DALI_TEST_CHECK( value.Get<Property::Map>().Count() == 0 );
376
377   END_TEST;
378 }
379
380 int UtcDaliPropertyValueConstructorsExtentsTypeP(void)
381 {
382   Property::Value value( Property::EXTENTS );
383
384   DALI_TEST_CHECK( value.GetType() == Property::EXTENTS );
385   DALI_TEST_CHECK( value.Get<Extents>() == Extents( 0u, 0u, 0u, 0u ) );
386
387   END_TEST;
388 }
389
390 int UtcDaliPropertyValueConstructorsExtentsType2P(void)
391 {
392   Property::Value value( Property::VECTOR4 );
393
394   DALI_TEST_CHECK( value.GetType() == Property::VECTOR4 );
395   DALI_TEST_CHECK( value.Get<Extents>() == Extents( 0u, 0u, 0u, 0u ) );
396
397   END_TEST;
398 }
399
400 int UtcDaliPropertyValueCopyConstructorP(void)
401 {
402   Property::Value value;
403   Property::Value value2( value );
404   DALI_TEST_EQUALS( value.GetType(), value2.GetType(), TEST_LOCATION );
405   DALI_TEST_EQUALS( value.GetMap(), value2.GetMap(), TEST_LOCATION );
406   DALI_TEST_EQUALS( value.GetArray(), value2.GetArray(), TEST_LOCATION );
407   END_TEST;
408 }
409
410 int UtcDaliPropertyValueCopyConstructorBoolP(void)
411 {
412   CheckCopyCtorP<bool> check(true);
413   END_TEST;
414 }
415
416 int UtcDaliPropertyValueCopyConstructorFloatP(void)
417 {
418   CheckCopyCtorP<float> check(1.f);
419   END_TEST;
420 }
421
422 int UtcDaliPropertyValueCopyConstructorIntP(void)
423 {
424   CheckCopyCtorP<int> check(1);
425   END_TEST;
426 }
427
428 int UtcDaliPropertyValueCopyConstructoVector2P(void)
429 {
430   CheckCopyCtorP<Vector2> check( Vector2(2,1) );
431   END_TEST;
432 }
433
434 int UtcDaliPropertyValueCopyConstructorVector3P(void)
435 {
436   CheckCopyCtorP<Vector3> check( Vector3(3.f,2.f,1.f) );
437   END_TEST;
438 }
439
440 int UtcDaliPropertyValueCopyConstructorVector4P(void)
441 {
442   CheckCopyCtorP<Vector3> check( Vector4(4.f,3.f,2.f,1.f) );
443   END_TEST;
444 }
445
446 int UtcDaliPropertyValueCopyConstructorMatrix3P(void)
447 {
448   CheckCopyCtorP<Matrix3> check( Matrix3::IDENTITY );
449   END_TEST;
450 }
451
452 int UtcDaliPropertyValueCopyConstructorMatrixP(void)
453 {
454   CheckCopyCtorP<Matrix> check(Matrix::IDENTITY);
455   END_TEST;
456 }
457
458 int UtcDaliPropertyValueCopyConstructorRectP(void)
459 {
460   CheckCopyCtorP<Rect<int> > check( Rect<int>(1.0,1.0,1.0,1.0) );
461   END_TEST;
462 }
463
464 int UtcDaliPropertyValueCopyConstructorAngleAxisP(void)
465 {
466   CheckCopyCtorP<AngleAxis> check( AngleAxis(Degree(1.0), Vector3(1.0,1.0,1.0)) );
467   END_TEST;
468 }
469
470 int UtcDaliPropertyValueCopyConstructorQuaternionP(void)
471 {
472   CheckCopyCtorP<Quaternion> check( Quaternion( Vector4(1.0, 1.0, 1.0, 1.0) ) );
473   END_TEST;
474 }
475
476 int UtcDaliPropertyValueCopyConstructorStringP(void)
477 {
478   CheckCopyCtorP<std::string> check( std::string("1") );
479   END_TEST;
480 }
481
482 int UtcDaliPropertyValueCopyConstructorArrayP(void)
483 {
484   Property::Value value1(Property::ARRAY);
485   Property::Array* array= value1.GetArray();
486   array->PushBack(Property::Value(1));
487
488   Property::Value value2( value1 );
489   DALI_TEST_EQUALS( value1.GetType(), value2.GetType(), TEST_LOCATION );
490   DALI_TEST_EQUALS( value1.GetArray()->Count(), value2.GetArray()->Count(), TEST_LOCATION );
491
492   END_TEST;
493 }
494
495 int UtcDaliPropertyValueCopyConstructorMapP(void)
496 {
497   Property::Value value1(Property::MAP);
498   Property::Map* map = value1.GetMap();
499   (*map)["1"] = Property::Value(1);
500
501   Property::Value value2( value1 );
502   DALI_TEST_EQUALS( value1.GetType(), value2.GetType(), TEST_LOCATION );
503   DALI_TEST_EQUALS( value1.GetMap()->Count(), value2.GetMap()->Count(), TEST_LOCATION );
504   DALI_TEST_EQUALS( value1.GetMap()->GetKey( 0 ), value2.GetMap()->GetKey( 0 ), TEST_LOCATION );
505
506   END_TEST;
507 }
508
509 int UtcDaliPropertyValueAssignmentSelfP(void)
510 {
511   Property::Value value;
512   Property::Value* self = &value;
513   value = *self;
514   DALI_TEST_EQUALS( value.GetType(), Property::NONE, TEST_LOCATION );
515   DALI_TEST_CHECK( value.GetMap() == NULL );
516   DALI_TEST_CHECK( value.GetArray() == NULL );
517   END_TEST;
518 }
519
520 int UtcDaliPropertyValueAssignmentOperatorNoneP(void)
521 {
522   Property::Value value;
523   value = Property::Value(); // type match
524   DALI_TEST_EQUALS( value.GetType(), Property::NONE, TEST_LOCATION );
525   Property::Value copy( false );
526   copy = value; // type mismatch
527   DALI_TEST_EQUALS( value.GetType(), Property::NONE, TEST_LOCATION );
528   END_TEST;
529 }
530
531 int UtcDaliPropertyValueAssignmentOperatorBoolP(void)
532 {
533   Property::Value value;
534   value = Property::Value(true); // type mismatch
535   DALI_TEST_CHECK( true == value.Get<bool>() );
536   Property::Value copy( false );
537   copy = value; // type match
538   DALI_TEST_CHECK( true == copy.Get<bool>() );
539   END_TEST;
540 }
541
542 int UtcDaliPropertyValueAssignmentOperatorIntP(void)
543 {
544   Property::Value value;
545   value = Property::Value(10); // type mismatch
546   DALI_TEST_CHECK( 10 == value.Get<int>() );
547   Property::Value copy( 99 );
548   copy = value; // type match
549   DALI_TEST_CHECK( 10 == copy.Get<int>() );
550   END_TEST;
551 }
552
553 int UtcDaliPropertyValueAssignmentOperatorFloatP(void)
554 {
555   Property::Value value;
556   value = Property::Value(10.f); // mismatch
557   DALI_TEST_CHECK( Dali::Equals(10.f, value.Get<float>() ) );
558   Property::Value copy(321.f);
559   copy = value; // match
560   DALI_TEST_CHECK( Dali::Equals(10.f, copy.Get<float>() ) );
561   END_TEST;
562 }
563
564 int UtcDaliPropertyValueAssignmentOperatorVector2P(void)
565 {
566   Property::Value value;
567   value = Property::Value( Vector2(1,2) ); // mismatch
568   DALI_TEST_CHECK( Vector2(1,2) == value.Get<Vector2>() );
569   Property::Value copy( Property::VECTOR2 );
570   copy = value; // match
571   DALI_TEST_CHECK( Vector2(1,2) == copy.Get<Vector2>() );
572   END_TEST;
573 }
574
575 int UtcDaliPropertyValueAssignmentOperatorVector3P(void)
576 {
577   Property::Value value;
578   value = Property::Value( Vector3(1.f,2.f,3.f) ); // mismatch
579   DALI_TEST_CHECK( Vector3(1.f,2.f,3.f) == value.Get<Vector3>() );
580   Property::Value copy( Property::VECTOR3 );
581   copy = value; // match
582   DALI_TEST_CHECK( Vector3(1.f,2.f,3.f) == copy.Get<Vector3>() );
583   END_TEST;
584 }
585
586 int UtcDaliPropertyValueAssignmentOperatorVector4P(void)
587 {
588   Property::Value value;
589   value = Property::Value( Vector4(1,2,3,4) ); // mismatch
590   DALI_TEST_CHECK( Vector4(1,2,3,4) == value.Get<Vector4>() );
591   Property::Value copy( Vector4(0,1,2,3) );
592   copy = value; // match
593   DALI_TEST_CHECK( Vector4(1,2,3,4) == copy.Get<Vector4>() );
594   END_TEST;
595 }
596
597 int UtcDaliPropertyValueAssignmentOperatorMatrix3P(void)
598 {
599   Property::Value value;
600   value = Property::Value( Matrix3::IDENTITY ); // mismatch
601   DALI_TEST_CHECK( Matrix3::IDENTITY == value.Get<Matrix3>() );
602   Property::Value copy( Property::MATRIX3 );
603   copy = value; // match
604   DALI_TEST_CHECK( Matrix3::IDENTITY == copy.Get<Matrix3>() );
605   END_TEST;
606 }
607
608 int UtcDaliPropertyValueAssignmentOperatorMatrixP(void)
609 {
610   Property::Value value;
611   value = Property::Value( Matrix::IDENTITY ); // mismatch
612   DALI_TEST_CHECK( Matrix::IDENTITY == value.Get<Matrix>()  );
613   Matrix foo;
614   Property::Value copy( foo );
615   copy = value; // match
616   DALI_TEST_CHECK( Matrix::IDENTITY == copy.Get<Matrix>()  );
617   END_TEST;
618 }
619
620 int UtcDaliPropertyValueAssignmentOperatorRectP(void)
621 {
622   Property::Value value;
623   typedef Dali::Rect<int> Rectangle;
624   value = Property::Value( Rectangle(4,3,2,1) ); // mismatch
625   DALI_TEST_CHECK( Rectangle(4,3,2,1) == value.Get<Rectangle>() );
626   Property::Value copy( Property::RECTANGLE );
627   copy = value; // match
628   Rectangle copyRect;
629   copy.Get(copyRect);
630   DALI_TEST_CHECK( Rectangle(4,3,2,1) == copyRect );
631   END_TEST;
632 }
633
634 int UtcDaliPropertyValueAssignmentOperatorQuaternionP(void)
635 {
636   Property::Value value;
637   Quaternion result( Radian( Math::PI_2 ), Vector3::YAXIS );
638   value = Property::Value( result );
639
640   DALI_TEST_EQUALS( value.Get<Quaternion>(), result, 0.001, TEST_LOCATION );
641
642   Property::Value copy( Property::ROTATION );
643   copy = value; // match
644   DALI_TEST_EQUALS( copy.Get<Quaternion>(), result, 0.001, TEST_LOCATION );
645   END_TEST;
646 }
647
648
649 int UtcDaliPropertyValueAssignmentOperatorAngleAxisP(void)
650 {
651   Property::Value value;
652   value = Property::Value( AngleAxis( Radian(Math::PI_2), Vector3::XAXIS ) ); // mismatch
653   DALI_TEST_EQUALS( value.Get<AngleAxis>().axis, Vector3::XAXIS, TEST_LOCATION );
654   DALI_TEST_EQUALS( value.Get<AngleAxis>().angle, Radian(Math::PI_2), TEST_LOCATION );
655   Property::Value copy( Property::ROTATION );
656   copy = value; // match
657   DALI_TEST_EQUALS( value.Get<AngleAxis>().axis, copy.Get<AngleAxis>().axis, TEST_LOCATION );
658   DALI_TEST_EQUALS( value.Get<AngleAxis>().angle, copy.Get<AngleAxis>().angle, TEST_LOCATION );
659   END_TEST;
660 }
661
662 int UtcDaliPropertyValueAssignmentOperatorStringP(void)
663 {
664   Property::Value value;
665   value = Property::Value("yes"); // mismatch
666   DALI_TEST_CHECK( "yes" == value.Get<std::string>() );
667   Property::Value copy("no");
668   copy = value; // match
669   DALI_TEST_CHECK( "yes" == copy.Get<std::string>() );
670   END_TEST;
671 }
672
673 int UtcDaliPropertyValueAssignmentOperatorArrayP(void)
674 {
675   Property::Value value;
676   value = Property::Value(Property::ARRAY); // mismatch
677   value.GetArray()->PushBack(10);
678   DALI_TEST_CHECK( value.GetArray() );
679   Property::Value copy(Property::ARRAY);
680   copy = value; // match
681   Property::Array array;
682   copy.Get( array );
683   int getItem = 0;
684   array[0].Get( getItem );
685   DALI_TEST_CHECK( getItem == 10 );
686   END_TEST;
687 }
688
689 int UtcDaliPropertyValueAssignmentOperatorMapP(void)
690 {
691   Property::Value value;
692   value = Property::Value(Property::MAP); // mismatch
693   value.GetMap()->Insert("key", "value");
694   Property::Value copy( Property::MAP ); // match
695   copy = value;
696   Property::Map map;
697   copy.Get( map );
698   DALI_TEST_CHECK( map.GetKey(0) == "key" );
699   END_TEST;
700 }
701
702 int UtcDaliPropertyValueAssignmentOperatorExtentsP(void)
703 {
704   Property::Value value;
705   value = Property::Value( Extents( 4, 3, 2, 1 ) ); // mismatch
706   DALI_TEST_CHECK( Extents( 4, 3, 2, 1 ) == value.Get<Extents>() );
707   Property::Value copy( Property::EXTENTS );
708   copy = value; // match
709   Extents copyExtents;
710   copy.Get(copyExtents);
711   DALI_TEST_CHECK( Extents( 4, 3, 2, 1 ) == copyExtents );
712   END_TEST;
713 }
714
715 int UtcDaliPropertyValueGetTypeP(void)
716 {
717   Property::Value value;
718   DALI_TEST_CHECK( value.GetType() == Property::NONE );
719   END_TEST;
720 }
721
722 int UtcDaliPropertyValueGetBoolP(void)
723 {
724   Property::Value value(true);
725   bool boolean( false );
726   DALI_TEST_CHECK( value.Get( boolean ) == true );
727   DALI_TEST_CHECK( value.Get<bool>() == true );
728   std::string string;
729   DALI_TEST_CHECK( value.Get( string ) == false );
730   value = Property::Value(1.f);
731   DALI_TEST_CHECK( value.Get<float>() == 1.f );
732   END_TEST;
733 }
734
735 int UtcDaliPropertyValueGetBoolN(void)
736 {
737   Property::Value value;
738   DALI_TEST_CHECK( value.Get<bool>() == false );
739   bool boolean( false );
740   DALI_TEST_CHECK( value.Get( boolean ) == false );
741   END_TEST;
742 }
743
744 int UtcDaliPropertyValueGetFloatP(void)
745 {
746   Property::Value value(1.1f);
747   float flow( 0.0f );
748   DALI_TEST_EQUALS( 1.1f, value.Get<float>(), TEST_LOCATION );
749   DALI_TEST_EQUALS( true, value.Get( flow ), TEST_LOCATION );
750   DALI_TEST_EQUALS( 1.1f, flow, TEST_LOCATION );
751
752   Property::Value intValue(100);
753   DALI_TEST_EQUALS( 100.f, intValue.Get<float>(), TEST_LOCATION );
754   DALI_TEST_EQUALS( true, intValue.Get( flow ), TEST_LOCATION );
755   DALI_TEST_EQUALS( 100.f, flow, TEST_LOCATION );
756
757   END_TEST;
758 }
759
760 int UtcDaliPropertyValueGetFloatN(void)
761 {
762   Property::Value value;
763   float result( 1.0f );
764   DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
765   DALI_TEST_EQUALS( 1.0f, result, TEST_LOCATION ); // result is not modified
766   Property::Value value2( "" );
767   DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
768   DALI_TEST_EQUALS( 1.0f, result, TEST_LOCATION ); // result is not modified
769   END_TEST;
770 }
771
772 int UtcDaliPropertyValueGetIntP(void)
773 {
774   Property::Value value(123);
775   int result( 10 );
776   DALI_TEST_EQUALS( 123, value.Get<int>(), TEST_LOCATION );
777   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
778   DALI_TEST_EQUALS( 123, result, TEST_LOCATION );
779
780   Property::Value floatValue(21.f);
781   DALI_TEST_EQUALS( 21, floatValue.Get<int>(), TEST_LOCATION );
782   DALI_TEST_EQUALS( true, floatValue.Get( result ), TEST_LOCATION );
783   DALI_TEST_EQUALS( 21, result, TEST_LOCATION );
784
785   END_TEST;
786 }
787
788 int UtcDaliPropertyValueGetIntN(void)
789 {
790   Property::Value value;
791   int result( 10 );
792   DALI_TEST_EQUALS( 0, value.Get<int>(), TEST_LOCATION );
793   DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
794   DALI_TEST_EQUALS( 10, result, TEST_LOCATION ); // result is not modified
795   Property::Value value2("");
796   DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
797   DALI_TEST_EQUALS( 10, result, TEST_LOCATION ); // result is not modified
798   END_TEST;
799 }
800
801 int UtcDaliPropertyValueGetRectP(void)
802 {
803   Property::Value value( Rect<int>(1,2,3,4) );
804   Rect<int> result(4,3,2,1);
805   DALI_TEST_EQUALS( Rect<int>(1,2,3,4), value.Get< Rect<int> >(), TEST_LOCATION );
806   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
807   DALI_TEST_EQUALS( Rect<int>(1,2,3,4), result, TEST_LOCATION );
808   END_TEST;
809 }
810
811 int UtcDaliPropertyValueGetRectN(void)
812 {
813   Property::Value value;
814   Rect<int> result(4,3,2,1);
815   DALI_TEST_EQUALS( Rect<int>(0,0,0,0), value.Get< Rect<int> >(), TEST_LOCATION );
816   DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
817   DALI_TEST_EQUALS( Rect<int>(4,3,2,1), result, TEST_LOCATION );
818   Property::Value value2("");
819   DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
820   DALI_TEST_EQUALS( Rect<int>(4,3,2,1), result, TEST_LOCATION );
821   END_TEST;
822 }
823
824 int UtcDaliPropertyValueGetVector2P(void)
825 {
826   Property::Value value( Vector2(1.0f,2.0f) );
827   Vector2 result;
828   DALI_TEST_EQUALS( Vector2(1.0f,2.0f), value.Get< Vector2 >(), TEST_LOCATION );
829   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
830   DALI_TEST_EQUALS( Vector2(1.0f,2.0f), result, TEST_LOCATION );
831   END_TEST;
832 }
833
834 int UtcDaliPropertyValueGetVector2fromVector3P(void)
835 {
836   Property::Value value( Vector3(1.f,2.f,3.f) );
837   Vector2 result;
838   DALI_TEST_EQUALS( Vector2(1.0f,2.0f), value.Get< Vector2 >(), TEST_LOCATION );
839   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
840   DALI_TEST_EQUALS( Vector2(1.0f,2.0f), result, TEST_LOCATION );
841   END_TEST;
842 }
843
844 int UtcDaliPropertyValueGetVector2fromVector4P(void)
845 {
846   Property::Value value( Vector4(1.f,2.f,3.f,4.f) );
847   Vector2 result;
848   DALI_TEST_EQUALS( Vector2(1.0f,2.0f), value.Get< Vector2 >(), TEST_LOCATION );
849   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
850   DALI_TEST_EQUALS( Vector2(1.0f,2.0f), result, TEST_LOCATION );
851   END_TEST;
852 }
853
854 int UtcDaliPropertyValueGetVector2N(void)
855 {
856   Property::Value value;
857   Vector2 result;
858   DALI_TEST_EQUALS( Vector2(0.f,0.f), value.Get< Vector2 >(), TEST_LOCATION );
859   DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
860   DALI_TEST_EQUALS( Vector2(), result, TEST_LOCATION );
861   Property::Value value2("");
862   DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
863   DALI_TEST_EQUALS( Vector2(), result, TEST_LOCATION );
864   END_TEST;
865 }
866
867 int UtcDaliPropertyValueGetVector3P(void)
868 {
869   Property::Value value( Vector3(1.0f,2.0f,-1.f) );
870   Vector3 result;
871   DALI_TEST_EQUALS( Vector3(1.0f,2.0f,-1.f), value.Get< Vector3 >(), TEST_LOCATION );
872   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
873   DALI_TEST_EQUALS( Vector3(1.0f,2.0f,-1.f), result, TEST_LOCATION );
874   END_TEST;
875 }
876
877 int UtcDaliPropertyValueGetVector3FromVector2P(void)
878 {
879   Property::Value value( Vector2(1.0f,2.0f) );
880   Vector3 result(99.f,88.f,77.f);
881   DALI_TEST_EQUALS( Vector3(1.0f,2.0f,0.f), value.Get< Vector3 >(), TEST_LOCATION );
882   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
883   DALI_TEST_EQUALS( Vector3(1.0f,2.0f,0.f), result, TEST_LOCATION );
884   END_TEST;
885 }
886
887 int UtcDaliPropertyValueGetVector3FromVector4P(void)
888 {
889   Property::Value value( Vector4(4.f,3.f,2.f,1.f) );
890   Vector3 result;
891   DALI_TEST_EQUALS( Vector3(4.f,3.f,2.f), value.Get< Vector3 >(), TEST_LOCATION );
892   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
893   DALI_TEST_EQUALS( Vector3(4.f,3.f,2.f), result, TEST_LOCATION );
894   END_TEST;
895 }
896
897 int UtcDaliPropertyValueGetVector3N(void)
898 {
899   Property::Value value;
900   Vector3 result;
901   DALI_TEST_EQUALS( Vector3(0.f,0.f,0.f), value.Get< Vector3 >(), TEST_LOCATION );
902   DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
903   DALI_TEST_EQUALS( Vector3(), result, TEST_LOCATION );
904   Property::Value value2("");
905   DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
906   DALI_TEST_EQUALS( Vector3(), result, TEST_LOCATION );
907   END_TEST;
908 }
909
910 int UtcDaliPropertyValueGetVector4P(void)
911 {
912   Property::Value value( Vector4(1.f,2.f,-1.f,-3.f) );
913   Vector4 result;
914   DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,-3.f), value.Get< Vector4 >(), TEST_LOCATION );
915   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
916   DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,-3.f), result, TEST_LOCATION );
917   END_TEST;
918 }
919
920 int UtcDaliPropertyValueGetVector4FromVector2P(void)
921 {
922   Property::Value value( Vector2(-1.f,-3.f) );
923   Vector4 result(99.f,88.f,77.f,66.f);
924   DALI_TEST_EQUALS( Vector4(-1.f,-3.f,0.f,0.f), value.Get< Vector4 >(), TEST_LOCATION );
925   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
926   DALI_TEST_EQUALS( Vector4(-1.f,-3.f,0.f,0.f), result, TEST_LOCATION );
927   END_TEST;
928 }
929
930 int UtcDaliPropertyValueGetVector4FromVector3P(void)
931 {
932   Property::Value value( Vector3(1.f,2.f,-1.f) );
933   Vector4 result(99.f,88.f,77.f,66.f);
934   DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,0.f), value.Get< Vector4 >(), TEST_LOCATION );
935   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
936   DALI_TEST_EQUALS( Vector4(1.f,2.f,-1.f,0.f), result, TEST_LOCATION );
937   END_TEST;
938 }
939
940 int UtcDaliPropertyValueGetVector4N(void)
941 {
942   Property::Value value;
943   Vector4 result;
944   DALI_TEST_EQUALS( Vector4(0.f,0.f,0.f,0.f), value.Get< Vector4 >(), TEST_LOCATION );
945   DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
946   DALI_TEST_EQUALS( Vector4(), result, TEST_LOCATION );
947   Property::Value value2("");
948   DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
949   DALI_TEST_EQUALS( Vector4(), result, TEST_LOCATION );
950   END_TEST;
951 }
952
953 int UtcDaliPropertyValueGetMatrix3P(void)
954 {
955   Property::Value value( Matrix3(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f) );
956   Matrix3 result;
957   DALI_TEST_EQUALS( Matrix3(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f), value.Get< Matrix3 >(), TEST_LOCATION );
958   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
959   DALI_TEST_EQUALS( Matrix3(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f), result, TEST_LOCATION );
960   END_TEST;
961 }
962
963 int UtcDaliPropertyValueGetMatrix3N(void)
964 {
965   Property::Value value;
966   Matrix3 result(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f);
967   DALI_TEST_EQUALS( Matrix3(), value.Get< Matrix3 >(), TEST_LOCATION );
968   DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
969   DALI_TEST_EQUALS( Matrix3(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f), result, TEST_LOCATION );
970   Property::Value value2("");
971   DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
972   DALI_TEST_EQUALS( Matrix3(1.f,2.f,3.f,4.f,5.f,6.f,7.f,8.f,9.f), result, TEST_LOCATION );
973   END_TEST;
974 }
975
976 int UtcDaliPropertyValueGetMatrixP(void)
977 {
978   float matrixValues[16] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };
979   Matrix input( matrixValues );
980   Property::Value value( input );
981   Matrix result;
982   DALI_TEST_EQUALS( input, value.Get< Matrix >(), TEST_LOCATION );
983   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
984   DALI_TEST_EQUALS( input, result, TEST_LOCATION );
985   END_TEST;
986 }
987
988 int UtcDaliPropertyValueGetMatrixN(void)
989 {
990   Property::Value value;
991   Matrix result( Matrix::IDENTITY );
992   DALI_TEST_EQUALS( Matrix(), value.Get< Matrix >(), TEST_LOCATION );
993   DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
994   DALI_TEST_EQUALS( Matrix::IDENTITY, result, TEST_LOCATION );
995
996   Property::Value value2("");
997   DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
998   DALI_TEST_EQUALS( Matrix::IDENTITY, result, TEST_LOCATION );
999   END_TEST;
1000 }
1001
1002 int UtcDaliPropertyValueGetAngleAxisP(void)
1003 {
1004   AngleAxis input( Dali::ANGLE_90, Vector3::XAXIS );
1005   Property::Value value( input );
1006   AngleAxis result = value.Get<AngleAxis>();
1007   DALI_TEST_EQUALS( input.angle, result.angle, TEST_LOCATION );
1008   DALI_TEST_EQUALS( input.axis, result.axis, TEST_LOCATION );
1009
1010   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1011   DALI_TEST_EQUALS( input, result, TEST_LOCATION );
1012   END_TEST;
1013 }
1014
1015 int UtcDaliPropertyValueGetAngleAxisN(void)
1016 {
1017   Property::Value value;
1018   AngleAxis b = value.Get<AngleAxis>();
1019   AngleAxis result;
1020   DALI_TEST_EQUALS( (Radian)0.f, b.angle, TEST_LOCATION );
1021   DALI_TEST_EQUALS( Vector3::ZERO, b.axis, TEST_LOCATION );
1022   DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1023   DALI_TEST_EQUALS( AngleAxis(), result, TEST_LOCATION );
1024
1025   Property::Value value2("");
1026   DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1027   DALI_TEST_EQUALS( AngleAxis(), result, TEST_LOCATION );
1028   END_TEST;
1029 }
1030
1031 int UtcDaliPropertyValueGetQuaternionP(void)
1032 {
1033   Vector3 axis(1, 1, 0);
1034   axis.Normalize();
1035
1036   Quaternion result( Radian( 1.f ), axis );
1037   Property::Value value( result );
1038
1039   DALI_TEST_EQUALS( result, value.Get< Quaternion >(), TEST_LOCATION );
1040   Quaternion test2;
1041   DALI_TEST_EQUALS( true, value.Get( test2 ), TEST_LOCATION );
1042   END_TEST;
1043 }
1044
1045 int UtcDaliPropertyValueGetQuaternionN(void)
1046 {
1047   Property::Value value;
1048   Vector3 axis(1, 1, 0);
1049   axis.Normalize();
1050   Quaternion result( Radian( 1.f ), axis );
1051   Quaternion test(result);
1052
1053   DALI_TEST_EQUALS( Quaternion(), value.Get< Quaternion >(), TEST_LOCATION );
1054   DALI_TEST_EQUALS( false, value.Get( test ), TEST_LOCATION );
1055   DALI_TEST_EQUALS( test, result, TEST_LOCATION );
1056
1057   Property::Value value2("");
1058   DALI_TEST_EQUALS( false, value2.Get( test ), TEST_LOCATION );
1059   DALI_TEST_EQUALS( test, result, TEST_LOCATION );
1060   END_TEST;
1061 }
1062
1063 int UtcDaliPropertyValueGetStringP(void)
1064 {
1065   Property::Value value( std::string("hello") );
1066   std::string result;
1067   DALI_TEST_EQUALS( std::string("hello"), value.Get< std::string >(), TEST_LOCATION );
1068   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1069   DALI_TEST_EQUALS( std::string("hello"), result, TEST_LOCATION );
1070
1071   Property::Value value2( "C hi!" );
1072   DALI_TEST_EQUALS( "C hi!", value2.Get< std::string >(), TEST_LOCATION );
1073   DALI_TEST_EQUALS( true, value2.Get( result ), TEST_LOCATION );
1074   DALI_TEST_EQUALS( "C hi!", result, TEST_LOCATION );
1075   END_TEST;
1076 }
1077
1078 int UtcDaliPropertyValueGetStringN(void)
1079 {
1080   Property::Value value;
1081   std::string result("doesn't change");
1082   DALI_TEST_EQUALS( std::string(), value.Get< std::string >(), TEST_LOCATION );
1083   DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1084   DALI_TEST_EQUALS( "doesn't change", result, TEST_LOCATION );
1085
1086   Property::Value value2(10);
1087   DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1088   DALI_TEST_EQUALS( "doesn't change", result, TEST_LOCATION );
1089
1090   Property::Value value3((char*)NULL);
1091   DALI_TEST_EQUALS( true, value3.Get( result ), TEST_LOCATION );
1092   DALI_TEST_EQUALS( std::string(), result, TEST_LOCATION );
1093   END_TEST;
1094 }
1095
1096 int UtcDaliPropertyValueGetArrayP(void)
1097 {
1098   Property::Value value( Property::ARRAY );
1099   DALI_TEST_CHECK( NULL != value.GetArray() );
1100   value.GetArray()->PushBack( Property::Value(1) );
1101   Property::Array got = value.Get<Property::Array>();
1102   DALI_TEST_CHECK( got[0].Get<int>() == 1);
1103   Property::Array result;
1104   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1105   DALI_TEST_CHECK( result[0].Get<int>() == 1);
1106   END_TEST;
1107 }
1108
1109 int UtcDaliPropertyValueGetArrayN(void)
1110 {
1111   Property::Value value;
1112   DALI_TEST_CHECK( NULL == value.GetArray() );
1113   Property::Array result;
1114   result.PushBack( Property::Value( 10 ) );
1115   DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1116   DALI_TEST_EQUALS( 1u, result.Count(), TEST_LOCATION  ); // array is not modified
1117
1118   Property::Value value2("");
1119   DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1120   DALI_TEST_EQUALS( 1u, result.Count(), TEST_LOCATION  ); // array is not modified
1121   END_TEST;
1122 }
1123
1124 int UtcDaliPropertyValueGetMapP(void)
1125 {
1126   Property::Value value(Property::MAP);
1127   DALI_TEST_CHECK( NULL == value.GetArray() );
1128   DALI_TEST_CHECK( NULL != value.GetMap() );
1129   value.GetMap()->Insert("key", Property::Value(1));
1130   Property::Map result = value.Get<Property::Map>();
1131   DALI_TEST_CHECK(result.Find("key")->Get<int>() == 1);
1132   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1133   DALI_TEST_CHECK(result.Find("key")->Get<int>() == 1);
1134   END_TEST;
1135 }
1136
1137 int UtcDaliPropertyValueGetMapN(void)
1138 {
1139   Property::Value value;
1140   DALI_TEST_CHECK( NULL == value.GetMap() );
1141   DALI_TEST_EQUALS( 0u, value.Get<Property::Map>().Count(), TEST_LOCATION );
1142   Property::Map result;
1143   result.Insert("key", "value" );
1144   DALI_TEST_EQUALS( false, value.Get( result ), TEST_LOCATION );
1145   DALI_TEST_EQUALS( 1u, result.Count(), TEST_LOCATION );
1146
1147   Property::Value value2("");
1148   DALI_TEST_EQUALS( false, value2.Get( result ), TEST_LOCATION );
1149   DALI_TEST_EQUALS( 1u, result.Count(), TEST_LOCATION  ); // array is not modified
1150   END_TEST;
1151 }
1152
1153 int UtcDaliPropertyValueGetExtentsP(void)
1154 {
1155   Property::Value value( Extents( 1u, 2u, 3u, 4u ) );
1156   Extents result( 4u, 3u, 2u, 1u );
1157   DALI_TEST_EQUALS( Extents( 1u, 2u, 3u, 4u ), value.Get<Extents>(), TEST_LOCATION );
1158   DALI_TEST_EQUALS( true, value.Get( result ), TEST_LOCATION );
1159   DALI_TEST_EQUALS( Extents( 1u, 2u, 3u, 4u ), result, TEST_LOCATION );
1160   END_TEST;
1161 }
1162
1163 int UtcDaliPropertyValueOutputStream(void)
1164 {
1165   TestApplication application;
1166   tet_infoline("Testing Property::Value output stream");
1167   typedef Dali::Rect<int> Rectangle;
1168
1169   Property::Value value(true);
1170   {
1171     std::ostringstream stream;
1172     stream << value;
1173     DALI_TEST_CHECK( stream.str() == "1" )
1174   }
1175
1176   {
1177     Property::Value empty;
1178     std::ostringstream stream;
1179     stream << empty;
1180     DALI_TEST_EQUALS( stream.str(), "empty type", TEST_LOCATION );
1181   }
1182
1183   {
1184     Property::Value empty( Property::NONE );
1185     std::ostringstream stream;
1186     stream << empty;
1187     DALI_TEST_CHECK( stream.str() == "undefined type" )
1188   }
1189
1190   {
1191     value = Property::Value(20.2f);
1192     std::ostringstream stream;
1193     stream <<  value;
1194     DALI_TEST_CHECK( stream.str() == "20.2" )
1195   }
1196
1197   {
1198     value = Property::Value(-25);
1199     std::ostringstream stream;
1200     stream <<  value;
1201     DALI_TEST_CHECK( stream.str() == "-25" )
1202   }
1203
1204   {
1205     value = Property::Value( Vector2(1.f,1.f) );
1206     std::ostringstream stream;
1207     stream <<  value;
1208     DALI_TEST_CHECK( stream.str() == "[1, 1]" );
1209   }
1210
1211   {
1212     value = Property::Value( Vector3(1.f,1.f,1.f) );
1213     std::ostringstream stream;
1214     stream <<  value;
1215     DALI_TEST_CHECK( stream.str() == "[1, 1, 1]" );
1216   }
1217
1218   {
1219     value = Property::Value( Vector4(-4.f,-3.f,-2.f,-1.f) );
1220     std::ostringstream stream;
1221     stream <<  value;
1222     DALI_TEST_EQUALS( stream.str(), "[-4, -3, -2, -1]", TEST_LOCATION );
1223   }
1224
1225   {
1226     value = Property::Value( Matrix3::IDENTITY );
1227     std::ostringstream stream;
1228     stream <<  value;
1229     DALI_TEST_CHECK( stream.str() == "[ [1, 0, 0], [0, 1, 0], [0, 0, 1] ]" );
1230   }
1231
1232   {
1233     value = Property::Value( Matrix::IDENTITY );
1234     std::ostringstream stream;
1235     stream <<  value;
1236     DALI_TEST_CHECK( stream.str() == "[ [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1] ]" );
1237   }
1238
1239   {
1240     value = Property::Value( Rectangle(1,2,3,4) );
1241     std::ostringstream stream;
1242     stream <<  value;
1243     DALI_TEST_CHECK( stream.str() == "[1, 2, 3, 4]" );
1244   }
1245
1246   {
1247     value = Property::Value( AngleAxis( Dali::ANGLE_120, Vector3::XAXIS ) );
1248     std::ostringstream stream;
1249     stream <<  value;
1250     tet_printf("angle axis = %s \n", stream.str().c_str() );
1251     DALI_TEST_EQUALS( stream.str(), "[ Axis: [1, 0, 0], Angle: 120 degrees ]", TEST_LOCATION );
1252   }
1253
1254   {
1255     value = Property::Value( std::string( "Foo" ) );
1256     std::ostringstream stream;
1257     stream <<  value;
1258     DALI_TEST_CHECK( stream.str() == "Foo" );
1259   }
1260
1261   {
1262     Property::Map map;
1263     map.Insert("key", "value");
1264     map.Insert("duration", 10);
1265     map.Insert("color", Vector4(1.0, 0.5, 1.0, 1.0));
1266
1267     value = Property::Value( map );
1268     std::ostringstream stream;
1269     stream << value;
1270     tet_printf("Checking Property::Value is %s", stream.str().c_str());
1271     DALI_TEST_CHECK( !stream.str().compare("Map(3) = {key:value, duration:10, color:[1, 0.5, 1, 1]}"));
1272   }
1273   {
1274     Property::Array array;
1275     array.PushBack(0);
1276     array.PushBack(2);
1277     array.PushBack(3);
1278     value = Property::Value( array );
1279     std::ostringstream stream;
1280     stream <<  value;
1281     tet_printf("Checking Property::Value is %s", stream.str().c_str());
1282     DALI_TEST_CHECK( !stream.str().compare("Array(3) = [0, 2, 3]") );
1283   }
1284
1285   {
1286     Property::Map map;
1287     Property::Map map2;
1288     Property::Array array;
1289
1290     map2.Insert("key", "value");
1291     map2.Insert("duration", 10);
1292     map.Insert("color", Vector4(1.0, 0.5, 1.0, 1.0));
1293     map.Insert("timePeriod", map2);
1294     array.PushBack(Vector2(1, 0));
1295     array.PushBack(Vector2(0, 1));
1296     array.PushBack(Vector2(1, 0));
1297     array.PushBack(Vector2(0, 0.5));
1298     map.Insert("texCoords", array);
1299     value = Property::Value( map );
1300
1301     std::ostringstream stream;
1302     stream << value;
1303
1304     tet_printf("Checking Property::Value is %s", stream.str().c_str());
1305
1306     DALI_TEST_CHECK( !stream.str().compare("Map(3) = {color:[1, 0.5, 1, 1], timePeriod:Map(2) = {key:value, duration:10}, texCoords:Array(4) = [[1, 0], [0, 1], [1, 0], [0, 0.5]]}"));
1307   }
1308
1309   {
1310     value = Property::Value( Extents( 1u, 2u, 3u, 4u ) );
1311     std::ostringstream stream;
1312     stream <<  value;
1313     DALI_TEST_CHECK( stream.str() == "[1, 2, 3, 4]" );
1314   }
1315
1316   END_TEST;
1317 }