Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Tag: v0.002
Fetching contributors…

Cannot retrieve contributors at this time

89 lines (59 sloc) 3.158 kB

NAME

Test::Deep::Type - A Test::Deep plugin for validating type constraints

VERSION

version 0.002

SYNOPSIS

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',
);

DESCRIPTION

Test::Deep::Type 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).

FUNCTIONS

  • 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:

    • MooseX::Types/Moose::Meta::TypeConstraint-style types:

      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).

    • coderef/Moo-style types:

      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.

CAVEATS

Regular strings describing a type under a particular system (e.g. Moose, Params::Validate) are not currently supported.

SUPPORT

Bugs may be submitted through https://rt.cpan.org/Public/Dist/Display.html?Name=Test-Deep-Type. I am also usually active on irc, as 'ether' at irc://irc.perl.org.

SEE ALSO

Test::Deep

MooseX::Types

Moose::Meta::TypeConstraints

Moo

AUTHOR

Karen Etheridge ether@cpan.org

COPYRIGHT AND LICENSE

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.

Jump to Line
Something went wrong with that request. Please try again.