NAME
Test::Proto::Role::HashRef - Role containing test case methods for hash refs.
SYNOPSIS
package MyProtoClass;
use Moo;
with 'Test::Proto::Role::HashRef';
This Moo Role provides methods to Test::Proto::HashRef for test case methods that apply to hashrefs such as key_exists
. It can also be used for objects which use overload or otherwise respond to hashref syntax.
METHODS
key_exists
pHash->key_exists('a')->ok({a=>1, b=>2});
Returns true if the key exists (even if the value is undefined).
key_has_value
pHash->key_has_value('a',1)->ok({a=>1, b=>2});
pHash->key_has_value('b',p->num_gt(0))->ok({a=>1, b=>2});
Returns the value of corresponding to the key provided within the subject, and tests it against the prototype provided in the argument.
superhash_of
pHash->superhash_of({'a'=>1})->ok({a=>1, b=>2});
pHash->superhash_of({'b'=>p->num_gt(0)})->ok({a=>1, b=>2});
Tests whether each of the key-value pairs in the second argument are present and validate the test subject's equivalent pair.
count_keys
pHash->count_keys(2)->ok({a=>1, b=>2});
pHash->count_keys(p->num_gt(0))->ok({a=>1, b=>2});
Counts the keys of the hashref and compares them to the prototype provided. There is no equivalent count_values - the number should be identical!
keys
pHash->keys($tests_keys)->ok({a=>1, b=>2});
Returns the hash keys of the subject as an array reference (in an undetermined order), and tests them against the prototype provided in the argument.
In the above example, the ok
passes if the prototype $tests_keys
returns a pass for ['a','b']
or ['b','a']
.
values
pHash->values($tests_values)->ok({a=>1, b=>2});
Produces the hash values of the subject as an array reference (in an undetermined order), and tests them against the prototype provided in the argument.
In the above example, the ok
passes if the prototype $tests_values
returns a pass for [1,2]
or [2,1]
.
enumerated
pHash->enumerated($tests_key_value_pairs)->ok({a=>1, b=>2});
Produces the hash keys and values of the subject as an array reference (in an undetermined order), and tests them against the prototype provided in the argument.
In the above example, the prototype $tests_key_value_pairs
should return a pass for [['a','1'],['b','2']]
or [['b','2'],['a','1']]
.
OTHER INFORMATION
For author, version, bug reports, support, etc, please see Test::Proto.