Howdy!

I've hacked my copy of Test::More to add eq_hash_skip.

=item B<eq_hash_skip> eq_hash_skip(\%this, \%that, \@keys_to_ignore); Determines if the two hashes contain the same keys and values, not counting any hash keys in the list of keys to ignore. This is a deep c +heck. Note that the list of keys to ignore is only considered against the top level hashes. Deeper structures must match exactly. If the list of keys to ignore is missing or empty, this is identical to eq_hash. =cut sub eq_hash_skip { my ($a1, $a2, $skip) = @_; return eq_hash($a1, $a2) unless (defined($skip) && @$skip); return 1 if $a1 eq $a2; my %keys_of_interest = map {($_, 1)} keys %$a1, keys %$a2; delete @keys_of_interest{@$skip}; my $ok = 1; foreach my $k (keys %keys_of_interest) { return 0 unless exists $a1->{$k}; return 0 unless exists $a2->{$k}; my($e1, $e2) = ($a1->{$k}, $a2->{$k}); $ok = _deep_check($e1, $e2); last unless $ok; } return $ok; }

I've also added some tests to More.t to test this out :)

I'll be corresponding with Schwern, but for the instant, I am using it this way:

<CODE> ok eq_hash(\%hash1, \%hash2, qw/ key1 key2 / ), 'test name'; <CODE>

yours,
Michael


In reply to Re: Re: Test::More extension idea by herveus
in thread Test::More extension idea by herveus

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.