Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: Unit testing question with Test::Deep

by pokki (Scribe)
on Jun 18, 2013 at 09:02 UTC ( #1039533=note: print w/ replies, xml ) Need Help??


in reply to Unit testing question with Test::Deep

Best I could come up with is this:

use strict; use warnings; use 5.010; use Test::More; use Test::Deep; my $structure = [ { alpha => 'alpha-foo', beta => 18, gamma => 'opt-bar' }, { alpha => 'alpha-foo', beta => 18 } ]; my $structure_extra = [ { alpha => 'alpha-foo', beta => 18, gamma => 'opt-bar', delta => 'huh' }, { alpha => 'alpha-foo', beta => 18 } ]; my $structure_failing = [ { alpha => 'alpha-foo', beta => 18, gamma => 'copt-bar' }, { alpha => 'alpha-foo', beta => 18 } ]; my %minimal = ( alpha => re('^alpha(.*)'), beta => re('\d+') ); my %optional = ( gamma => re('^opt(.*)') ); my $validator = array_each(superhashof(\%minimal) & subhashof({%minima +l, %optional})); cmp_deeply($structure, $validator); cmp_deeply($structure_extra, $validator); cmp_deeply($structure_failing, $validator); done_testing;

$structure passes the test, the other two fail. This can easily be modified to add new mandatory elements (add them to %minimal) and new optional elements (add them to %optional).


Comment on Re: Unit testing question with Test::Deep
Select or Download Code
Re^2: Unit testing question with Test::Deep
by willjones (Sexton) on Jun 18, 2013 at 15:21 UTC
    Thanks, this is helpful.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1039533]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (8)
As of 2014-12-27 01:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (176 votes), past polls