summaryrefslogtreecommitdiffstats
path: root/t/magic.t
blob: 4318f580b71147b407e72d27a476a1e17afe8503 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/env perl
use strict;
use warnings;
use lib 't/lib';
use Test::More;

use Package::Stash;

# @ISA magic
{
    my $Foo = Package::Stash->new('ISAFoo');
    $Foo->add_symbol('&foo' => sub { });

    my $Bar = Package::Stash->new('ISABar');
    @{ $Bar->get_or_add_symbol('@ISA') } = ('ISAFoo');
    can_ok('ISABar', 'foo');

    my $Foo2 = Package::Stash->new('ISAFoo2');
    $Foo2->add_symbol('&foo2' => sub { });
    @{ $Bar->get_or_add_symbol('@ISA') } = ('ISAFoo2');
    can_ok('ISABar', 'foo2');
    ok(!Bar->can('foo'));
}

{
    my $main = Package::Stash->new('main');
    $main->add_symbol('$"', '-');
    my @foo = qw(a b c);
    is(eval q["@foo"], 'a-b-c');
}

done_testing;