diff options
Diffstat (limited to 'xmpp-vala/tests/testcase.vala')
-rw-r--r-- | xmpp-vala/tests/testcase.vala | 168 |
1 files changed, 85 insertions, 83 deletions
diff --git a/xmpp-vala/tests/testcase.vala b/xmpp-vala/tests/testcase.vala index 5be56128..9bdf5f6b 100644 --- a/xmpp-vala/tests/testcase.vala +++ b/xmpp-vala/tests/testcase.vala @@ -23,18 +23,14 @@ public abstract class Gee.TestCase : Object { private GLib.TestSuite suite; - private Adaptor[] adaptors = new Adaptor[0]; - - public delegate void TestMethod (); - public delegate void FinishCallback (); - public delegate void AsyncTestMethod (FinishCallback cb); + private TestAdaptor[] adaptors = new TestAdaptor[0]; protected TestCase (string name) { this.suite = new GLib.TestSuite (name); } public void add_test (string name, owned TestMethod test) { - var adaptor = new DefaultAdaptor (name, (owned)test, this); + var adaptor = new TestDefaultAdaptor (name, (owned)test, this); this.adaptors += adaptor; this.suite.add (new GLib.TestCase (adaptor.name, @@ -44,7 +40,7 @@ public abstract class Gee.TestCase : Object { } public void add_async_test (string name, owned AsyncTestMethod test, int timeout = 10000) { - var adaptor = new AsyncAdaptor (name, (owned)test, this, timeout); + var adaptor = new TestAsyncAdaptor (name, (owned)test, this, timeout); this.adaptors += adaptor; this.suite.add (new GLib.TestCase (adaptor.name, @@ -62,82 +58,88 @@ public abstract class Gee.TestCase : Object { public GLib.TestSuite get_suite () { return this.suite; } +} + +namespace Gee { + public delegate void TestMethod (); + public delegate void TestFinishedCallback (); + public delegate void AsyncTestMethod (TestFinishedCallback cb); +} + +private interface Gee.TestAdaptor : Object { + public abstract void set_up (void* fixture); + public abstract void run (void* fixture); + public abstract void tear_down (void* fixture); +} + +private class Gee.TestDefaultAdaptor : Object, TestAdaptor { + [CCode (notify = false)] + public string name { get; private set; } + private TestMethod test; + private TestCase test_case; + + public TestDefaultAdaptor (string name, + owned TestMethod test, + TestCase test_case) { + this.name = name; + this.test = (owned)test; + this.test_case = test_case; + } + + public void set_up (void* fixture) { + this.test_case.set_up (); + } + + public void run (void* fixture) { + this.test (); + } + + public void tear_down (void* fixture) { + this.test_case.tear_down (); + } +} + +private class Gee.TestAsyncAdaptor : Object, TestAdaptor { + [CCode (notify = false)] + public string name { get; private set; } + private AsyncTestMethod test; + private TestCase test_case; + private MainLoop main_loop; + private int timeout; + + public TestAsyncAdaptor (string name, + owned AsyncTestMethod test, + TestCase test_case, + int timeout) { + this.name = name; + this.test = (owned)test; + this.test_case = test_case; + this.timeout = timeout; + } + + public void set_up (void* fixture) { + this.test_case.set_up (); + main_loop = new MainLoop (); + } + + public void run (void* fixture) { + this.test (finish); + Timeout.add (timeout, finish_timeout); + main_loop.run (); + } + + public void finish () { + Idle.add (() => { main_loop.quit (); return false; }); + } + + public bool finish_timeout () { + Test.fail (); + Test.message (@"Timeout of $(timeout)ms reached."); + main_loop.quit (); + return false; + } - private interface Adaptor : Object { - public abstract void set_up (void* fixture); - public abstract void run (void* fixture); - public abstract void tear_down (void* fixture); - } - - private class DefaultAdaptor : Object, Adaptor { - [CCode (notify = false)] - public string name { get; private set; } - private TestMethod test; - private TestCase test_case; - - public DefaultAdaptor (string name, - owned TestMethod test, - TestCase test_case) { - this.name = name; - this.test = (owned)test; - this.test_case = test_case; - } - - public void set_up (void* fixture) { - this.test_case.set_up (); - } - - public void run (void* fixture) { - this.test (); - } - - public void tear_down (void* fixture) { - this.test_case.tear_down (); - } - } - - private class AsyncAdaptor : Object, Adaptor { - [CCode (notify = false)] - public string name { get; private set; } - private AsyncTestMethod test; - private TestCase test_case; - private MainLoop main_loop; - private int timeout; - - public AsyncAdaptor (string name, - owned AsyncTestMethod test, - TestCase test_case, - int timeout) { - this.name = name; - this.test = (owned)test; - this.test_case = test_case; - this.timeout = timeout; - } - - public void set_up (void* fixture) { - this.test_case.set_up (); - main_loop = new MainLoop (); - } - - public void run (void* fixture) { - this.test (finish); - Timeout.add (timeout, finish_timeout); - main_loop.run (); - } - - public void finish () { - Idle.add (() => { main_loop.quit (); return false; }); - } - - public bool finish_timeout () { - Test.fail (); - Test.message (@"Timeout of $(timeout)ms reached."); - main_loop.quit (); - return false; - } - - public void tear_down (void* fixture) { - this.test_case.tear_down (); - } + public void tear_down (void* fixture) { + this.test_case.tear_down (); } } |