summaryrefslogtreecommitdiffstats
path: root/patches/source/perl/10_hash.t
diff options
context:
space:
mode:
Diffstat (limited to 'patches/source/perl/10_hash.t')
-rw-r--r--patches/source/perl/10_hash.t38
1 files changed, 38 insertions, 0 deletions
diff --git a/patches/source/perl/10_hash.t b/patches/source/perl/10_hash.t
new file mode 100644
index 000000000..e051528b6
--- /dev/null
+++ b/patches/source/perl/10_hash.t
@@ -0,0 +1,38 @@
+X-Git-Url: http://perl5.git.perl.org/perl.git/blobdiff_plain/ca8de220718ba91d5a5fdd9779497cd5b0250258..f14269908e5f8b4cab4b55643d7dd9de577e7918:/ext/Hash-Util-FieldHash/t/10_hash.t
+
+diff --git a/ext/Hash-Util-FieldHash/t/10_hash.t b/ext/Hash-Util-FieldHash/t/10_hash.t
+index 29c2f4d..c266b6a 100644
+--- a/ext/Hash-Util-FieldHash/t/10_hash.t
++++ b/ext/Hash-Util-FieldHash/t/10_hash.t
+@@ -46,15 +46,29 @@ use constant START => "a";
+
+ # some initial hash data
+ fieldhash my %h2;
+-%h2 = map {$_ => 1} 'a'..'cc';
++my $counter= "a";
++$h2{$counter++}++ while $counter ne 'cd';
+
+ ok (!Internals::HvREHASH(%h2),
+ "starting with pre-populated non-pathological hash (rehash flag if off)");
+
+ my @keys = get_keys(\%h2);
++my $buckets= buckets(\%h2);
+ $h2{$_}++ for @keys;
++$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split
+ ok (Internals::HvREHASH(%h2),
+- scalar(@keys) . " colliding into the same bucket keys are triggering rehash");
++ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split");
++
++# returns the number of buckets in a hash
++sub buckets {
++ my $hr = shift;
++ my $keys_buckets= scalar(%$hr);
++ if ($keys_buckets=~m!/([0-9]+)\z!) {
++ return 0+$1;
++ } else {
++ return 8;
++ }
++}
+
+ sub get_keys {
+ my $hr = shift;