1*5759b3d2Safresh1#!/usr/bin/perl -Tw 2*5759b3d2Safresh1 3*5759b3d2Safresh1use strict; 4*5759b3d2Safresh1use Test::More; 5*5759b3d2Safresh1 6*5759b3d2Safresh1my @Exported_Funcs; 7*5759b3d2Safresh1BEGIN { 8*5759b3d2Safresh1 @Exported_Funcs = qw( bucket_ratio num_buckets used_buckets ); 9*5759b3d2Safresh1 plan tests => 13 + @Exported_Funcs; 10*5759b3d2Safresh1 use_ok 'Hash::Util', @Exported_Funcs; 11*5759b3d2Safresh1} 12*5759b3d2Safresh1foreach my $func (@Exported_Funcs) { 13*5759b3d2Safresh1 can_ok __PACKAGE__, $func; 14*5759b3d2Safresh1} 15*5759b3d2Safresh1 16*5759b3d2Safresh1my %hash; 17*5759b3d2Safresh1 18*5759b3d2Safresh1is(bucket_ratio(%hash), 0, "Empty hash has no bucket_ratio"); 19*5759b3d2Safresh1is(num_buckets(%hash), 8, "Empty hash should have eight buckets"); 20*5759b3d2Safresh1is(used_buckets(%hash), 0, "Empty hash should have no used buckets"); 21*5759b3d2Safresh1 22*5759b3d2Safresh1$hash{1}= 1; 23*5759b3d2Safresh1is(bucket_ratio(%hash), "1/8", "hash has expected bucket_ratio"); 24*5759b3d2Safresh1is(num_buckets(%hash), 8, "hash should have eight buckets"); 25*5759b3d2Safresh1is(used_buckets(%hash), 1, "hash should have one used buckets"); 26*5759b3d2Safresh1 27*5759b3d2Safresh1$hash{$_}= $_ for 2..7; 28*5759b3d2Safresh1 29*5759b3d2Safresh1like(bucket_ratio(%hash), qr!/(?:8|16)!, "hash has expected number of buckets in bucket_ratio"); 30*5759b3d2Safresh1my $num= num_buckets(%hash); 31*5759b3d2Safresh1ok(($num == 8 || $num == 16), "hash should have 8 or 16 buckets"); 32*5759b3d2Safresh1cmp_ok(used_buckets(%hash), "<", 8, "hash should have one used buckets"); 33*5759b3d2Safresh1 34*5759b3d2Safresh1$hash{8}= 8; 35*5759b3d2Safresh1like(bucket_ratio(%hash), qr!/(?:8|16)!, "hash has expected number of buckets in bucket_ratio"); 36*5759b3d2Safresh1$num= num_buckets(%hash); 37*5759b3d2Safresh1ok(($num == 8 || $num == 16), "hash should have 8 or 16 buckets"); 38*5759b3d2Safresh1cmp_ok(used_buckets(%hash), "<=", 8, "hash should have at most 8 used buckets"); 39*5759b3d2Safresh1 40*5759b3d2Safresh1 41