blob: 96b5b7c6197c13bdca5d9b802ae477bb783d111f [file] [log] [blame]
#!./perl -w
BEGIN {
if ($ENV{PERL_CORE}) {
chdir 't' if -d 't';
@INC = '../lib';
}
if (!eval "require Socket") {
print "1..0 # no Socket\n"; exit 0;
}
if (ord('A') == 193 && !eval "require Convert::EBCDIC") {
print "1..0 # EBCDIC but no Convert::EBCDIC\n"; exit 0;
}
}
BEGIN {
package Foo;
use IO::File;
use Net::Cmd;
@ISA = qw(Net::Cmd IO::File);
sub timeout { 0 }
sub new {
my $fh = shift->new_tmpfile;
binmode($fh);
$fh;
}
sub output {
my $self = shift;
seek($self,0,0);
local $/ = undef;
scalar(<$self>);
}
sub response {
return Net::Cmd::CMD_OK;
}
}
(my $libnet_t = __FILE__) =~ s/datasend.t/libnet_t.pl/;
require $libnet_t or die;
print "1..51\n";
sub check {
my $expect = pop;
my $cmd = Foo->new;
ok($cmd->datasend, 'datasend') unless @_;
foreach my $line (@_) {
ok($cmd->datasend($line), 'datasend');
}
ok($cmd->dataend, 'dataend');
is(
unpack("H*",$cmd->output),
unpack("H*",$expect)
);
}
my $cmd;
check(
# nothing
".\015\012"
);
check(
"a",
"a\015\012.\015\012",
);
check(
"a\r",
"a\015\015\012.\015\012",
);
check(
"a\rb",
"a\015b\015\012.\015\012",
);
check(
"a\rb\n",
"a\015b\015\012.\015\012",
);
check(
"a\rb\n\n",
"a\015b\015\012\015\012.\015\012",
);
check(
"a\r",
"\nb",
"a\015\012b\015\012.\015\012",
);
check(
"a\r",
"\nb\n",
"a\015\012b\015\012.\015\012",
);
check(
"a\r",
"\nb\r\n",
"a\015\012b\015\012.\015\012",
);
check(
"a\r",
"\nb\r\n\n",
"a\015\012b\015\012\015\012.\015\012",
);
check(
"a\n.b\n",
"a\015\012..b\015\012.\015\012",
);
check(
".a\n.b\n",
"..a\015\012..b\015\012.\015\012",
);
check(
".a\n",
".b\n",
"..a\015\012..b\015\012.\015\012",
);
check(
".a",
".b\n",
"..a.b\015\012.\015\012",
);
check(
"a\n.",
"a\015\012..\015\012.\015\012",
);