added checking of result when building demos
[urisagit/Stem.git] / t / socket / plain.t
CommitLineData
4536f655 1# t/socket/plain.t
2
3use strict ;
4
5use Stem ;
6use Stem::Socket ;
7
8use Test::More tests => 9 ;
9
10my $data = "FOO\n" ;
11
12test_socket() ;
13
14exit 0 ;
15
16sub test_socket {
17
18 my( $self, $accept_event, $connect_event ) ;
19
20 $self = bless {} ;
21
22 $accept_event = Stem::Socket->new(
23 'object' => $self,
24 'port' => 10_000,
25 'server' => 1,
26 'method' => 'accepted',
27 ) ;
28
29 die $accept_event unless ref $accept_event ;
30 $self->{'accept_event'} = $accept_event ;
31 ok( 1, 'listen' ) ;
32
33 $connect_event = Stem::Socket->new(
34 'object' => $self,
35 'port' => 10_000,
36 ) ;
37
38 die $connect_event unless ref $connect_event ;
39 $self->{'connect_event'} = $connect_event ;
40 ok( 1, 'connect' ) ;
41
42 Stem::Event::start_loop() ;
43
44 ok( 1, 'event loop exit' ) ;
45}
46
47sub accepted {
48
49 my( $self, $accepted_sock ) = @_ ;
50
51 ok( 1, 'accepted' ) ;
52
53 $self->{'accepted_sock'} = $accepted_sock ;
54
55 $self->{'accept_event'}->shut_down() ;
56
57 ok( 1, 'accept canceled' ) ;
58
59 my $read_event = Stem::Event::Read->new(
60 'object' => $self,
61 'fh' => $accepted_sock,
62 ) ;
63
64 $self->{'read_event'} = $read_event ;
65}
66
67sub readable {
68
69 my( $self ) = @_ ;
70
71 ok(1, 'read event triggered' ) ;
72
73 my $bytes_read = sysread( $self->{'accepted_sock'},
74 my $read_buf, 1000 ) ;
75
76 ok( $bytes_read, 'read byte count' ) ;
77
78 is( $read_buf, $data, 'read event compare' ) ;
79
80 close( $self->{'accepted_sock'} ) ;
81
82 $self->{'read_event'}->cancel() ;
83}
84
85sub connected {
86
87 my( $self, $connected_sock ) = @_ ;
88
89 ok( 1, 'connected' ) ;
90
91 my $wcnt = $connected_sock->syswrite( $data ) ;
92#print "SYSWR C $wcnt\n" ;
93
94 $self->{'connect_event'}->shut_down() ;
95}