#!perl -T use Test::More; use Device::USB; use strict; use warnings; use constant TESTS_PER_CONFIGURATION => 7; my $usb = Device::USB->new(); if(defined $usb) { my $config_count = 0; foreach my $dev ($usb->list_devices()) { $config_count += $dev->bNumConfigurations(); } if($config_count) { plan tests => 2 + TESTS_PER_CONFIGURATION * $config_count; } else { plan skip_all => 'No devices found.'; } } else { fail( "Unable to create USB object." ); } can_ok( "Device::USB::DevConfig", qw/wTotalLength bNumInterfaces interfaces bConfigurationValue iConfiguration bmAttributes MaxPower/ ); my @devices = $usb->list_devices(); isnt( scalar @devices, 0, "USB devices found" ); foreach my $dev (@devices) { my $filename = $dev->filename(); my $cfgno = 0; foreach my $cfg ($dev->configurations()) { isa_ok( $cfg, "Device::USB::DevConfig" ); like( $cfg->wTotalLength(), qr/^\d+$/, "$filename:$cfgno: USB Version" ); is( $cfg->bNumInterfaces(), scalar @{$cfg->interfaces()}, "$filename:$cfgno: interface count" ); like( $cfg->bConfigurationValue(), qr/^\d+$/, "$filename:$cfgno: configuration value" ); like( $cfg->iConfiguration(), qr/^\d+$/, "$filename:$cfgno: configuration" ); like( $cfg->bmAttributes(), qr/^\d+$/, "$filename:$cfgno: Attributes" ); like( $cfg->MaxPower(), qr/^\d+$/, "$filename:$cfgno: max power" ); ++$cfgno; } }