Convert all tests to done_testing.
[gitmo/Class-MOP.git] / t / 500_deprecated.t
1 use strict;
2 use warnings;
3
4 use Test::More;
5 use Test::Exception;
6
7 use Carp;
8
9 $SIG{__WARN__} = \&croak;
10
11 {
12     package Foo;
13
14     ::throws_ok{
15         Class::MOP::in_global_destruction();
16         } qr/\b deprecated \b/xmsi,
17         'Class::MOP::in_global_destruction is deprecated';
18 }
19
20 {
21     package Bar;
22
23     use Class::MOP::Deprecated -compatible => 0.93;
24
25     ::throws_ok{
26         Class::MOP::in_global_destruction();
27         } qr/\b deprecated \b/xmsi,
28         'Class::MOP::in_global_destruction is deprecated with 0.93 compatibility';
29 }
30
31 {
32     package Baz;
33
34     use Class::MOP::Deprecated -compatible => 0.92;
35
36     ::lives_ok{
37         Class::MOP::in_global_destruction();
38         }
39         'Class::MOP::in_global_destruction is not deprecated with 0.92 compatibility';
40 }
41
42 {
43     package Baz::Inner;
44
45     ::lives_ok{
46         Class::MOP::in_global_destruction();
47         } 'safe in an inner class';
48 }
49
50 {
51     package Foo2;
52
53     use metaclass;
54
55     ::throws_ok{ Foo2->meta->get_attribute_map }
56         qr/\Qget_attribute_map method has been deprecated/,
57         'get_attribute_map is deprecated';
58 }
59
60 {
61     package Quux;
62
63     use Class::MOP::Deprecated -compatible => 0.92;
64     use Scalar::Util qw( blessed );
65
66     use metaclass;
67
68     sub foo {42}
69
70     Quux->meta->add_method( bar => sub {84} );
71
72     my $map = Quux->meta->get_method_map;
73     my @method_objects = grep { blessed($_) } values %{$map};
74
75     ::is(
76         scalar @method_objects, 3,
77         'get_method_map still returns all values as method object'
78     );
79     ::is_deeply(
80         [ sort keys %{$map} ],
81         [qw( bar foo meta )],
82         'get_method_map returns expected methods'
83     );
84 }
85
86 done_testing;