1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
#!/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;
$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];
});
$ses->send([$_]) for (0..10);
$done->recv;
is $n, 5;
}
# 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
|