convert all uses of Test::Exception to Test::Fatal.
[gitmo/Moose.git] / t / 020_attributes / 008_attribute_type_unions.t
CommitLineData
c07af9d2 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
a28e50e4 6use Test::More;
be0ed157 7use Test::Fatal;
c07af9d2 8
7ff56534 9
c07af9d2 10{
11 package Foo;
c07af9d2 12 use Moose;
d03bd989 13
c07af9d2 14 has 'bar' => (is => 'rw', isa => 'ArrayRef | HashRef');
15}
16
17my $foo = Foo->new;
18isa_ok($foo, 'Foo');
19
be0ed157 20ok ! exception {
c07af9d2 21 $foo->bar([])
be0ed157 22}, '... set bar successfully with an ARRAY ref';
c07af9d2 23
be0ed157 24ok ! exception {
c07af9d2 25 $foo->bar({})
be0ed157 26}, '... set bar successfully with a HASH ref';
c07af9d2 27
be0ed157 28ok exception {
c07af9d2 29 $foo->bar(100)
be0ed157 30}, '... couldnt set bar successfully with a number';
c07af9d2 31
be0ed157 32ok exception {
c07af9d2 33 $foo->bar(sub {})
be0ed157 34}, '... couldnt set bar successfully with a CODE ref';
c07af9d2 35
36# check the constructor
37
be0ed157 38ok ! exception {
c07af9d2 39 Foo->new(bar => [])
be0ed157 40}, '... created new Foo with bar successfully set with an ARRAY ref';
c07af9d2 41
be0ed157 42ok ! exception {
c07af9d2 43 Foo->new(bar => {})
be0ed157 44}, '... created new Foo with bar successfully set with a HASH ref';
c07af9d2 45
be0ed157 46ok exception {
c07af9d2 47 Foo->new(bar => 50)
be0ed157 48}, '... didnt create a new Foo with bar as a number';
c07af9d2 49
be0ed157 50ok exception {
c07af9d2 51 Foo->new(bar => sub {})
be0ed157 52}, '... didnt create a new Foo with bar as a CODE ref';
2d2b92e5 53
54{
55 package Bar;
2d2b92e5 56 use Moose;
d03bd989 57
2d2b92e5 58 has 'baz' => (is => 'rw', isa => 'Str | CodeRef');
59}
60
61my $bar = Bar->new;
62isa_ok($bar, 'Bar');
63
be0ed157 64ok ! exception {
2d2b92e5 65 $bar->baz('a string')
be0ed157 66}, '... set baz successfully with a string';
2d2b92e5 67
be0ed157 68ok ! exception {
2d2b92e5 69 $bar->baz(sub { 'a sub' })
be0ed157 70}, '... set baz successfully with a CODE ref';
2d2b92e5 71
be0ed157 72ok exception {
2d2b92e5 73 $bar->baz(\(my $var1))
be0ed157 74}, '... couldnt set baz successfully with a SCALAR ref';
2d2b92e5 75
be0ed157 76ok exception {
2d2b92e5 77 $bar->baz({})
be0ed157 78}, '... couldnt set bar successfully with a HASH ref';
2d2b92e5 79
80# check the constructor
81
be0ed157 82ok ! exception {
2d2b92e5 83 Bar->new(baz => 'a string')
be0ed157 84}, '... created new Bar with baz successfully set with a string';
2d2b92e5 85
be0ed157 86ok ! exception {
2d2b92e5 87 Bar->new(baz => sub { 'a sub' })
be0ed157 88}, '... created new Bar with baz successfully set with a CODE ref';
2d2b92e5 89
be0ed157 90ok exception {
2d2b92e5 91 Bar->new(baz => \(my $var2))
be0ed157 92}, '... didnt create a new Bar with baz as a number';
2d2b92e5 93
be0ed157 94ok exception {
2d2b92e5 95 Bar->new(baz => {})
be0ed157 96}, '... didnt create a new Bar with baz as a HASH ref';
c07af9d2 97
a28e50e4 98done_testing;