ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/t/handle/02_write.t
Revision: 1.7
Committed: Fri Jul 4 12:19:00 2008 UTC (16 years ago) by elmex
Content type: application/x-troff
Branch: MAIN
Changes since 1.6: +7 -5 lines
Log Message:
fixed a broken test

File Contents

# Content
1 #!perl
2
3 use strict;
4
5 use AnyEvent::Impl::Perl;
6 use AnyEvent::Handle;
7 use Socket;
8
9 print "1..7\n";
10
11 my $cv = AnyEvent->condvar;
12
13 socketpair my $rd, my $wr, AF_UNIX, SOCK_STREAM, PF_UNSPEC;
14
15 my $rd_ae =
16 AnyEvent::Handle->new (
17 fh => $rd,
18 on_eof => sub {
19 warn "reader got EOF";
20 $cv->broadcast
21 }
22 );
23
24 my $wr_ae =
25 AnyEvent::Handle->new (
26 fh => $wr,
27 on_eof => sub {
28 warn "writer got EOF\n";
29 $cv->broadcast
30 }
31 );
32
33 my $dat = '';
34
35 $rd_ae->push_read (chunk => 5132, sub {
36 my ($rd_ae, $data) = @_;
37 $dat = substr $data, 0, 2;
38 $dat .= substr $data, -5;
39
40 print "ok 4 - first read chunk\n";
41 my $n = 5;
42 $wr_ae->push_write ("A" x 5000);
43 $wr_ae->on_drain (sub {
44 my ($wr_ae) = @_;
45 $wr_ae->on_drain;
46 print "ok " . $n++ . " - fourth write\n";
47
48 });
49
50 $rd_ae->push_read (chunk => 1, sub {
51 print "ok " . $n++ . " - second read chunk\n";
52 $cv->broadcast
53 });
54 });
55
56 $wr_ae->push_write ("A" x 5000);
57 $wr_ae->push_write ("X" x 130);
58
59 # and now some extreme CPS action:
60 $wr_ae->on_drain (sub {
61 my ($wr_ae) = @_;
62 $wr_ae->on_drain;
63 print "ok 1 - first write\n";
64
65 $wr_ae->push_write ("Y");
66 $wr_ae->on_drain (sub {
67 my ($wr_ae) = @_;
68 $wr_ae->on_drain;
69 print "ok 2 - second write\n";
70
71 $wr_ae->push_write ("Z");
72 $wr_ae->on_drain (sub {
73 my ($wr_ae) = @_;
74 $wr_ae->on_drain;
75 print "ok 3 - third write\n";
76 });
77 });
78 });
79
80 $cv->wait;
81
82 if ($dat eq "AAXXXYZ") {
83 print "ok 7 - received data\n";
84 } else {
85 warn "dat was '$dat'\n";
86 print "not ok 7 - received data\n";
87 }