rewrite nonMoo detection
[gitmo/Role-Tiny.git] / t / extends-non-moo.t
CommitLineData
de5c0e53 1use strictures 1;
2use Test::More;
3
4{
5 package t::moo::extends_non_moo::base;
6
7 sub new {
8 my ($proto, $args) = @_;
9 bless $args, $proto;
10 }
11
12 sub to_app {
13 (shift)->{app};
14 }
15
16 package t::moo::extends_non_moo::middle;
17 use base qw(t::moo::extends_non_moo::base);
18
19 sub wrap {
20 my($class, $app) = @_;
21 $class->new({app => $app})
22 ->to_app;
23 }
24
25 package t::moo::extends_non_moo::moo;
26 use Moo;
27 extends 't::moo::extends_non_moo::middle';
28
29 package t::moo::extends_non_moo::moo_with_attr;
30 use Moo;
31 extends 't::moo::extends_non_moo::middle';
32 has 'attr' => (is=>'ro');
33}
34
35ok my $app = 100,
36 'prepared $app';
37
38ok $app = t::moo::extends_non_moo::middle->wrap($app),
39 '$app from $app';
40
41is $app, 100,
42 '$app still 100';
43
44ok $app = t::moo::extends_non_moo::moo->wrap($app),
45 '$app from $app';
46
47is $app, 100,
48 '$app still 100';
49
50ok $app = t::moo::extends_non_moo::moo_with_attr->wrap($app),
51 '$app from $app';
52
53is $app, 100,
54 '$app still 100';
55
56done_testing();