Merge pull request #86015 from kitbdev/array-initializer-list

Add list initialization to Array, Variant, and TypedArray
This commit is contained in:
Thaddeus Crews
2025-03-19 17:46:06 -05:00
7 changed files with 55 additions and 0 deletions

View File

@@ -55,6 +55,26 @@ static inline Dictionary build_dictionary(Variant key, Variant item, Targs... Fa
return d;
}
TEST_CASE("[Array] initializer list") {
Array arr = { 0, 1, "test", true, { 0.0, 1.0 } };
CHECK(arr.size() == 5);
CHECK(arr[0] == Variant(0));
CHECK(arr[1] == Variant(1));
CHECK(arr[2] == Variant("test"));
CHECK(arr[3] == Variant(true));
CHECK(arr[4] == Variant({ 0.0, 1.0 }));
arr = { "reassign" };
CHECK(arr.size() == 1);
CHECK(arr[0] == Variant("reassign"));
TypedArray<int> typed_arr = { 0, 1, 2 };
CHECK(typed_arr.size() == 3);
CHECK(typed_arr[0] == Variant(0));
CHECK(typed_arr[1] == Variant(1));
CHECK(typed_arr[2] == Variant(2));
}
TEST_CASE("[Array] size(), clear(), and is_empty()") {
Array arr;
CHECK(arr.size() == 0);

View File

@@ -1736,6 +1736,24 @@ TEST_CASE("[Variant] Assignment To Color from Bool,Int,Float,String,Vec2,Vec2i,V
CHECK(object_v.get_type() == Variant::COLOR);
}
TEST_CASE("[Variant] array initializer list") {
Variant arr_v = { 0, 1, "test", true, { 0.0, 1.0 } };
CHECK(arr_v.get_type() == Variant::ARRAY);
Array arr = (Array)arr_v;
CHECK(arr.size() == 5);
CHECK(arr[0] == Variant(0));
CHECK(arr[1] == Variant(1));
CHECK(arr[2] == Variant("test"));
CHECK(arr[3] == Variant(true));
CHECK(arr[4] == Variant({ 0.0, 1.0 }));
PackedInt32Array packed_arr = { 2, 1, 0 };
CHECK(packed_arr.size() == 3);
CHECK(packed_arr[0] == 2);
CHECK(packed_arr[1] == 1);
CHECK(packed_arr[2] == 0);
}
TEST_CASE("[Variant] Writer and parser array") {
Array a = build_array(1, String("hello"), build_array(Variant()));
String a_str;