[vala/0.40] tests: Add "throw in loops" tests to increase coverage



commit 8996344f30977e19ccc380c498967c844e37a786
Author: Rico Tzschichholz <ricotz ubuntu com>
Date:   Thu Nov 28 10:05:30 2019 +0100

    tests: Add "throw in loops" tests to increase coverage

 tests/Makefile.am       |   1 +
 tests/errors/loops.vala | 119 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 120 insertions(+)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 5ae2c3d2f..b07118239 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -414,6 +414,7 @@ TESTS = \
        errors/errordomain-instance-method.test \
        errors/errordomain-static-method.vala \
        errors/invalid-type-check.test \
+       errors/loops.vala \
        errors/bug567181.vala \
        errors/bug579101.vala \
        errors/bug596228.vala \
diff --git a/tests/errors/loops.vala b/tests/errors/loops.vala
new file mode 100644
index 000000000..552865224
--- /dev/null
+++ b/tests/errors/loops.vala
@@ -0,0 +1,119 @@
+errordomain FooError {
+       FAIL
+}
+
+string[] get_array () throws Error {
+       throw new FooError.FAIL ("foo");
+}
+
+bool get_bool () throws Error {
+       throw new FooError.FAIL ("foo");
+}
+
+int get_int () throws Error {
+       throw new FooError.FAIL ("foo");
+}
+
+void error_in_for () {
+       try {
+               for (var i = get_int (); i < 2; i++) {
+                       assert_not_reached ();
+               }
+               assert_not_reached ();
+       } catch {
+       }
+
+       try {
+               for (var i = 0; get_bool (); i++) {
+                       assert_not_reached ();
+               }
+               assert_not_reached ();
+       } catch {
+       }
+
+       try {
+               bool reached = false;
+               for (var i = 0; i < 2; i += get_int ()) {
+                       if (reached) {
+                               assert_not_reached ();
+                       } else {
+                               reached = true;
+                       }
+               }
+               assert_not_reached ();
+       } catch {
+       }
+
+       try {
+               for (var i = 0; i < 2; i++) {
+                       throw new FooError.FAIL ("foo");
+                       assert_not_reached ();
+               }
+               assert_not_reached ();
+       } catch {
+       }
+}
+
+void error_in_foreach () {
+       try {
+               foreach (var s in get_array ()) {
+                       assert_not_reached ();
+               }
+               assert_not_reached ();
+       } catch {
+       }
+
+       try {
+               string[] array = { "bar" };
+               foreach (var s in array) {
+                       throw new FooError.FAIL ("foo");
+                       assert_not_reached ();
+               }
+               assert_not_reached ();
+       } catch {
+       }
+}
+
+void error_in_do () {
+       try {
+               do {
+               } while (get_bool ());
+               assert_not_reached ();
+       } catch {
+       }
+
+       try {
+               do {
+                       throw new FooError.FAIL ("foo");
+                       assert_not_reached ();
+               } while (true);
+               assert_not_reached ();
+       } catch {
+       }
+}
+
+void error_in_while () {
+       try {
+               while (get_bool ()) {
+                       assert_not_reached ();
+               }
+               assert_not_reached ();
+       } catch {
+       }
+
+       try {
+               while (true) {
+                       throw new FooError.FAIL ("foo");
+                       assert_not_reached ();
+               }
+               assert_not_reached ();
+       } catch {
+       }
+}
+
+void main () {
+       error_in_for ();
+       error_in_foreach ();
+       error_in_do ();
+       error_in_while ();
+}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]