1#!./perl -w 2 3BEGIN { 4 if ($ENV{PERL_CORE}) { 5 chdir 't' if -d 't'; 6 @INC = '../lib'; 7 } 8 if (!eval "require Socket") { 9 print "1..0 # no Socket\n"; exit 0; 10 } 11 if (ord('A') == 193 && !eval "require Convert::EBCDIC") { 12 print "1..0 # EBCDIC but no Convert::EBCDIC\n"; exit 0; 13 } 14} 15 16BEGIN { 17 package Foo; 18 19 use IO::File; 20 use Net::Cmd; 21 @ISA = qw(Net::Cmd IO::File); 22 23 sub timeout { 0 } 24 25 sub new { 26 my $fh = shift->new_tmpfile; 27 binmode($fh); 28 $fh; 29 } 30 31 sub output { 32 my $self = shift; 33 seek($self,0,0); 34 local $/ = undef; 35 scalar(<$self>); 36 } 37 38 sub response { 39 return Net::Cmd::CMD_OK; 40 } 41} 42 43(my $libnet_t = __FILE__) =~ s/datasend.t/libnet_t.pl/; 44require $libnet_t or die; 45 46print "1..51\n"; 47 48sub check { 49 my $expect = pop; 50 my $cmd = Foo->new; 51 ok($cmd->datasend, 'datasend') unless @_; 52 foreach my $line (@_) { 53 ok($cmd->datasend($line), 'datasend'); 54 } 55 ok($cmd->dataend, 'dataend'); 56 is( 57 unpack("H*",$cmd->output), 58 unpack("H*",$expect) 59 ); 60} 61 62my $cmd; 63 64check( 65 # nothing 66 67 ".\015\012" 68); 69 70check( 71 "a", 72 73 "a\015\012.\015\012", 74); 75 76check( 77 "a\r", 78 79 "a\015\015\012.\015\012", 80); 81 82check( 83 "a\rb", 84 85 "a\015b\015\012.\015\012", 86); 87 88check( 89 "a\rb\n", 90 91 "a\015b\015\012.\015\012", 92); 93 94check( 95 "a\rb\n\n", 96 97 "a\015b\015\012\015\012.\015\012", 98); 99 100check( 101 "a\r", 102 "\nb", 103 104 "a\015\012b\015\012.\015\012", 105); 106 107check( 108 "a\r", 109 "\nb\n", 110 111 "a\015\012b\015\012.\015\012", 112); 113 114check( 115 "a\r", 116 "\nb\r\n", 117 118 "a\015\012b\015\012.\015\012", 119); 120 121check( 122 "a\r", 123 "\nb\r\n\n", 124 125 "a\015\012b\015\012\015\012.\015\012", 126); 127 128check( 129 "a\n.b\n", 130 131 "a\015\012..b\015\012.\015\012", 132); 133 134check( 135 ".a\n.b\n", 136 137 "..a\015\012..b\015\012.\015\012", 138); 139 140check( 141 ".a\n", 142 ".b\n", 143 144 "..a\015\012..b\015\012.\015\012", 145); 146 147check( 148 ".a", 149 ".b\n", 150 151 "..a.b\015\012.\015\012", 152); 153 154check( 155 "a\n.", 156 157 "a\015\012..\015\012.\015\012", 158); 159 160