Changelogging
[gitmo/Mouse.git] / t / 010_basics / 011_moose_respects_type_constraints.t
CommitLineData
60ad2cb7 1#!/usr/bin/perl
fde8e43f 2# This is automatically generated by author/import-moose-test.pl.
3# DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!!
4use t::lib::MooseCompat;
60ad2cb7 5
6use strict;
7use warnings;
8
fde8e43f 9use Test::More;
60ad2cb7 10use Test::Exception;
11
12use Mouse::Util::TypeConstraints;
13
14=pod
15
16This tests demonstrates that Mouse will not override
17a preexisting type constraint of the same name when
18making constraints for a Mouse-class.
19
20It also tests that an attribute which uses a 'Foo' for
21it's isa option will get the subtype Foo, and not a
22type representing the Foo moose class.
23
24=cut
25
26BEGIN {
27 # create this subtype first (in BEGIN)
28 subtype Foo
29 => as 'Value'
30 => where { $_ eq 'Foo' };
31}
32
33{ # now seee if Mouse will override it
34 package Foo;
35 use Mouse;
36}
37
38my $foo_constraint = find_type_constraint('Foo');
39isa_ok($foo_constraint, 'Mouse::Meta::TypeConstraint');
40
41is($foo_constraint->parent->name, 'Value', '... got the Value subtype for Foo');
42
43ok($foo_constraint->check('Foo'), '... my constraint passed correctly');
44ok(!$foo_constraint->check('Bar'), '... my constraint failed correctly');
45
46{
47 package Bar;
48 use Mouse;
49
50 has 'foo' => (is => 'rw', isa => 'Foo');
51}
52
53my $bar = Bar->new;
54isa_ok($bar, 'Bar');
55
56lives_ok {
57 $bar->foo('Foo');
58} '... checked the type constraint correctly';
59
60dies_ok {
61 $bar->foo(Foo->new);
62} '... checked the type constraint correctly';
63
fde8e43f 64done_testing;