use strict; use warnings; use Test::More tests => 3; use Test::Exception; { package MyClass; use Moose; use MooseX::Types::Email::Loose qw/EmailAddressLoose EmailAddress/; use namespace::autoclean; has email => ( isa => EmailAddress, is => 'rw' ); has email_loose => ( isa => EmailAddressLoose, is => 'rw' ); } my $myclass = MyClass->new; subtest 'valid_rfc822' => sub { my $address = 'valid@example.com'; lives_ok { $myclass->email($address) }; lives_ok { $myclass->email_loose($address) }; }; subtest 'loose_rfc822' => sub { my $address = 'loose..@example.com'; dies_ok { $myclass->email($address) }; lives_ok { $myclass->email_loose($address) }; }; subtest 'invalid_rfc822' => sub { my $address = 'invalid'; dies_ok { $myclass->email($address) }; dies_ok { $myclass->email_loose($address) }; };