[Core] Add iteration support to Array

This commit is contained in:
A Thousand Ships
2023-12-24 13:44:21 +01:00
parent 1f0f81049f
commit 64146cb7f3
15 changed files with 251 additions and 73 deletions

View File

@ -545,6 +545,54 @@ TEST_CASE("[Array] Recursive self comparison") {
a2.clear();
}
TEST_CASE("[Array] Iteration") {
Array a1 = build_array(1, 2, 3);
Array a2 = build_array(1, 2, 3);
int idx = 0;
for (Variant &E : a1) {
CHECK_EQ(int(a2[idx]), int(E));
idx++;
}
idx = 0;
for (const Variant &E : (const Array &)a1) {
CHECK_EQ(int(a2[idx]), int(E));
idx++;
}
a1.clear();
}
TEST_CASE("[Array] Iteration and modification") {
Array a1 = build_array(1, 2, 3);
Array a2 = build_array(2, 3, 4);
Array a3 = build_array(1, 2, 3);
Array a4 = build_array(1, 2, 3);
a3.make_read_only();
int idx = 0;
for (Variant &E : a1) {
E = a2[idx];
idx++;
}
CHECK_EQ(a1, a2);
// Ensure read-only is respected.
idx = 0;
for (Variant &E : a3) {
E = a2[idx];
}
CHECK_EQ(a3, a4);
a1.clear();
a2.clear();
a4.clear();
}
} // namespace TestArray
#endif // TEST_ARRAY_H