use strict;
use Test;
use IO::Socket;
eval('use Net::LMTP');

if($@)
{
    plan tests => 1;
    skip("You don't seem to have Net::LMTP installed on your system", 1);
    exit
}

plan tests => 11;

use Net::Server::Mail::LMTP;
ok(1);

my $server_port = 2525;
my $server;

while(not defined $server && $server_port < 4000)
{
    $server = new IO::Socket::INET
    (
        Listen      => 1,
        LocalPort   => ++$server_port,
    );
}

my $pid = fork;
if(!$pid)
{
    while(my $conn = $server->accept)
    {
        my $m = new Net::Server::Mail::LMTP socket => $conn, idle_timeout => 5
            or die "can't start server on port 2525";
        $m->set_callback('DATA', sub {return $_[1] !~ /bad/});
        $m->process;
    }
}

my $lmtp = new Net::LMTP 'localhost', $server_port, Debug => 0;
ok(defined $lmtp);

ok($lmtp->mail("test\@bla.com"));
ok(!$lmtp->mail("test\@bla.com"));
ok($lmtp->to('bad'));
ok($lmtp->to('postmaster'));
ok($lmtp->data);
ok($lmtp->datasend('To: postmaster'));
ok(!$lmtp->dataend);
ok($lmtp->response);
ok($lmtp->quit);

kill 1, $pid;
wait;
