diff options
Diffstat (limited to 'tests/objects/signals-lambda-delegate-2.vala')
-rw-r--r-- | tests/objects/signals-lambda-delegate-2.vala | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/tests/objects/signals-lambda-delegate-2.vala b/tests/objects/signals-lambda-delegate-2.vala new file mode 100644 index 000000000..8be4aaed0 --- /dev/null +++ b/tests/objects/signals-lambda-delegate-2.vala @@ -0,0 +1,94 @@ +delegate string FooFunc (Foo foo, string s); + +class Foo : Object { + public signal string test (string s); +} + +class Bar : Object { + construct { + var foo = new Foo (); + FooFunc func = (f,s) => { + assert (s == "foo"); + return s; + }; + foo.test.connect (func); + assert (foo.test ("foo") == "foo"); + foo.test.disconnect (func); + foo.test ("bar"); + } + + public void run () { + var foo = new Foo (); + FooFunc func = (f,s) => { + assert (s == "foo"); + return s; + }; + foo.test.connect (func); + assert (foo.test ("foo") == "foo"); + foo.test.disconnect (func); + foo.test ("bar"); + } +} + +delegate string FazFunc (Faz faz, string s); + +class Faz { + public signal string test (string s); +} + +class Boo { + public Boo () { + var faz = new Faz (); + FazFunc func = (f,s) => { + assert (s == "faz"); + return s; + }; + faz.test.connect (func); + assert (faz.test ("faz") == "faz"); + faz.test.disconnect (func); + faz.test ("boo"); + } + + public void run () { + var faz = new Faz (); + FazFunc func = (f,s) => { + assert (s == "faz"); + return s; + }; + faz.test.connect (func); + assert (faz.test ("faz") == "faz"); + faz.test.disconnect (func); + faz.test ("boo"); + } +} + +void main () { + { + var bar = new Bar (); + bar.run (); + + var foo = new Foo (); + FooFunc func = (f,s) => { + assert (s == "foo"); + return s; + }; + foo.test.connect (func); + assert (foo.test ("foo") == "foo"); + foo.test.disconnect (func); + foo.test ("bar"); + } + { + var boo = new Boo (); + boo.run (); + + var faz = new Faz (); + FazFunc func = (f,s) => { + assert (s == "faz"); + return s; + }; + faz.test.connect (func); + assert (faz.test ("faz") == "faz"); + faz.test.disconnect (func); + faz.test ("boo"); + } +} |