Test::Deep::Type - A Test::Deep plugin for validating type constraints
version 0.008
use Test::More; use Test::Deep; use Test::Deep::Type; use MooseX::Types::Moose 'Str'; cmp_deeply( { message => 'ack I am slain', counter => 123, }, { message => is_type(Str), counter => is_type(sub { die "not an integer" unless int($_[0]) eq $_[0] }), }, 'message is a plain string, counter is a number', );
This is a Test::Deep plugin that provides the sub is_type to indicate that the data being tested must validate against the passed type. This is an actual type object, not a string name -- for example something provided via MooseX::Types, or a plain old coderef that returns a bool (such as what might be used in a Moo type constraint).
is_type
Exported by default; to be used within a Test::Deep comparison function such as cmp_deeply. As this module aims to be a solution for many popular type systems, we attempt to use the type in multiple ways:
If the validate method exists, it is invoked on the type object with the data as its parameter (which should return undef on success, and the error message on failure).
validate
undef
If the type appears to be or act like a coderef (either a coderef, blessed or unblessed, or possesses a coderef overload) the type is invoked as a sub, with the data as its parameter. Its return value is treated as a boolean; if it also dies with a message describing the failure, this message is used in the failure diagnostics.
Type::Tiny types fall into this category, and are fully supported.
Regular strings describing a type under a particular system (e.g. Moose, Params::Validate) are not currently supported.
Test::Deep
Test::TypeConstraints
Test::Type
Test::Deep::Matcher
MooseX::Types
Moose::Meta::TypeConstraint
Moo
Type::Tiny
Bugs may be submitted through the RT bug tracker (or bug-Test-Deep-Type@rt.cpan.org).
There is also a mailing list available for users of this distribution, at http://lists.perl.org/list/perl-qa.html.
There is also an irc channel available for users of this distribution, at #perl on irc.perl.org.
#perl
irc.perl.org
I am also usually active on irc, as 'ether' at irc.perl.org.
Karen Etheridge <ether@cpan.org>
Graham Knop <haarg@haarg.org>
This software is copyright (c) 2013 by Karen Etheridge.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Test::Deep::Type, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Test::Deep::Type
CPAN shell
perl -MCPAN -e shell install Test::Deep::Type
For more information on module installation, please visit the detailed CPAN module installation guide.