#!perl -T
use Test::More;
use Device::USB;
use strict;
use warnings;
use constant TESTS_PER_ENDPOINT => 7;
my $usb = Device::USB->new();
if(defined $usb)
{
my $endpoint_count = 0;
foreach my $dev ($usb->list_devices())
{
foreach my $config ($dev->configurations())
{
my @interfaces = map {@{$_}} $config->interfaces();
$endpoint_count += $_->bNumEndpoints() foreach @interfaces;
}
}
if($endpoint_count)
{
plan tests => 2 + TESTS_PER_ENDPOINT * $endpoint_count;
}
else
{
plan skip_all => 'No devices found.';
}
}
else
{
fail( "Unable to create USB object." );
}
my @devices = $usb->list_devices();
isnt( scalar @devices, 0, "USB devices found" );
can_ok( "Device::USB::DevEndpoint",
qw/bEndpointAddress bmAttributes wMaxPacketSize bInterval
bRefresh bSynchAddress/
);
foreach my $dev (@devices)
{
my $filename = $dev->filename();
my $cfgno = 0;
foreach my $cfg ($dev->configurations())
{
foreach my $if (map { @{$_} } $cfg->interfaces())
{
my $ifno = $if->bInterfaceNumber();
foreach my $ep ($if->endpoints())
{
my $descr = "$filename:$cfgno:$ifno:".$ep->bEndpointAddress();
isa_ok( $ep, "Device::USB::DevEndpoint" );
like( $ep->bEndpointAddress(), qr/^\d+$/, "$descr: Endpoint Address" );
like( $ep->bmAttributes(), qr/^\d+$/, "$descr: Attributes" );
like( $ep->wMaxPacketSize(), qr/^\d+$/, "$descr: Max Packet Size" );
like( $ep->bInterval(), qr/^\d+$/, "$descr: Interval" );
like( $ep->bRefresh(), qr/^\d+$/, "$descr: Refresh" );
like( $ep->bSynchAddress(), qr/^\d+$/, "$descr: Synch Address" );
}
}
++$cfgno;
}
}