Algorithm-MinPerfHashTwoLevel

 view release on metacpan or  search on metacpan

t/Algo_v5.t  view on Meta::CPAN

#########################

use strict;
use warnings;

use Test::More tests => 7;
use Data::Dumper; $Data::Dumper::Sortkeys=1; $Data::Dumper::Useqq=1;
BEGIN { use_ok('Algorithm::MinPerfHashTwoLevel') };
use Algorithm::MinPerfHashTwoLevel qw(hash_with_state);

#########################

my $class= "Algorithm::MinPerfHashTwoLevel";

my $o= $class->new("seed"=>"1234567812345678",debug=>$ENV{TEST_VERBOSE},variant=>5);
my $state= $o->get_state;
my $state_as_hex= unpack "h*",$o->get_state;
is($state_as_hex,"4475044405b585b4c5d575a5454485c5050465a50515e445247574d4752525c4","state for seed is as expected");
for my $tuple (
    [ "fnorble",        17300635747579776751 ],
    [ "blah blah blah",  7551733764733872358 ],
    [ "blah blaH blah", 15370689535882563083 ],
) {
    my ($str,$want_hash)= @$tuple;
    my $got_hash= hash_with_state($str,$state);
    is($got_hash,$want_hash,"test hash function '$str'");
}

my %hash= ("A" .. "Z");
my $buckets= $o->compute(\%hash);
is_deeply($buckets,
    [
           {
             "h0" => "2811388775115704789",
             "idx" => 0,
             "key" => "M",
             "key_is_utf8" => 0,
             "key_normalized" => "M",
             "val" => "N",
             "val_is_utf8" => 0,
             "val_normalized" => "N"
           },
           {
             "h0" => "8860848721851830215",
             "h1_keys" => 2,
             "idx" => 1,
             "key" => "K",
             "key_is_utf8" => 0,
             "key_normalized" => "K",
             "val" => "L",
             "val_is_utf8" => 0,
             "val_normalized" => "L",
             "xor_val" => 1
           },
           {
             "h0" => "2333874141850904510",
             "h1_keys" => 1,
             "idx" => 2,
             "key" => "G",
             "key_is_utf8" => 0,
             "key_normalized" => "G",
             "val" => "H",
             "val_is_utf8" => 0,
             "val_normalized" => "H",
             "xor_val" => "4294967295"
           },
           {
             "h0" => "16876117158654460122",
             "idx" => 3,
             "key" => "Y",
             "key_is_utf8" => 0,
             "key_normalized" => "Y",
             "val" => "Z",
             "val_is_utf8" => 0,
             "val_normalized" => "Z"



( run in 0.513 second using v1.01-cache-2.11-cpan-0bd6704ced7 )