2 * Copyright (c) 2023 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 #include <dali-test-suite-utils.h>
19 #include <dali/public-api/dali-core.h>
32 CheckCopyCtorP(Property::Value value)
34 Property::Value copy(value);
35 DALI_TEST_CHECK(value.Get<T>() == copy.Get<T>());
39 } // unnamed namespace
41 void utc_dali_property_value_startup(void)
43 test_return_value = TET_UNDEF;
46 void utc_dali_property_value_cleanup(void)
48 test_return_value = TET_PASS;
51 int UtcDaliPropertyValueConstructorsNoneP(void)
53 Property::Value value;
55 DALI_TEST_CHECK(value.GetType() == Property::NONE);
60 int UtcDaliPropertyValueConstructorsNoneTypeP(void)
62 Property::Value value(Property::NONE);
64 DALI_TEST_CHECK(value.GetType() == Property::NONE);
69 int UtcDaliPropertyValueConstructorsBoolP(void)
71 Property::Value value(true);
73 DALI_TEST_CHECK(value.GetType() == Property::BOOLEAN);
74 DALI_TEST_CHECK(value.Get<bool>() == true);
79 int UtcDaliPropertyValueConstructorBoolTypeP(void)
81 Property::Value value(Property::BOOLEAN);
83 DALI_TEST_CHECK(value.GetType() == Property::BOOLEAN);
84 DALI_TEST_CHECK(value.Get<bool>() == false);
89 int UtcDaliPropertyValueConstructorsFloatP(void)
91 Property::Value value(2.f);
93 DALI_TEST_CHECK(value.GetType() == Property::FLOAT);
94 DALI_TEST_CHECK(value.Get<float>() == 2.f);
99 int UtcDaliPropertyValueConstructorsFloatTypeP(void)
101 Property::Value value(Property::FLOAT);
103 DALI_TEST_CHECK(value.GetType() == Property::FLOAT);
104 DALI_TEST_CHECK(value.Get<float>() == 0.f);
109 int UtcDaliPropertyValueConstructorsIntP(void)
111 Property::Value value(1);
113 DALI_TEST_CHECK(value.GetType() == Property::INTEGER);
114 DALI_TEST_CHECK(value.Get<int>() == 1);
119 int UtcDaliPropertyValueConstructorsIntTypeP(void)
121 Property::Value value(Property::INTEGER);
123 DALI_TEST_CHECK(value.GetType() == Property::INTEGER);
124 DALI_TEST_CHECK(value.Get<int>() == 0);
129 int UtcDaliPropertyValueConstructorsVector2P(void)
132 Property::Value value(v);
134 DALI_TEST_CHECK(value.GetType() == Property::VECTOR2);
135 DALI_TEST_CHECK(value.Get<Vector2>() == v);
140 int UtcDaliPropertyValueConstructorsVector2TypeP(void)
142 Property::Value value(Property::VECTOR2);
144 DALI_TEST_CHECK(value.GetType() == Property::VECTOR2);
145 DALI_TEST_CHECK(value.Get<Vector2>() == Vector2::ZERO);
150 int UtcDaliPropertyValueConstructorsVector3P(void)
152 Vector3 v(1.f, 2.f, 3.f);
153 Property::Value value(v);
155 DALI_TEST_CHECK(value.GetType() == Property::VECTOR3);
156 DALI_TEST_CHECK(value.Get<Vector3>() == v);
161 int UtcDaliPropertyValueConstructorsVector3TypeP(void)
163 Property::Value value(Property::VECTOR3);
165 DALI_TEST_CHECK(value.GetType() == Property::VECTOR3);
166 DALI_TEST_CHECK(value.Get<Vector3>() == Vector3());
171 int UtcDaliPropertyValueConstructorsVector4P(void)
173 Vector4 v(1.f, 1.f, 1.f, 0.9f);
174 Property::Value value(v);
176 DALI_TEST_CHECK(value.GetType() == Property::VECTOR4);
177 DALI_TEST_CHECK(value.Get<Vector4>() == v);
182 int UtcDaliPropertyValueConstructorsVector4TypeP(void)
184 Property::Value value(Property::VECTOR4);
186 DALI_TEST_CHECK(value.GetType() == Property::VECTOR4);
187 DALI_TEST_CHECK(value.Get<Vector4>() == Vector4());
192 int UtcDaliPropertyValueConstructorsMatrix3P(void)
194 Matrix3 v(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0);
195 Property::Value value(v);
197 DALI_TEST_CHECK(value.GetType() == Property::MATRIX3);
198 DALI_TEST_CHECK(value.Get<Matrix3>() == v);
203 int UtcDaliPropertyValueConstructorsMatrix3TypeP(void)
205 Property::Value value(Property::MATRIX3);
207 DALI_TEST_CHECK(value.GetType() == Property::MATRIX3);
208 DALI_TEST_CHECK(value.Get<Matrix3>() == Matrix3());
213 int UtcDaliPropertyValueConstructorsMatrixP(void)
215 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 Property::Value value(v);
219 DALI_TEST_CHECK(value.GetType() == Property::MATRIX);
220 DALI_TEST_CHECK(value.Get<Matrix>() == v);
225 int UtcDaliPropertyValueConstructorsMatrixTypeP(void)
227 Property::Value value(Property::MATRIX);
229 DALI_TEST_CHECK(value.GetType() == Property::MATRIX);
230 DALI_TEST_CHECK(value.Get<Matrix>() == Matrix());
235 int UtcDaliPropertyValueConstructorsRectP(void)
237 Rect<int> v(1.0, 1.0, 1.0, 1.0);
238 Property::Value value(v);
240 DALI_TEST_EQUALS(value.GetType(), Property::RECTANGLE, TEST_LOCATION);
241 DALI_TEST_CHECK(value.Get<Rect<int> >() == v);
246 int UtcDaliPropertyValueConstructorsRectTypeP(void)
248 Property::Value value(Property::RECTANGLE);
250 DALI_TEST_CHECK(value.GetType() == Property::RECTANGLE);
251 DALI_TEST_CHECK(value.Get<Rect<int> >() == Rect<int>(0, 0, 0, 0));
256 int UtcDaliPropertyValueConstructorsAngleAxisP(void)
258 AngleAxis input(Dali::ANGLE_90, Vector3::XAXIS);
259 Property::Value value(input);
261 DALI_TEST_CHECK(value.GetType() == Property::ROTATION);
262 AngleAxis result = value.Get<AngleAxis>();
263 DALI_TEST_EQUALS(result.angle, input.angle, TEST_LOCATION);
264 DALI_TEST_EQUALS(result.axis, input.axis, TEST_LOCATION);
269 int UtcDaliPropertyValueConstructorsQuaternionP(void)
271 Quaternion v(Radian(Math::PI), Vector3::ZAXIS);
272 Property::Value value(v);
274 DALI_TEST_CHECK(value.GetType() == Property::ROTATION);
275 DALI_TEST_EQUALS(v, value.Get<Quaternion>(), 0.001, TEST_LOCATION);
280 int UtcDaliPropertyValueConstructorsRotationTypeP(void)
282 Property::Value value(Property::ROTATION);
284 DALI_TEST_CHECK(value.GetType() == Property::ROTATION);
285 AngleAxis result = value.Get<AngleAxis>();
286 DALI_TEST_EQUALS(result.angle, Radian(0.f), TEST_LOCATION);
287 DALI_TEST_EQUALS(result.axis, Vector3::ZERO, TEST_LOCATION); // identity quaternion returns a zero angle-axis
292 int UtcDaliPropertyValueConstructorsStringP(void)
295 Property::Value value(v);
297 DALI_TEST_CHECK(value.GetType() == Property::STRING);
298 DALI_TEST_CHECK(value.Get<std::string>() == v);
303 int UtcDaliPropertyValueConstructorsStringTypeP(void)
305 Property::Value value(Property::STRING);
307 DALI_TEST_CHECK(value.GetType() == Property::STRING);
308 DALI_TEST_CHECK(value.Get<std::string>() == std::string());
313 int UtcDaliPropertyValueConstructorsArrayP(void)
316 Property::Value value(foo);
318 DALI_TEST_CHECK(value.GetType() == Property::ARRAY);
319 DALI_TEST_CHECK(value.Get<Property::Array>().Count() == 0);
324 int UtcDaliPropertyValueConstructorsArray2P(void)
327 foo.PushBack(Property::Value());
328 Property::Value value(foo);
330 DALI_TEST_CHECK(value.GetType() == Property::ARRAY);
331 DALI_TEST_CHECK(value.Get<Property::Array>().Count() == 1);
336 int UtcDaliPropertyValueConstructorsArrayTypeP(void)
338 Property::Value value(Property::ARRAY);
340 DALI_TEST_CHECK(value.GetType() == Property::ARRAY);
341 DALI_TEST_CHECK(value.Get<Property::Array>().Count() == 0);
346 int UtcDaliPropertyValueConstructorsMapP(void)
349 Property::Value value(map);
351 DALI_TEST_CHECK(value.GetType() == Property::MAP);
352 DALI_TEST_CHECK(value.Get<Property::Map>().Count() == 0);
357 int UtcDaliPropertyValueConstructorsMap2P(void)
361 Property::Value value(map);
363 DALI_TEST_CHECK(value.GetType() == Property::MAP);
364 DALI_TEST_CHECK(value.Get<Property::Map>().Count() == 1);
369 int UtcDaliPropertyValueConstructorsMapTypeP(void)
371 Property::Value value(Property::MAP);
373 DALI_TEST_CHECK(value.GetType() == Property::MAP);
374 DALI_TEST_CHECK(value.Get<Property::Map>().Count() == 0);
379 int UtcDaliPropertyValueConstructorsExtentsTypeP(void)
381 Property::Value value(Property::EXTENTS);
383 DALI_TEST_CHECK(value.GetType() == Property::EXTENTS);
384 DALI_TEST_CHECK(value.Get<Extents>() == Extents(0u, 0u, 0u, 0u));
389 int UtcDaliPropertyValueConstructorsExtentsType2P(void)
391 Property::Value value(Property::VECTOR4);
393 DALI_TEST_CHECK(value.GetType() == Property::VECTOR4);
394 DALI_TEST_CHECK(value.Get<Extents>() == Extents(0u, 0u, 0u, 0u));
399 int UtcDaliPropertyValueCopyConstructorP(void)
401 Property::Value value;
402 Property::Value value2(value);
403 DALI_TEST_EQUALS(value.GetType(), value2.GetType(), TEST_LOCATION);
404 DALI_TEST_EQUALS(value.GetMap(), value2.GetMap(), TEST_LOCATION);
405 DALI_TEST_EQUALS(value.GetArray(), value2.GetArray(), TEST_LOCATION);
409 int UtcDaliPropertyValueCopyConstructorBoolP(void)
411 CheckCopyCtorP<bool> check(true);
415 int UtcDaliPropertyValueCopyConstructorFloatP(void)
417 CheckCopyCtorP<float> check(1.f);
421 int UtcDaliPropertyValueCopyConstructorIntP(void)
423 CheckCopyCtorP<int> check(1);
427 int UtcDaliPropertyValueCopyConstructoVector2P(void)
429 CheckCopyCtorP<Vector2> check(Vector2(2, 1));
433 int UtcDaliPropertyValueCopyConstructorVector3P(void)
435 CheckCopyCtorP<Vector3> check(Vector3(3.f, 2.f, 1.f));
439 int UtcDaliPropertyValueCopyConstructorVector4P(void)
441 CheckCopyCtorP<Vector3> check(Vector4(4.f, 3.f, 2.f, 1.f));
445 int UtcDaliPropertyValueCopyConstructorMatrix3P(void)
447 CheckCopyCtorP<Matrix3> check(Matrix3::IDENTITY);
451 int UtcDaliPropertyValueCopyConstructorMatrixP(void)
453 CheckCopyCtorP<Matrix> check(Matrix::IDENTITY);
457 int UtcDaliPropertyValueCopyConstructorRectP(void)
459 CheckCopyCtorP<Rect<int> > check(Rect<int>(1.0, 1.0, 1.0, 1.0));
463 int UtcDaliPropertyValueCopyConstructorAngleAxisP(void)
465 CheckCopyCtorP<AngleAxis> check(AngleAxis(Degree(1.0), Vector3(1.0, 1.0, 1.0)));
469 int UtcDaliPropertyValueCopyConstructorQuaternionP(void)
471 CheckCopyCtorP<Quaternion> check(Quaternion(Vector4(1.0, 1.0, 1.0, 1.0)));
475 int UtcDaliPropertyValueCopyConstructorStringP(void)
477 CheckCopyCtorP<std::string> check(std::string("1"));
481 int UtcDaliPropertyValueCopyAssignStringDifferentTypeP(void)
483 Property::Value value1{Vector4(3.f, 2.f, 1.f, 2.0f)};
484 Property::Value value2{"very very long string ..................."};
490 DALI_TEST_EQUALS(value1.GetType(), value2.GetType(), TEST_LOCATION);
491 DALI_TEST_EQUALS(vec1, vec2, TEST_LOCATION);
493 Property::Value value3{Vector4(3.f, 2.f, 1.f, 2.0f)};
494 Property::Value value4{"very very long string ..................."};
498 DALI_TEST_EQUALS(value3.GetType(), value4.GetType(), TEST_LOCATION);
499 DALI_TEST_EQUALS(value3.Get<std::string>(), "very very long string ...................", TEST_LOCATION);
500 DALI_TEST_EQUALS(value3.Get<std::string>(), value4.Get<std::string>(), TEST_LOCATION);
504 int UtcDaliPropertyValueCopyConstructorArrayP(void)
506 Property::Value value1(Property::ARRAY);
507 Property::Array* array = value1.GetArray();
508 array->PushBack(Property::Value(1));
510 Property::Value value2(value1);
511 DALI_TEST_EQUALS(value1.GetType(), value2.GetType(), TEST_LOCATION);
512 DALI_TEST_EQUALS(value1.GetArray()->Count(), value2.GetArray()->Count(), TEST_LOCATION);
517 int UtcDaliPropertyValueCopyConstructorMapP(void)
519 Property::Value value1(Property::MAP);
520 Property::Map* map = value1.GetMap();
521 (*map)["1"] = Property::Value(1);
523 Property::Value value2(value1);
524 DALI_TEST_EQUALS(value1.GetType(), value2.GetType(), TEST_LOCATION);
525 DALI_TEST_EQUALS(value1.GetMap()->Count(), value2.GetMap()->Count(), TEST_LOCATION);
526 DALI_TEST_EQUALS(value1.GetMap()->GetKey(0), value2.GetMap()->GetKey(0), TEST_LOCATION);
531 int UtcDaliPropertyValueMoveConstructor(void)
533 Property::Value value1(Vector4::ONE);
534 DALI_TEST_EQUALS(Property::VECTOR4, value1.GetType(), TEST_LOCATION);
537 DALI_TEST_EQUALS(true, value1.Get(valueVector), TEST_LOCATION); // Able to convert
538 DALI_TEST_EQUALS(valueVector, Vector4::ONE, TEST_LOCATION);
540 Property::Value value2(std::move(value1));
541 DALI_TEST_EQUALS(Property::NONE, value1.GetType(), TEST_LOCATION);
542 DALI_TEST_EQUALS(false, value1.Get(valueVector), TEST_LOCATION); // Unable to convert, but no crash either
543 DALI_TEST_EQUALS(Property::VECTOR4, value2.GetType(), TEST_LOCATION);
544 DALI_TEST_EQUALS(true, value2.Get(valueVector), TEST_LOCATION); // Able to convert
545 DALI_TEST_EQUALS(valueVector, Vector4::ONE, TEST_LOCATION);
550 int UtcDaliPropertyValueMoveConstructorArray(void)
552 Property::Array array;
556 DALI_TEST_EQUALS(3u, array.Size(), TEST_LOCATION);
558 Property::Value value(std::move(array));
559 DALI_TEST_ASSERTION(array.Size(), "Cannot use an object previously used as an r-value"); // Our local variable should become invalid
561 Property::Array* arrayPtr = value.GetArray();
562 DALI_TEST_CHECK(arrayPtr);
563 DALI_TEST_EQUALS(3u, arrayPtr->Size(), TEST_LOCATION);
568 int UtcDaliPropertyValueMoveConstructorMap(void)
574 DALI_TEST_EQUALS(3u, map.Count(), TEST_LOCATION);
576 Property::Value value(std::move(map));
577 DALI_TEST_ASSERTION(map.Count(), "Cannot use an object previously used as an r-value"); // Our local variable should become invalid
579 Property::Map* mapPtr = value.GetMap();
580 DALI_TEST_CHECK(mapPtr);
581 DALI_TEST_EQUALS(3u, mapPtr->Count(), TEST_LOCATION);
586 int UtcDaliPropertyValueAssignmentSelfP(void)
588 Property::Value value;
589 Property::Value* self = &value;
591 DALI_TEST_EQUALS(value.GetType(), Property::NONE, TEST_LOCATION);
592 DALI_TEST_CHECK(value.GetMap() == NULL);
593 DALI_TEST_CHECK(value.GetArray() == NULL);
597 int UtcDaliPropertyValueAssignmentOperatorNoneP(void)
599 Property::Value value;
600 value = Property::Value(); // type match
601 DALI_TEST_EQUALS(value.GetType(), Property::NONE, TEST_LOCATION);
602 Property::Value copy(false);
603 copy = value; // type mismatch
604 DALI_TEST_EQUALS(value.GetType(), Property::NONE, TEST_LOCATION);
608 int UtcDaliPropertyValueAssignmentOperatorBoolP(void)
610 Property::Value value;
611 value = Property::Value(true); // type mismatch
612 DALI_TEST_CHECK(true == value.Get<bool>());
613 Property::Value copy(false);
614 copy = value; // type match
615 DALI_TEST_CHECK(true == copy.Get<bool>());
619 int UtcDaliPropertyValueAssignmentOperatorIntP(void)
621 Property::Value value;
622 value = Property::Value(10); // type mismatch
623 DALI_TEST_CHECK(10 == value.Get<int>());
624 Property::Value copy(99);
625 copy = value; // type match
626 DALI_TEST_CHECK(10 == copy.Get<int>());
630 int UtcDaliPropertyValueAssignmentOperatorFloatP(void)
632 Property::Value value;
633 value = Property::Value(10.f); // mismatch
634 DALI_TEST_CHECK(Dali::Equals(10.f, value.Get<float>()));
635 Property::Value copy(321.f);
636 copy = value; // match
637 DALI_TEST_CHECK(Dali::Equals(10.f, copy.Get<float>()));
641 int UtcDaliPropertyValueAssignmentOperatorVector2P(void)
643 Property::Value value;
644 value = Property::Value(Vector2(1, 2)); // mismatch
645 DALI_TEST_CHECK(Vector2(1, 2) == value.Get<Vector2>());
646 Property::Value copy(Property::VECTOR2);
647 copy = value; // match
648 DALI_TEST_CHECK(Vector2(1, 2) == copy.Get<Vector2>());
652 int UtcDaliPropertyValueAssignmentOperatorVector3P(void)
654 Property::Value value;
655 value = Property::Value(Vector3(1.f, 2.f, 3.f)); // mismatch
656 DALI_TEST_CHECK(Vector3(1.f, 2.f, 3.f) == value.Get<Vector3>());
657 Property::Value copy(Property::VECTOR3);
658 copy = value; // match
659 DALI_TEST_CHECK(Vector3(1.f, 2.f, 3.f) == copy.Get<Vector3>());
663 int UtcDaliPropertyValueAssignmentOperatorVector4P(void)
665 Property::Value value;
666 value = Property::Value(Vector4(1, 2, 3, 4)); // mismatch
667 DALI_TEST_CHECK(Vector4(1, 2, 3, 4) == value.Get<Vector4>());
668 Property::Value copy(Vector4(0, 1, 2, 3));
669 copy = value; // match
670 DALI_TEST_CHECK(Vector4(1, 2, 3, 4) == copy.Get<Vector4>());
674 int UtcDaliPropertyValueAssignmentOperatorMatrix3P(void)
676 Property::Value value;
677 value = Property::Value(Matrix3::IDENTITY); // mismatch
678 DALI_TEST_CHECK(Matrix3::IDENTITY == value.Get<Matrix3>());
679 Property::Value copy(Property::MATRIX3);
680 copy = value; // match
681 DALI_TEST_CHECK(Matrix3::IDENTITY == copy.Get<Matrix3>());
685 int UtcDaliPropertyValueAssignmentOperatorMatrixP(void)
687 Property::Value value;
688 value = Property::Value(Matrix::IDENTITY); // mismatch
689 DALI_TEST_CHECK(Matrix::IDENTITY == value.Get<Matrix>());
691 Property::Value copy(foo);
692 copy = value; // match
693 DALI_TEST_CHECK(Matrix::IDENTITY == copy.Get<Matrix>());
697 int UtcDaliPropertyValueAssignmentOperatorRectP(void)
699 Property::Value value;
700 typedef Dali::Rect<int> Rectangle;
701 value = Property::Value(Rectangle(4, 3, 2, 1)); // mismatch
702 DALI_TEST_CHECK(Rectangle(4, 3, 2, 1) == value.Get<Rectangle>());
703 Property::Value copy(Property::RECTANGLE);
704 copy = value; // match
707 DALI_TEST_CHECK(Rectangle(4, 3, 2, 1) == copyRect);
711 int UtcDaliPropertyValueAssignmentOperatorQuaternionP(void)
713 Property::Value value;
714 Quaternion result(Radian(Math::PI_2), Vector3::YAXIS);
715 value = Property::Value(result);
717 DALI_TEST_EQUALS(value.Get<Quaternion>(), result, 0.001, TEST_LOCATION);
719 Property::Value copy(Property::ROTATION);
720 copy = value; // match
721 DALI_TEST_EQUALS(copy.Get<Quaternion>(), result, 0.001, TEST_LOCATION);
725 int UtcDaliPropertyValueAssignmentOperatorAngleAxisP(void)
727 Property::Value value;
728 value = Property::Value(AngleAxis(Radian(Math::PI_2), Vector3::XAXIS)); // mismatch
729 DALI_TEST_EQUALS(value.Get<AngleAxis>().axis, Vector3::XAXIS, TEST_LOCATION);
730 DALI_TEST_EQUALS(value.Get<AngleAxis>().angle, Radian(Math::PI_2), TEST_LOCATION);
731 Property::Value copy(Property::ROTATION);
732 copy = value; // match
733 DALI_TEST_EQUALS(value.Get<AngleAxis>().axis, copy.Get<AngleAxis>().axis, TEST_LOCATION);
734 DALI_TEST_EQUALS(value.Get<AngleAxis>().angle, copy.Get<AngleAxis>().angle, TEST_LOCATION);
738 int UtcDaliPropertyValueAssignmentOperatorStringP(void)
740 Property::Value value;
741 value = Property::Value("yes"); // mismatch
742 DALI_TEST_CHECK("yes" == value.Get<std::string>());
743 Property::Value copy("no");
744 copy = value; // match
745 DALI_TEST_CHECK("yes" == copy.Get<std::string>());
749 int UtcDaliPropertyValueAssignmentOperatorArrayP(void)
751 Property::Value value;
752 value = Property::Value(Property::ARRAY); // mismatch
753 value.GetArray()->PushBack(10);
754 DALI_TEST_CHECK(value.GetArray());
755 Property::Value copy(Property::ARRAY);
756 copy = value; // match
757 Property::Array array;
760 array[0].Get(getItem);
761 DALI_TEST_CHECK(getItem == 10);
765 int UtcDaliPropertyValueAssignmentOperatorMapP(void)
767 Property::Value value;
768 value = Property::Value(Property::MAP); // mismatch
769 value.GetMap()->Insert("key", "value");
770 Property::Value copy(Property::MAP); // match
774 DALI_TEST_CHECK(map.GetKey(0) == "key");
778 int UtcDaliPropertyValueAssignmentOperatorExtentsP(void)
780 Property::Value value;
781 value = Property::Value(Extents(4, 3, 2, 1)); // mismatch
782 DALI_TEST_CHECK(Extents(4, 3, 2, 1) == value.Get<Extents>());
783 Property::Value copy(Property::EXTENTS);
784 copy = value; // match
786 copy.Get(copyExtents);
787 DALI_TEST_CHECK(Extents(4, 3, 2, 1) == copyExtents);
791 int UtcDaliPropertyValueMoveAssignmentOperator(void)
793 Property::Value value1(Vector4::ONE);
794 DALI_TEST_EQUALS(Property::VECTOR4, value1.GetType(), TEST_LOCATION);
797 DALI_TEST_EQUALS(true, value1.Get(valueVector), TEST_LOCATION); // Able to convert
798 DALI_TEST_EQUALS(valueVector, Vector4::ONE, TEST_LOCATION);
800 Property::Value value2;
801 value2 = std::move(value1);
802 DALI_TEST_EQUALS(Property::NONE, value1.GetType(), TEST_LOCATION);
803 DALI_TEST_EQUALS(false, value1.Get(valueVector), TEST_LOCATION); // Unable to convert, but no crash either
804 DALI_TEST_EQUALS(Property::VECTOR4, value2.GetType(), TEST_LOCATION);
805 DALI_TEST_EQUALS(true, value2.Get(valueVector), TEST_LOCATION); // Able to convert
806 DALI_TEST_EQUALS(valueVector, Vector4::ONE, TEST_LOCATION);
808 // Change to another value type
809 value2 = std::move(Property::Value(1.0f));
810 DALI_TEST_EQUALS(false, value2.Get(valueVector), TEST_LOCATION); // Should not be able to convert to a Vector4 now
812 DALI_TEST_EQUALS(true, value2.Get(valueFloat), TEST_LOCATION); // Should be able to convert to a float now
813 DALI_TEST_EQUALS(valueFloat, 1.0f, TEST_LOCATION);
815 // Self std::move assignment make compile warning over gcc-13. Let we ignore the warning.
817 #pragma GCC diagnostic push
818 #pragma GCC diagnostic ignored "-Wself-move"
820 // Ensure self assignment doesn't do anything silly
821 value2 = std::move(value2);
822 DALI_TEST_EQUALS(true, value2.Get(valueFloat), TEST_LOCATION);
823 DALI_TEST_EQUALS(valueFloat, 1.0f, TEST_LOCATION);
825 #pragma GCC diagnostic pop
831 int UtcDaliPropertyValueGetTypeP(void)
833 Property::Value value;
834 DALI_TEST_CHECK(value.GetType() == Property::NONE);
838 int UtcDaliPropertyValueGetBoolP(void)
840 Property::Value value(true);
842 DALI_TEST_CHECK(value.Get(boolean) == true);
843 DALI_TEST_CHECK(value.Get<bool>() == true);
845 DALI_TEST_CHECK(value.Get(string) == false);
846 value = Property::Value(1.f);
847 DALI_TEST_CHECK(value.Get<float>() == 1.f);
851 int UtcDaliPropertyValueGetBoolN(void)
853 Property::Value value;
854 DALI_TEST_CHECK(value.Get<bool>() == false);
856 DALI_TEST_CHECK(value.Get(boolean) == false);
860 int UtcDaliPropertyValueGetFloatP(void)
862 Property::Value value(1.1f);
864 DALI_TEST_EQUALS(1.1f, value.Get<float>(), TEST_LOCATION);
865 DALI_TEST_EQUALS(true, value.Get(flow), TEST_LOCATION);
866 DALI_TEST_EQUALS(1.1f, flow, TEST_LOCATION);
868 Property::Value intValue(100);
869 DALI_TEST_EQUALS(100.f, intValue.Get<float>(), TEST_LOCATION);
870 DALI_TEST_EQUALS(true, intValue.Get(flow), TEST_LOCATION);
871 DALI_TEST_EQUALS(100.f, flow, TEST_LOCATION);
876 int UtcDaliPropertyValueGetFloatN(void)
878 Property::Value value;
880 DALI_TEST_EQUALS(false, value.Get(result), TEST_LOCATION);
881 DALI_TEST_EQUALS(1.0f, result, TEST_LOCATION); // result is not modified
882 Property::Value value2("");
883 DALI_TEST_EQUALS(false, value2.Get(result), TEST_LOCATION);
884 DALI_TEST_EQUALS(1.0f, result, TEST_LOCATION); // result is not modified
888 int UtcDaliPropertyValueGetIntP(void)
890 Property::Value value(123);
892 DALI_TEST_EQUALS(123, value.Get<int>(), TEST_LOCATION);
893 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
894 DALI_TEST_EQUALS(123, result, TEST_LOCATION);
896 Property::Value floatValue(21.f);
897 DALI_TEST_EQUALS(21, floatValue.Get<int>(), TEST_LOCATION);
898 DALI_TEST_EQUALS(true, floatValue.Get(result), TEST_LOCATION);
899 DALI_TEST_EQUALS(21, result, TEST_LOCATION);
904 int UtcDaliPropertyValueGetIntN(void)
906 Property::Value value;
908 DALI_TEST_EQUALS(0, value.Get<int>(), TEST_LOCATION);
909 DALI_TEST_EQUALS(false, value.Get(result), TEST_LOCATION);
910 DALI_TEST_EQUALS(10, result, TEST_LOCATION); // result is not modified
911 Property::Value value2("");
912 DALI_TEST_EQUALS(false, value2.Get(result), TEST_LOCATION);
913 DALI_TEST_EQUALS(10, result, TEST_LOCATION); // result is not modified
917 int UtcDaliPropertyValueGetRectP(void)
919 Property::Value value(Rect<int>(1, 2, 3, 4));
920 Rect<int> result(4, 3, 2, 1);
921 DALI_TEST_EQUALS(Rect<int>(1, 2, 3, 4), value.Get<Rect<int> >(), TEST_LOCATION);
922 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
923 DALI_TEST_EQUALS(Rect<int>(1, 2, 3, 4), result, TEST_LOCATION);
927 int UtcDaliPropertyValueGetRectN(void)
929 Property::Value value;
930 Rect<int> result(4, 3, 2, 1);
931 DALI_TEST_EQUALS(Rect<int>(0, 0, 0, 0), value.Get<Rect<int> >(), TEST_LOCATION);
932 DALI_TEST_EQUALS(false, value.Get(result), TEST_LOCATION);
933 DALI_TEST_EQUALS(Rect<int>(4, 3, 2, 1), result, TEST_LOCATION);
934 Property::Value value2("");
935 DALI_TEST_EQUALS(false, value2.Get(result), TEST_LOCATION);
936 DALI_TEST_EQUALS(Rect<int>(4, 3, 2, 1), result, TEST_LOCATION);
940 int UtcDaliPropertyValueGetVector2P(void)
942 Property::Value value(Vector2(1.0f, 2.0f));
944 DALI_TEST_EQUALS(Vector2(1.0f, 2.0f), value.Get<Vector2>(), TEST_LOCATION);
945 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
946 DALI_TEST_EQUALS(Vector2(1.0f, 2.0f), result, TEST_LOCATION);
950 int UtcDaliPropertyValueGetVector2fromVector3P(void)
952 Property::Value value(Vector3(1.f, 2.f, 3.f));
954 DALI_TEST_EQUALS(Vector2(1.0f, 2.0f), value.Get<Vector2>(), TEST_LOCATION);
955 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
956 DALI_TEST_EQUALS(Vector2(1.0f, 2.0f), result, TEST_LOCATION);
960 int UtcDaliPropertyValueGetVector2fromVector4P(void)
962 Property::Value value(Vector4(1.f, 2.f, 3.f, 4.f));
964 DALI_TEST_EQUALS(Vector2(1.0f, 2.0f), value.Get<Vector2>(), TEST_LOCATION);
965 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
966 DALI_TEST_EQUALS(Vector2(1.0f, 2.0f), result, TEST_LOCATION);
970 int UtcDaliPropertyValueGetVector2N(void)
972 Property::Value value;
974 DALI_TEST_EQUALS(Vector2(0.f, 0.f), value.Get<Vector2>(), TEST_LOCATION);
975 DALI_TEST_EQUALS(false, value.Get(result), TEST_LOCATION);
976 DALI_TEST_EQUALS(Vector2(), result, TEST_LOCATION);
977 Property::Value value2("");
978 DALI_TEST_EQUALS(false, value2.Get(result), TEST_LOCATION);
979 DALI_TEST_EQUALS(Vector2(), result, TEST_LOCATION);
983 int UtcDaliPropertyValueGetVector3P(void)
985 Property::Value value(Vector3(1.0f, 2.0f, -1.f));
987 DALI_TEST_EQUALS(Vector3(1.0f, 2.0f, -1.f), value.Get<Vector3>(), TEST_LOCATION);
988 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
989 DALI_TEST_EQUALS(Vector3(1.0f, 2.0f, -1.f), result, TEST_LOCATION);
993 int UtcDaliPropertyValueGetVector3FromVector2P(void)
995 Property::Value value(Vector2(1.0f, 2.0f));
996 Vector3 result(99.f, 88.f, 77.f);
997 DALI_TEST_EQUALS(Vector3(1.0f, 2.0f, 0.f), value.Get<Vector3>(), TEST_LOCATION);
998 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
999 DALI_TEST_EQUALS(Vector3(1.0f, 2.0f, 0.f), result, TEST_LOCATION);
1003 int UtcDaliPropertyValueGetVector3FromVector4P(void)
1005 Property::Value value(Vector4(4.f, 3.f, 2.f, 1.f));
1007 DALI_TEST_EQUALS(Vector3(4.f, 3.f, 2.f), value.Get<Vector3>(), TEST_LOCATION);
1008 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
1009 DALI_TEST_EQUALS(Vector3(4.f, 3.f, 2.f), result, TEST_LOCATION);
1013 int UtcDaliPropertyValueGetVector3N(void)
1015 Property::Value value;
1017 DALI_TEST_EQUALS(Vector3(0.f, 0.f, 0.f), value.Get<Vector3>(), TEST_LOCATION);
1018 DALI_TEST_EQUALS(false, value.Get(result), TEST_LOCATION);
1019 DALI_TEST_EQUALS(Vector3(), result, TEST_LOCATION);
1020 Property::Value value2("");
1021 DALI_TEST_EQUALS(false, value2.Get(result), TEST_LOCATION);
1022 DALI_TEST_EQUALS(Vector3(), result, TEST_LOCATION);
1026 int UtcDaliPropertyValueGetVector4P(void)
1028 Property::Value value(Vector4(1.f, 2.f, -1.f, -3.f));
1030 DALI_TEST_EQUALS(Vector4(1.f, 2.f, -1.f, -3.f), value.Get<Vector4>(), TEST_LOCATION);
1031 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
1032 DALI_TEST_EQUALS(Vector4(1.f, 2.f, -1.f, -3.f), result, TEST_LOCATION);
1036 int UtcDaliPropertyValueGetVector4FromVector2P(void)
1038 Property::Value value(Vector2(-1.f, -3.f));
1039 Vector4 result(99.f, 88.f, 77.f, 66.f);
1040 DALI_TEST_EQUALS(Vector4(-1.f, -3.f, 0.f, 0.f), value.Get<Vector4>(), TEST_LOCATION);
1041 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
1042 DALI_TEST_EQUALS(Vector4(-1.f, -3.f, 0.f, 0.f), result, TEST_LOCATION);
1046 int UtcDaliPropertyValueGetVector4FromVector3P(void)
1048 Property::Value value(Vector3(1.f, 2.f, -1.f));
1049 Vector4 result(99.f, 88.f, 77.f, 66.f);
1050 DALI_TEST_EQUALS(Vector4(1.f, 2.f, -1.f, 0.f), value.Get<Vector4>(), TEST_LOCATION);
1051 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
1052 DALI_TEST_EQUALS(Vector4(1.f, 2.f, -1.f, 0.f), result, TEST_LOCATION);
1056 int UtcDaliPropertyValueGetVector4N(void)
1058 Property::Value value;
1060 DALI_TEST_EQUALS(Vector4(0.f, 0.f, 0.f, 0.f), value.Get<Vector4>(), TEST_LOCATION);
1061 DALI_TEST_EQUALS(false, value.Get(result), TEST_LOCATION);
1062 DALI_TEST_EQUALS(Vector4(), result, TEST_LOCATION);
1063 Property::Value value2("");
1064 DALI_TEST_EQUALS(false, value2.Get(result), TEST_LOCATION);
1065 DALI_TEST_EQUALS(Vector4(), result, TEST_LOCATION);
1069 int UtcDaliPropertyValueGetMatrix3P(void)
1071 Property::Value value(Matrix3(1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f));
1073 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);
1074 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
1075 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);
1079 int UtcDaliPropertyValueGetMatrix3N(void)
1081 Property::Value value;
1082 Matrix3 result(1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f);
1083 DALI_TEST_EQUALS(Matrix3(), value.Get<Matrix3>(), TEST_LOCATION);
1084 DALI_TEST_EQUALS(false, value.Get(result), TEST_LOCATION);
1085 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);
1086 Property::Value value2("");
1087 DALI_TEST_EQUALS(false, value2.Get(result), TEST_LOCATION);
1088 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);
1092 int UtcDaliPropertyValueGetMatrixP(void)
1094 float matrixValues[16] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
1095 Matrix input(matrixValues);
1096 Property::Value value(input);
1098 DALI_TEST_EQUALS(input, value.Get<Matrix>(), TEST_LOCATION);
1099 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
1100 DALI_TEST_EQUALS(input, result, TEST_LOCATION);
1104 int UtcDaliPropertyValueGetMatrixN(void)
1106 Property::Value value;
1107 Matrix result(Matrix::IDENTITY);
1108 DALI_TEST_EQUALS(Matrix(), value.Get<Matrix>(), TEST_LOCATION);
1109 DALI_TEST_EQUALS(false, value.Get(result), TEST_LOCATION);
1110 DALI_TEST_EQUALS(Matrix::IDENTITY, result, TEST_LOCATION);
1112 Property::Value value2("");
1113 DALI_TEST_EQUALS(false, value2.Get(result), TEST_LOCATION);
1114 DALI_TEST_EQUALS(Matrix::IDENTITY, result, TEST_LOCATION);
1118 int UtcDaliPropertyValueGetAngleAxisP(void)
1120 AngleAxis input(Dali::ANGLE_90, Vector3::XAXIS);
1121 Property::Value value(input);
1122 AngleAxis result = value.Get<AngleAxis>();
1123 DALI_TEST_EQUALS(input.angle, result.angle, TEST_LOCATION);
1124 DALI_TEST_EQUALS(input.axis, result.axis, TEST_LOCATION);
1126 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
1127 DALI_TEST_EQUALS(input, result, TEST_LOCATION);
1131 int UtcDaliPropertyValueGetAngleAxisN(void)
1133 Property::Value value;
1134 AngleAxis b = value.Get<AngleAxis>();
1136 DALI_TEST_EQUALS((Radian)0.f, b.angle, TEST_LOCATION);
1137 DALI_TEST_EQUALS(Vector3::ZERO, b.axis, TEST_LOCATION);
1138 DALI_TEST_EQUALS(false, value.Get(result), TEST_LOCATION);
1139 DALI_TEST_EQUALS(AngleAxis(), result, TEST_LOCATION);
1141 Property::Value value2("");
1142 DALI_TEST_EQUALS(false, value2.Get(result), TEST_LOCATION);
1143 DALI_TEST_EQUALS(AngleAxis(), result, TEST_LOCATION);
1147 int UtcDaliPropertyValueGetQuaternionP(void)
1149 Vector3 axis(1, 1, 0);
1152 Quaternion result(Radian(1.f), axis);
1153 Property::Value value(result);
1155 DALI_TEST_EQUALS(result, value.Get<Quaternion>(), TEST_LOCATION);
1157 DALI_TEST_EQUALS(true, value.Get(test2), TEST_LOCATION);
1161 int UtcDaliPropertyValueGetQuaternionN(void)
1163 Property::Value value;
1164 Vector3 axis(1, 1, 0);
1166 Quaternion result(Radian(1.f), axis);
1167 Quaternion test(result);
1169 DALI_TEST_EQUALS(Quaternion(), value.Get<Quaternion>(), TEST_LOCATION);
1170 DALI_TEST_EQUALS(false, value.Get(test), TEST_LOCATION);
1171 DALI_TEST_EQUALS(test, result, TEST_LOCATION);
1173 Property::Value value2("");
1174 DALI_TEST_EQUALS(false, value2.Get(test), TEST_LOCATION);
1175 DALI_TEST_EQUALS(test, result, TEST_LOCATION);
1179 int UtcDaliPropertyValueGetStringP(void)
1181 Property::Value value(std::string("hello"));
1183 DALI_TEST_EQUALS(std::string("hello"), value.Get<std::string>(), TEST_LOCATION);
1184 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
1185 DALI_TEST_EQUALS(std::string("hello"), result, TEST_LOCATION);
1187 Property::Value value2("C hi!");
1188 DALI_TEST_EQUALS("C hi!", value2.Get<std::string>(), TEST_LOCATION);
1189 DALI_TEST_EQUALS(true, value2.Get(result), TEST_LOCATION);
1190 DALI_TEST_EQUALS("C hi!", result, TEST_LOCATION);
1194 int UtcDaliPropertyValueGetStringN(void)
1196 Property::Value value;
1197 std::string result("doesn't change");
1198 DALI_TEST_EQUALS(std::string(), value.Get<std::string>(), TEST_LOCATION);
1199 DALI_TEST_EQUALS(false, value.Get(result), TEST_LOCATION);
1200 DALI_TEST_EQUALS("doesn't change", result, TEST_LOCATION);
1202 Property::Value value2(10);
1203 DALI_TEST_EQUALS(false, value2.Get(result), TEST_LOCATION);
1204 DALI_TEST_EQUALS("doesn't change", result, TEST_LOCATION);
1206 Property::Value value3((char*)NULL);
1207 DALI_TEST_EQUALS(true, value3.Get(result), TEST_LOCATION);
1208 DALI_TEST_EQUALS(std::string(), result, TEST_LOCATION);
1212 int UtcDaliPropertyValueGetArrayP(void)
1214 Property::Value value(Property::ARRAY);
1215 DALI_TEST_CHECK(NULL != value.GetArray());
1216 value.GetArray()->PushBack(Property::Value(1));
1217 Property::Array got = value.Get<Property::Array>();
1218 DALI_TEST_CHECK(got[0].Get<int>() == 1);
1219 Property::Array result;
1220 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
1221 DALI_TEST_CHECK(result[0].Get<int>() == 1);
1225 int UtcDaliPropertyValueGetArrayN(void)
1227 Property::Value value;
1228 DALI_TEST_CHECK(NULL == value.GetArray());
1229 Property::Array result;
1230 result.PushBack(Property::Value(10));
1231 DALI_TEST_EQUALS(false, value.Get(result), TEST_LOCATION);
1232 DALI_TEST_EQUALS(1u, result.Count(), TEST_LOCATION); // array is not modified
1234 Property::Value value2("");
1235 DALI_TEST_EQUALS(false, value2.Get(result), TEST_LOCATION);
1236 DALI_TEST_EQUALS(1u, result.Count(), TEST_LOCATION); // array is not modified
1240 int UtcDaliPropertyValueGetMapP(void)
1242 Property::Value value(Property::MAP);
1243 DALI_TEST_CHECK(NULL == value.GetArray());
1244 DALI_TEST_CHECK(NULL != value.GetMap());
1245 value.GetMap()->Insert("key", Property::Value(1));
1246 Property::Map result = value.Get<Property::Map>();
1247 DALI_TEST_CHECK(result.Find("key")->Get<int>() == 1);
1248 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
1249 DALI_TEST_CHECK(result.Find("key")->Get<int>() == 1);
1253 int UtcDaliPropertyValueGetMapN(void)
1255 Property::Value value;
1256 DALI_TEST_CHECK(NULL == value.GetMap());
1257 DALI_TEST_EQUALS(0u, value.Get<Property::Map>().Count(), TEST_LOCATION);
1258 Property::Map result;
1259 result.Insert("key", "value");
1260 DALI_TEST_EQUALS(false, value.Get(result), TEST_LOCATION);
1261 DALI_TEST_EQUALS(1u, result.Count(), TEST_LOCATION);
1263 Property::Value value2("");
1264 DALI_TEST_EQUALS(false, value2.Get(result), TEST_LOCATION);
1265 DALI_TEST_EQUALS(1u, result.Count(), TEST_LOCATION); // array is not modified
1269 int UtcDaliPropertyValueGetExtentsP(void)
1271 Property::Value value(Extents(1u, 2u, 3u, 4u));
1272 Extents result(4u, 3u, 2u, 1u);
1273 DALI_TEST_EQUALS(Extents(1u, 2u, 3u, 4u), value.Get<Extents>(), TEST_LOCATION);
1274 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
1275 DALI_TEST_EQUALS(Extents(1u, 2u, 3u, 4u), result, TEST_LOCATION);
1279 int UtcDaliPropertyValueEnum(void)
1286 Property::Value value(E::e);
1287 DALI_TEST_EQUALS(static_cast<int>(E::e), static_cast<int>(value.Get<E>()), TEST_LOCATION);
1288 DALI_TEST_EQUALS(static_cast<int>(E::e), value.Get<int>(), TEST_LOCATION);
1290 DALI_TEST_EQUALS(true, value.Get(result), TEST_LOCATION);
1291 DALI_TEST_EQUALS(static_cast<int>(E::e), static_cast<int>(result), TEST_LOCATION);
1293 DALI_TEST_EQUALS(true, value.Get(result2), TEST_LOCATION);
1294 DALI_TEST_EQUALS(static_cast<int>(E::e), result2, TEST_LOCATION);
1298 int UtcDaliPropertyValueEqualSameType(void)
1300 float a[] = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f};
1301 float b[] = {16.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 1.0f};
1302 Property::Value valueList[] =
1304 Property::Value(static_cast<bool>(true)),
1305 Property::Value(static_cast<float>(7.0f)),
1306 Property::Value(static_cast<int32_t>(32)),
1307 Property::Value(Vector2(1.0f, 2.0f)),
1308 Property::Value(Vector3(1.1f, 2.2f, 3.3f)),
1309 Property::Value(Vector4(1.2f, 2.1f, 3.4f, 4.3f)),
1310 Property::Value(Matrix3(1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f)),
1311 Property::Value(Matrix(a)),
1312 Property::Value(Rect<int32_t>(3, 2, 5, 4)),
1313 Property::Value(AngleAxis(Radian(2.0f), Vector3(0.0f, 1.0f, 0.0f))),
1314 Property::Value(std::string("Hello, World!")),
1315 Property::Value(Extents(8, 4, 2, 5)),
1317 Property::Value otherValueList[] =
1319 Property::Value(static_cast<bool>(false)),
1320 Property::Value(static_cast<float>(1.0f)),
1321 Property::Value(static_cast<int32_t>(4)),
1322 Property::Value(Vector2(2.0f, 1.0f)),
1323 Property::Value(Vector3(2.2f, 1.1f, 3.3f)),
1324 Property::Value(Vector4(2.1f, 1.2f, 3.4f, 4.3f)),
1325 Property::Value(Matrix3(7.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f)),
1326 Property::Value(Matrix(b)),
1327 Property::Value(Rect<int32_t>(2, 3, 4, 5)),
1328 Property::Value(AngleAxis(Radian(20.0f), Vector3(0.0f, 1.0f, 0.0f))),
1329 Property::Value(std::string("Hell, o, World!")),
1330 Property::Value(Extents(4, 8, 5, 2)),
1332 const int valueCount = sizeof(valueList) / sizeof(valueList[0]);
1335 for(int i = 0; i < valueCount; ++i)
1337 // Check self comparision
1338 DALI_TEST_EQUALS(valueList[i], valueList[i], TEST_LOCATION);
1339 // Check same value comparision
1340 Property::Value copiedValue = valueList[i];
1341 DALI_TEST_EQUALS(valueList[i], copiedValue, TEST_LOCATION);
1342 // Check not equal value comparision
1343 DALI_TEST_NOT_EQUALS(valueList[i], otherValueList[i], Math::MACHINE_EPSILON_100, TEST_LOCATION);
1344 // Check empty type value
1345 DALI_TEST_NOT_EQUALS(valueList[i], Property::Value(), Math::MACHINE_EPSILON_100, TEST_LOCATION);
1348 // Compare with empty type.
1349 DALI_TEST_EQUALS(Property::Value(), Property::Value(), TEST_LOCATION);
1354 int UtcDaliPropertyValueEqualArrayType(void)
1356 tet_infoline("Check Property::Array type equality.");
1357 Property::Array array1;
1358 Property::Array array2;
1359 Property::Array array3;
1360 Property::Array array4;
1361 Property::Array array5;
1362 Property::Array array6;
1364 array1.PushBack(Property::Value(30));
1365 array1.PushBack(Property::Value(20.0f));
1366 array1.PushBack(Property::Value("string"));
1368 // Construct same array
1369 array2.PushBack(Property::Value(30));
1370 array2.PushBack(Property::Value(20.0f));
1371 array2.PushBack(Property::Value("string"));
1373 // Construct same value, but different order
1374 array3.PushBack(Property::Value(20.0f));
1375 array3.PushBack(Property::Value(30));
1376 array3.PushBack(Property::Value("string"));
1378 // Construct same type, but different value
1379 array4.PushBack(Property::Value(30));
1380 array4.PushBack(Property::Value(20.0f));
1381 array4.PushBack(Property::Value("not equal string"));
1383 // Construct same prefix value, but different length
1384 array5.PushBack(Property::Value(30));
1385 array5.PushBack(Property::Value(20.0f));
1386 array5.PushBack(Property::Value("string"));
1387 array5.PushBack(Property::Value("string2"));
1389 // Construct same length, but different type
1390 array6.PushBack(Property::Value(static_cast<bool>(true)));
1391 array6.PushBack(Property::Value("string"));
1392 array6.PushBack(Property::Value(22));
1394 Property::Value value1(array1);
1395 Property::Value value2(array2);
1396 Property::Value value3(array3);
1397 Property::Value value4(array4);
1398 Property::Value value5(array5);
1399 Property::Value value6(array6);
1401 DALI_TEST_NOT_EQUALS(value1, value3, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1402 DALI_TEST_NOT_EQUALS(value1, value4, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1403 DALI_TEST_NOT_EQUALS(value1, value5, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1404 DALI_TEST_NOT_EQUALS(value1, value6, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1405 DALI_TEST_NOT_EQUALS(value3, value4, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1406 DALI_TEST_NOT_EQUALS(value3, value5, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1407 DALI_TEST_NOT_EQUALS(value3, value6, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1408 DALI_TEST_NOT_EQUALS(value4, value5, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1409 DALI_TEST_NOT_EQUALS(value4, value6, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1410 DALI_TEST_NOT_EQUALS(value5, value6, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1412 // TODO : Currently array comparision not implemented.
1413 // If we impelemnt array comparision, replace below line.
1414 // DALI_TEST_EQUALS(value1, value2, TEST_LOCATION);
1415 DALI_TEST_NOT_EQUALS(value1, value2, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1420 int UtcDaliPropertyValueEqualMapType(void)
1422 tet_infoline("Check Property::Map type equality.");
1430 map1.Insert(10, Property::Value(30));
1431 map1.Insert("20", Property::Value(20.0f));
1432 map1.Insert(30, Property::Value("string"));
1434 // Construct same map
1435 map2.Insert(30, Property::Value("string"));
1436 map2.Insert(10, Property::Value(30));
1437 map2.Insert("20", Property::Value(20.0f));
1439 // Construct same type, but different value
1440 map3.Insert(10, Property::Value(30));
1441 map3.Insert("20", Property::Value(20.0f));
1442 map3.Insert(30, Property::Value("not equal string"));
1444 // Construct same value, but different key
1445 map4.Insert(10, Property::Value(30));
1446 map4.Insert(20, Property::Value(20.0f));
1447 map4.Insert("30", Property::Value("string"));
1449 // Construct same prefix value, but different length
1450 map5.Insert(10, Property::Value(30));
1451 map5.Insert("20", Property::Value(20.0f));
1452 map5.Insert(30, Property::Value("string"));
1453 map5.Insert(40, Property::Value("string2"));
1455 // Construct same length, same key, but different type
1456 map6.Insert(10, Property::Value(static_cast<bool>(true)));
1457 map6.Insert("20", Property::Value("string"));
1458 map6.Insert(30, Property::Value(22));
1460 Property::Value value1(map1);
1461 Property::Value value2(map2);
1462 Property::Value value3(map3);
1463 Property::Value value4(map4);
1464 Property::Value value5(map5);
1465 Property::Value value6(map6);
1467 DALI_TEST_NOT_EQUALS(value1, value3, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1468 DALI_TEST_NOT_EQUALS(value1, value4, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1469 DALI_TEST_NOT_EQUALS(value1, value5, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1470 DALI_TEST_NOT_EQUALS(value1, value6, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1471 DALI_TEST_NOT_EQUALS(value3, value4, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1472 DALI_TEST_NOT_EQUALS(value3, value5, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1473 DALI_TEST_NOT_EQUALS(value3, value6, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1474 DALI_TEST_NOT_EQUALS(value4, value5, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1475 DALI_TEST_NOT_EQUALS(value4, value6, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1476 DALI_TEST_NOT_EQUALS(value5, value6, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1478 // TODO : Currently map comparision not implemented.
1479 // If we impelemnt map comparision, replace below line.
1480 // DALI_TEST_EQUALS(value1, value2, TEST_LOCATION);
1481 DALI_TEST_NOT_EQUALS(value1, value2, Math::MACHINE_EPSILON_100, TEST_LOCATION);
1486 int UtcDaliPropertyValueOutputStream(void)
1488 TestApplication application;
1489 tet_infoline("Testing Property::Value output stream");
1490 typedef Dali::Rect<int> Rectangle;
1492 Property::Value value(true);
1494 std::ostringstream stream;
1496 DALI_TEST_CHECK(stream.str() == "1")
1500 Property::Value empty;
1501 std::ostringstream stream;
1503 DALI_TEST_EQUALS(stream.str(), "undefined type", TEST_LOCATION);
1507 Property::Value empty(Property::NONE);
1508 std::ostringstream stream;
1510 DALI_TEST_CHECK(stream.str() == "undefined type")
1514 value = Property::Value(20.2f);
1515 std::ostringstream stream;
1517 DALI_TEST_CHECK(stream.str() == "20.2")
1521 value = Property::Value(-25);
1522 std::ostringstream stream;
1524 DALI_TEST_CHECK(stream.str() == "-25")
1528 value = Property::Value(Vector2(1.f, 1.f));
1529 std::ostringstream stream;
1531 DALI_TEST_CHECK(stream.str() == "[1, 1]");
1535 value = Property::Value(Vector3(1.f, 1.f, 1.f));
1536 std::ostringstream stream;
1538 DALI_TEST_CHECK(stream.str() == "[1, 1, 1]");
1542 value = Property::Value(Vector4(-4.f, -3.f, -2.f, -1.f));
1543 std::ostringstream stream;
1545 DALI_TEST_EQUALS(stream.str(), "[-4, -3, -2, -1]", TEST_LOCATION);
1549 value = Property::Value(Matrix3::IDENTITY);
1550 std::ostringstream stream;
1552 DALI_TEST_CHECK(stream.str() == "[ 1, 0, 0, 0, 1, 0, 0, 0, 1 ]");
1556 value = Property::Value(Matrix::IDENTITY);
1557 std::ostringstream stream;
1559 DALI_TEST_CHECK(stream.str() == "[ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ]");
1563 value = Property::Value(Rectangle(1, 2, 3, 4));
1564 std::ostringstream stream;
1566 DALI_TEST_CHECK(stream.str() == "[1, 2, 3, 4]");
1570 value = Property::Value(AngleAxis(Dali::ANGLE_120, Vector3::XAXIS));
1571 std::ostringstream stream;
1573 tet_printf("angle axis = %s \n", stream.str().c_str());
1574 DALI_TEST_EQUALS(stream.str(), "[ Axis: [1, 0, 0], Angle: 120 degrees ]", TEST_LOCATION);
1578 value = Property::Value(std::string("Foo"));
1579 std::ostringstream stream;
1581 DALI_TEST_CHECK(stream.str() == "Foo");
1586 map.Insert("key", "value");
1587 map.Insert("duration", 10);
1588 map.Insert("color", Vector4(1.0, 0.5, 1.0, 1.0));
1590 value = Property::Value(map);
1591 std::ostringstream stream;
1593 tet_printf("Checking Property::Value is %s", stream.str().c_str());
1594 DALI_TEST_CHECK(!stream.str().compare("Map(3) = {key:value, duration:10, color:[1, 0.5, 1, 1]}"));
1597 Property::Array array;
1601 value = Property::Value(array);
1602 std::ostringstream stream;
1604 tet_printf("Checking Property::Value is %s", stream.str().c_str());
1605 DALI_TEST_CHECK(!stream.str().compare("Array(3) = [0, 2, 3]"));
1611 Property::Array array;
1613 map2.Insert("key", "value");
1614 map2.Insert("duration", 10);
1615 map.Insert("color", Vector4(1.0, 0.5, 1.0, 1.0));
1616 map.Insert("timePeriod", map2);
1617 array.PushBack(Vector2(1, 0));
1618 array.PushBack(Vector2(0, 1));
1619 array.PushBack(Vector2(1, 0));
1620 array.PushBack(Vector2(0, 0.5));
1621 map.Insert("texCoords", array);
1622 value = Property::Value(map);
1624 std::ostringstream stream;
1627 tet_printf("Checking Property::Value is %s", stream.str().c_str());
1629 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]]}"));
1633 value = Property::Value(Extents(1u, 2u, 3u, 4u));
1634 std::ostringstream stream;
1636 DALI_TEST_CHECK(stream.str() == "[1, 2, 3, 4]");