The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -T
use strict;
use Test::More;
use Net::Pcap;
use lib 't';
use Utils;

plan skip_all => "no network device available" unless find_network_device();
plan tests => 10;

my($dev,$net,$mask,$pcap,$filter,$res,$err) = ('','',0,'','','','');

# Find a device and open it
$dev = find_network_device();
$res = Net::Pcap::lookupnet($dev, \$net, \$mask, \$err);
$pcap = Net::Pcap::open_dead(DLT_EN10MB, 1024);


# Testing compile() with an invalid filter
eval { $res = Net::Pcap::compile($pcap, \$filter, "this is not a filter", 0, $mask) };
is(   $@,   '', "compile() with an invalid filter string" );
is(   $res, -1, " - result must not be null: $res" );
eval { $err = Net::Pcap::geterr($pcap) };
is(   $@,   '', "geterr()" );
like( $err, '/^(?:parse|syntax) error$/', " - \$err must not be null: $err" );

# Testing compile() with a valid filter
eval { $res = Net::Pcap::compile($pcap, \$filter, "tcp", 0, $mask) };
is(   $@,   '', "compile() with a valid filter string" );
is(   $res,  0, " - result must be null: $res" );
eval { $err = Net::Pcap::geterr($pcap) };
is(   $@,   '', "geterr()" );
is(   $err, '', " - \$err must be null" );

# Testing strerror()
eval { $err = Net::Pcap::strerror(1) };
is(   $@,   '', "strerror()" );
isnt( $err, '', " - \$err must not be null" );