use Test::More no_plan; use Test::Deep; my $expect = { name => re(qr/porky/), value => code(sub { $_[0] >= 0 && $_[0] < 10 || (0, "out of range [0,10)")}), spigot_state => 'active', };
my $value = { name => 'My name is porky', value => 11, # <-- fails here spigot_state => 'active', }; cmp_deeply( $value, $expect, 'Whoopee!'); although it looks like I have a bug in the diagnostic output, it shows undef instead of 11, F On 05/08/07, Andy Armstrong <[EMAIL PROTECTED]> wrote: > I'm sure I've recently seen a test that used something like this: > > my $expect = { > name => qr/porky/, > value => sub { $_[0] >= 0 && $_[0] < 10 }, > spigot_state => 'active', > }; > > my $value = { > name => 'My name is porky', > value => 11, # <-- fails here > spigot_state => 'active', > }; > > is_magically( $value, $expect, 'Whoopee!'); > > Where is_magically() tests a data structure against an 'active' data > structure that can contain constant values, REs and code references. > Everything compares literally unless it's a coderef or regexp - they > are applied to the value under test. > > Did I imagine it? > > -- > Andy Armstrong, hexten.net > >