[doc] lib/VCS/Git/Torrent/Peer/Async/State.pm
[VCS-Git-Torrent.git] / t / 10-pwp-messages.t
blob07b1b6326c59d056107e3544401167aabe26577b
1 #!/usr/bin/perl -w
3 use strict;
4 use lib "t";
5 use MockStream;
6 use HexString;
7 use Test::Depends qw(VCS::Git::Torrent::PWP::Message);
9 use Test::More qw(no_plan);
11 use_ok("VCS::Git::Torrent::PWP" => "-pwp_constants");
13 ok(defined &GTP_PWP_CHOKE, "imported constants");
14 is(&GTP_PWP_CHOKE, 0, "imported GTP_PWP_CHOKE");
15 is(&GTP_PWP_UNCHOKE, 1, "imported GTP_PWP_UNCHOKE");
16 is(&GTP_PWP_PLAY, 10, "imported GTP_PWP_PLAY");
18 my $choke = VCS::Git::Torrent::PWP::Message::Choke->new;
19 ok($choke, "make a Choke object");
21 my $wire = $choke->pack;
22 is(hex_string($wire), "0000000400000000",
23 "pack - choke encoded OK");
25 is(length($wire), 8, "pack - choke right size");
27 VCS::Git::Torrent::PWP->import("pwp_message", "pwp_decode");
29 $choke = &pwp_message(&GTP_PWP_CHOKE);
30 ok($choke, "Made a CHOKE message with pwp_message()");
31 isa_ok($choke, "VCS::Git::Torrent::PWP::Message::Choke",
32 "CHOKE message");
33 eval { &pwp_message(&GTP_PWP_CHOKE, 1) };
34 like($@, qr/no arguments/, "CHOKE has no arguments");
36 my $stream = stream($wire."leftovers");
37 $choke = &pwp_decode($stream);
38 is(<$stream>, "leftovers", "ate correct number of bytes");
39 ok($choke, "Made a CHOKE message with pwp_decode()");
40 isa_ok($choke, "VCS::Git::Torrent::PWP::Message::Choke",
41 "decoded CHOKE message");