]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
tests: Add "GenericArray foreach" tests to increase coverage wip/foreach
authorCorentin Noël <corentin@elementary.io>
Mon, 9 Nov 2020 14:17:37 +0000 (15:17 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Tue, 10 Nov 2020 17:14:55 +0000 (18:14 +0100)
tests/basic-types/gptrarray.vala
tests/control-flow/foreach.vala

index 6d8aa2d1a3ede10b4393d96c39f98051c2c6d44d..1b5d6c6223e1c275eca94b0cdbb41ceb1b643f93 100644 (file)
@@ -26,6 +26,30 @@ void main () {
                assert (foo3.ref_count == 2);
                assert (array.length == 3);
 
+               int loop_size = 0;
+               foreach (weak Foo element in array) {
+                       loop_size++;
+                       assert (element.ref_count == 2);
+                       switch (loop_size) {
+                               case 1: assert (element == foo1); break;
+                               case 2: assert (element == foo2); break;
+                               case 3: assert (element == foo3); break;
+                       }
+               }
+               assert (loop_size == 3);
+
+               loop_size = 0;
+               foreach (Foo element in array) {
+                       loop_size++;
+                       assert (element.ref_count == 3);
+                       switch (loop_size) {
+                               case 1: assert (element == foo1); break;
+                               case 2: assert (element == foo2); break;
+                               case 3: assert (element == foo3); break;
+                       }
+               }
+               assert (loop_size == 3);
+
                assert (foo2 == array.get (1));
                array.set (1, foo4);
                assert (foo4 == array.get (1));
@@ -73,6 +97,30 @@ void main () {
                assert (foo3.ref_count == 1);
                assert (array.length == 3);
 
+               int loop_size = 0;
+               foreach (weak Foo element in array) {
+                       loop_size++;
+                       assert (element.ref_count == 1);
+                       switch (loop_size) {
+                               case 1: assert (element == foo1); break;
+                               case 2: assert (element == foo2); break;
+                               case 3: assert (element == foo3); break;
+                       }
+               }
+               assert (loop_size == 3);
+
+               loop_size = 0;
+               foreach (Foo element in array) {
+                       loop_size++;
+                       assert (element.ref_count == 2);
+                       switch (loop_size) {
+                               case 1: assert (element == foo1); break;
+                               case 2: assert (element == foo2); break;
+                               case 3: assert (element == foo3); break;
+                       }
+               }
+               assert (loop_size == 3);
+
                assert (foo2 == array.get (1));
                array.set (1, foo4);
                assert (foo4 == array.get (1));
index 6a36453fd9feb720b3004fdc317a9a71c26460db..052e03d3c9aa6734689b9b0535089b0785787ef8 100644 (file)
@@ -33,6 +33,41 @@ void test_foreach_gvaluearray () {
        test_unowned (array);
 }
 
+void test_generic_array_owned (GenericArray<Value?> array) {
+       uint i = 0;
+
+       foreach (Value? item in array) {
+               i++;
+       }
+
+       assert (i == 3);
+}
+
+void test_generic_array_unowned (GenericArray<Value?> array) {
+       uint i = 0;
+
+       foreach (unowned Value? item in array) {
+               i++;
+       }
+
+       assert (i == 3);
+}
+
+void test_foreach_genericarray () {
+       Value value;
+       var array = new GenericArray<Value?> ();
+
+       value = 1;
+       array.add (value);
+       value = 2.0;
+       array.add (value);
+       value = "three";
+       array.add (value);
+
+       test_generic_array_owned (array);
+       test_generic_array_unowned (array);
+}
+
 void test_foreach_multidim_array () {
        int[,] foo = { { 1, 2 }, { 3, 4 }, { 5, 6 } };
        string result = "";
@@ -70,6 +105,7 @@ void test_foreach_slice_array () {
 
 void main () {
        test_foreach_gvaluearray ();
+       test_foreach_genericarray ();
        test_foreach_const_array ();
        test_foreach_multidim_array ();
        test_foreach_slice_array ();