BEGIN { # Magic Perl CORE pragma if ($ENV{PERL_CORE}) { chdir 't' if -d 't'; @INC = '../lib'; } } use Test::More tests => ( 4 * 4 ) + ( 4 * 4 ); use strict; use warnings; # modules that we need use String::Lookup; # initializations my $foo= 'foo'; my $bar= 'bar'; # all permutations for offset / increment check foreach ( [ 0, 10, 10, 20, "just increment" ], [ 1, 5, 6, 11, "simple offset + increment" ], [ 100, 0, 101, 102, "high offset, no increment" ], [ 314, 1, 315, 316, "high offset, simple increment" ], ) { my ( $offset, $increment, $id_foo, $id_bar, $text )= @{$_}; # set up the hash tie my %hash, 'String::Lookup', offset => $offset, increment => $increment, ; # check lookups is( $hash{ \$foo }, $id_foo, "simple string lookup: $text" ); is( $hash{$id_foo}, $foo, "simple id lookup: $text" ); is( $hash{ \$bar }, $id_bar, "another simple string lookup: $text" ); is( $hash{$id_bar}, $bar, "another simple id lookup: $text" ); } # all permutations for init / offset check foreach ( [ 5, 1, 10, 11, "simple offset override by fill" ], [ 15, 1, 10, 16, "fill doesn't override offset" ], [ 2, 5, 10, 17, "fill contains values matching offset / increment" ], [ 3, 5, 10, 18, "fill contains values not matching offset / increment" ], ) { my ( $offset, $increment, $foo_id, $bar_id, $text )= @{$_}; # set up the hash tie my %hash, 'String::Lookup', init => { $foo => $foo_id }, offset => $offset, increment => $increment, ; # check lookup is( $hash{ \$foo }, $foo_id, "string lookup after init: $text" ); is( $hash{$foo_id}, $foo, "id lookup after init: $text" ); is( $hash{ \$bar }, $bar_id, "another string lookup after init: $text" ); is( $hash{$bar_id}, $bar, "another id lookup after init: $text" ); }