more support for IO slots
[gitmo/Package-Stash-XS.git] / t / 003-io.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Test::More;
5 use Test::Exception;
6
7 {
8     package Foo;
9     open *foo, "<", $0;
10
11     sub foo { }
12 }
13
14 {
15     package Bar;
16     open *bar, "<", $0;
17
18     sub bar { }
19 }
20
21 use Stash::Manip;
22
23 {
24     my $stash = Stash::Manip->new('Foo');
25     ok($stash->has_package_symbol('&foo'), "has &foo");
26     ok($stash->has_package_symbol('foo'), "has foo");
27     $stash->remove_package_symbol('&foo');
28     ok(!$stash->has_package_symbol('&foo'), "has &foo");
29     ok($stash->has_package_symbol('foo'), "has foo");
30 }
31
32 {
33     my $stash = Stash::Manip->new('Bar');
34     ok($stash->has_package_symbol('&bar'), "has &bar");
35     ok($stash->has_package_symbol('bar'), "has bar");
36     $stash->remove_package_symbol('bar');
37     ok($stash->has_package_symbol('&bar'), "has &bar");
38     ok(!$stash->has_package_symbol('bar'), "has bar");
39 }
40
41 {
42     my $stash = Stash::Manip->new('Baz');
43     lives_ok {
44         $stash->add_package_symbol('baz', *Foo::foo{IO});
45     } "can add an IO symbol";
46     ok($stash->has_package_symbol('baz'), "has baz");
47     is($stash->get_package_symbol('baz'), *Foo::foo{IO}, "got the right baz");
48 }
49
50 done_testing;