xref: /openbsd-src/gnu/usr.bin/perl/ext/Hash-Util/t/builtin.t (revision 5759b3d249badf144a6240f7eec4dcf9df003e6b)
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