The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

# I think that Jesse's Number::RecordLocator is his own answer to the question
# that originally created this module.  Here, you can see how Number::Nary can
# easily be configured to do what Number::RecordLocator does. -- rjbs,
# 2007-01-03

use Test::More tests => 9;

BEGIN {
  use_ok('Number::Nary', -codec_pair => {
    digits    => [  2 .. 9, 'A', 'C' .. 'R', 'T' .. 'Z' ],
    predecode => sub { my $s = $_[0]; $s =~ tr/01SBsb/OIFPFP/; return $s },
  });
}

is(
  encode('1'),
  '3',
  "We skip one and zero so should end up with 3 when encoding 1"
);

is(encode('12354'),  'F44');
is(encode('123456'), '5RL2');
is(decode('5RL2'),   '123456');

is(decode(encode('123456')), '123456');

is(decode('1234'), decode('I234'));
is(decode('10SB'), decode('IOFP'));

is(eval { encode('A') }, undef);