The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use Test::More tests => 13;
use Data::Dumper;

use_ok("Tie::RegexpHash", 0.14); 
# Rudimentary test suite of the examples given in the
# synopsis. Someday it will be oncorporated with POD::Tests.  Someday
# I'll write a real test suite. Someday....

SKIP: {
    eval { require Storable };

    skip "Storable not installed", 13 if $@;

    my (%hash);

    tie %hash, 'Tie::RegexpHash';
    ok(1);

    $hash{ qr/^5(\s+|-)?gal(\.|lons?)?/i } = '5-GAL';
    ok(1);

    my $serialized = Storable::freeze(\%hash);
    ok(1, 'freeze');

    %hash = %{ Storable::thaw($serialized) };
    ok(1, 'thaw');

    ok($hash{'5 gal'} eq "5-GAL");
    ok($hash{'5GAL'}  eq "5-GAL");
    ok($hash{'5  gallon'} eq "5-GAL");

    # In case clone semantics change in a future revision... 
    $href = Storable::dclone( \%hash );
    ok(1, 'dclone');

    ok($href->{'5 gal'} eq "5-GAL");
    ok($href->{'5GAL'} eq "5-GAL");
    ok($href->{'5 gallon'} eq "5-GAL");

    $hash{ qr/^pattern$/i } = 'val1';
    $hash{ qr/(?i:^pattern$)/ } = 'val2';
    ok($hash{pAttErn} eq 'val2');
}