#!/usr/bin/perl use strict; use warnings; use Test::More; use AnyEvent; use_ok 'Tanja'; # Simple matching tests. # (Doesn't test a whole lot, since the semantics aren't final yet anyway). ok Tanja::match([], []); ok Tanja::match([], [1, 2, 3]); ok Tanja::match([], [undef]); ok !Tanja::match([undef], []); ok Tanja::match([undef], [1]); ok Tanja::match([1], [1]); ok Tanja::match([1], [1, "b"]); ok Tanja::match([1], [undef, 3]); ok !Tanja::match([2], [1]); # Simple single-session test { my $serv = Tanja::Server->new; isa_ok $serv, 'Tanja::Server'; my $ses = $serv->session; isa_ok $ses, 'Tanja::Session'; my $done = AnyEvent->condvar; my $n = 0; my $n2 = 0; $ses->reg([], 0, sub { my($t, $r) = @_; is $r, undef; is_deeply $t, [$n]; ok $n <= 5; if(++$n == 5) { $ses->close; $done->send; } }); $ses->reg_once([undef], 0, sub { my($t, $r) = @_; is $r, undef; is_deeply $t, [0]; $n2++; }); $ses->send([$_]) for (0..10); is $n, 0; # Make sure that ->send() doesn't run the callbacks. The event system should. is $n2, 0; $done->recv; is $n, 5; is $n2, 1; } # Simple double-session test { my $serv = Tanja::Server->new; my $a = $serv->session; my $b = $serv->session; my $done = AnyEvent->condvar; $a->reg(["msg"], 0, sub { my($t, $r) = @_; is $r, undef; is_deeply $t, ["msg", 'a']; $a->send(["b"]); }); $b->reg(["b"], 0, sub { my($t, $r) = @_; is $r, undef; is_deeply $t, ["b"]; $done->send; }); $b->send(["msg", 'a']); $done->recv; } done_testing(); # vim:noet:sw=4:ts=4