in reply to Re^2: How to test for empty hash?
in thread How to test for empty hash?
As a matter of style, I would write your test something like this:
use strict; use warnings; use Test::More; my $ntests = 9; plan tests => $ntests; { my $expected_version = 'v5.32.1'; cmp_ok( $^V, 'eq', $expected_version, "Version = $expected_version" + ); } { my %hash; ok( !%hash, "Empty: !\%hash" ); ok( !scalar(%hash), "Empty: ! scalar" ); cmp_ok( scalar(%hash), '==', 0, "Empty: 0 == scalar" ); ok( !keys(%hash), "Empty: ! keys" ); ++$hash{entry}; ok( (%hash ? 1 : 0), "Not empty: \%hash" ); ok( scalar(%hash), "Not empty: scalar" ); cmp_ok( scalar(%hash), '!=', 0, "Not empty: scalar != 0" ); ok( (keys(%hash) ? 1 : 0), "Not empty: keys" ); }
Some points to note:
When I first ran your test script, it failed with:
Note that using cmp_ok instead of ok provides clearer diagnostics:not ok 1 - Version = v5.32.1 # Failed test 'Version = v5.32.1' # at badtests1.pl line 8.
# Failed test 'Version = v5.32.1' # at badtests2.pl line 9. # got: 'v5.32.0' # expected: 'v5.32.1'
See Also
|
---|