#!/usr/bin/perl use strict; use warnings; use Cisco::Abbrev; use Test::More; my @tests = map { chomp; [ split /\s+/ ] } grep /\S/, ; my @lame = (undef, 'whatever', '1/42', ''); ## can't be done in both directions.. just short --> long my %ambiguous = ( 'PortCh5' => 'Port-channel5', 'Eth0/5' => 'Ethernet0/5', ); plan tests => keys(%ambiguous) + 2*@tests + 2*@lame; for my $test (@tests) { my ($long, $short) = @$test; is(cisco_abbrev_int($long), $short, "abbrev($long) = $short"); is(cisco_long_int($short), $long, "long_int($short) = $long"); } ## funky case of ambiguous abbrevs (depends on software version) while (my ($short, $long) = each %ambiguous) { is(cisco_long_int($short), $long, "long($short) = '$long'"); } ## handle undef inputs for my $lame (@lame) { no warnings 'uninitialized'; is(cisco_long_int($lame), undef, "long($lame) = undef"); is(cisco_long_int($lame), undef, "abbrev($lame) = undef"); } __DATA__ FastEthernet0/1 Fa0/1 GigabitEthernet0/1 Gi0/1 TenGigabitEthernet0/1 Te0/1 Ethernet5 Et5 Vlan99 Vl99 Port-channel10 Po10 Tunnel504 Tu504 POS2/3/8 PO2/3/8 Serial4/44 Se4/44 Serial1/2/3:4/0.2 Se1/2/3:4/0.2 Multilink89 Mu89 Loopback0 Lo0 ATM4/3.1 AT4/3.1 Virtual-Access1.2438 Vi1.2438 Virtual-Template25 Vt25 Pos-channel5 PosCh5 Fddi8/2 FD8/2 EOBC0/0 EO0/0 MFR8 MFR8 Async5 Async5 Group-Async5 Group-Async5 FastEthernet1/0 Fa1/0 FastEthernet1/0.99 Fa1/0.99 GigabitEthernet0/2 Gi0/2 GigabitEthernet0/2.99 Gi0/2.99 Ethernet0/2 Et0/2 Ethernet0/2.99 Et0/2.99 TenGigabitEthernet1/1 Te1/1 TenGigabitEthernet1/1.99 Te1/1.99 POS2/0/0 PO2/0/0 Serial4/1/0 Se4/1/0 Serial4/1/0.500 Se4/1/0.500 ATM1/0/0 AT1/0/0 ATM1/0/0.45 AT1/0/0.45 Virtual-Access2589 Vi2589 Virtual-Access2.2589 Vi2.2589