Add .gitignore
[gitmo/Package-DeprecationManager.git] / t / basic.t
CommitLineData
dc4fc8c7 1use strict;
2use warnings;
3
4use Test::Exception;
5use Test::More;
6use Test::Warn;
7
8{
9 throws_ok {
10 eval 'package Foo; use Package::DeprecationManager;';
11 die $@ if $@;
12 }
13 qr/^\QYou must provide a hash reference -deprecations parameter when importing Package::DeprecationManager/,
14 'must provide a set of deprecations when using Package::DeprecationManager';
15}
16
17{
18 package Foo;
19
20 use Package::DeprecationManager -deprecations => {
21 'Foo::foo' => '0.02',
22 'Foo::bar' => '0.03',
23 'Foo::baz' => '1.21',
24 };
25
26 sub foo {
27 deprecated('foo is deprecated');
28 }
29
30 sub bar {
31 deprecated('bar is deprecated');
32 }
33
34 sub baz {
35 deprecated();
36 }
37}
38
39{
40 package Bar;
41
42 Foo->import();
43
44 ::warning_is{ Foo::foo() }
45 { carped => 'foo is deprecated' },
46 'deprecation warning for foo';
47
48 ::warning_is{ Foo::bar() }
49 { carped => 'bar is deprecated' },
50 'deprecation warning for bar';
51
52 ::warning_is{ Foo::baz() }
53 { carped => 'Foo::baz has been deprecated since version 1.21' },
54 'deprecation warning for baz, and message is generated by Package::DeprecationManager';
55
56 ::warning_is{ Foo::foo() } q{}, 'no warning on second call to foo';
57
58 ::warning_is{ Foo::bar() } q{}, 'no warning on second call to bar';
59
60 ::warning_is{ Foo::baz() } q{}, 'no warning on second call to baz';
61}
62
63{
64 package Baz;
65
66 Foo->import( -api_version => '0.01' );
67
68 ::warning_is{ Foo::foo() }
69 q{},
70 'no warning for foo with api_version = 0.01';
71
72 ::warning_is{ Foo::bar() }
73 q{},
74 'no warning for bar with api_version = 0.01';
75
76 ::warning_is{ Foo::baz() }
77 q{},
78 'no warning for baz with api_version = 0.01';
79}
80
81
82{
83 package Quux;
84
85 Foo->import( -api_version => '1.17' );
86
87 ::warning_is{ Foo::foo() }
88 { carped => 'foo is deprecated' },
89 'deprecation warning for foo with api_version = 1.17';
90
91 ::warning_is{ Foo::bar() }
92 { carped => 'bar is deprecated' },
93 'deprecation warning for bar with api_version = 1.17';
94
95 ::warning_is{ Foo::baz() }
96 q{},
97 'no warning for baz with api_version = 1.17';
98}
99
100done_testing();