From a35098e0cb451ee0d7abf382ceb3e672f9ed004d Mon Sep 17 00:00:00 2001 From: Yves Orton Date: Mon, 27 Aug 2012 08:51:39 +0200 Subject: [PATCH] fix hash key ordering dependency in t/op/defins.t These tests break if we change the hash function or randomly initialize the hash seed. --- t/op/defins.t | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/t/op/defins.t b/t/op/defins.t index d3d50fb..54d3150 100644 --- a/t/op/defins.t +++ b/t/op/defins.t @@ -10,7 +10,7 @@ BEGIN { $SIG{__WARN__} = sub { $warns++; warn $_[0] }; } require 'test.pl'; -plan( tests => 26 ); +plan( tests => 27 ); my $unix_mode = 1; @@ -48,8 +48,8 @@ $saved_filename = './0'; cmp_ok($warns,'==',0,'no warns at start'); ok(open(FILE,">$saved_filename"),'created work file'); +print FILE "0\n"; print FILE "1\n"; -print FILE "0"; close(FILE); open(FILE,"<$saved_filename"); @@ -58,6 +58,7 @@ my $seen = 0; my $dummy; while (my $name = ) { + chomp($name); $seen++ if $name eq '0'; } cmp_ok($seen,'==',1,'seen in while()'); @@ -67,6 +68,7 @@ $seen = 0; my $line = ''; do { + chomp($line); $seen++ if $line eq '0'; } while ($line = ); cmp_ok($seen,'==',1,'seen in do/while'); @@ -75,15 +77,17 @@ seek(FILE,0,0); $seen = 0; while (($seen ? $dummy : $name) = ) { + chomp($name); $seen++ if $name eq '0'; } -cmp_ok($seen,'==',1,'seen in while() ternary'); +cmp_ok($seen,'==',2,'seen in while() ternary'); seek(FILE,0,0); $seen = 0; my %where; while ($where{$seen} = ) { + chomp($where{$seen}); $seen++ if $where{$seen} eq '0'; } cmp_ok($seen,'==',1,'seen in hash while()'); @@ -167,12 +171,16 @@ ok(!(-f $saved_filename),'work file unlinked'); my %hash = (0 => 1, 1 => 2); my @array = 1; +my $neg_sum= 0; $seen = 0; + while (my $name = each %hash) { + $neg_sum = $name - $neg_sum; $seen++ if $name eq '0'; } +cmp_ok(abs($neg_sum),'==',1,'abs(neg_sum) should equal 1'); cmp_ok($seen,'==',1,'seen in each'); $seen = 0; @@ -181,7 +189,7 @@ while (($seen ? $dummy : $name) = each %hash) { $seen++ if $name eq '0'; } -cmp_ok($seen,'==',1,'seen in each ternary'); +cmp_ok($seen,'==',$neg_sum < 0 ? 1 : 2,'seen in each ternary'); $seen = 0; while ($where{$seen} = each %hash) -- 2.7.4