Test 'package A; sub foo; foo A->new' that gets deparsed as 'A->foo->new'
[perl/modules/indirect.git] / t / 10-good.t
1 #!perl -T
2
3 package Dongs;
4
5 sub new;
6
7 package main;
8
9 use strict;
10 use warnings;
11
12 use Test::More tests => 36 * 4;
13
14 my ($obj, $pkg, $cb, $x);
15 sub meh;
16
17 {
18  local $/ = "####\n";
19  while (<DATA>) {
20   chomp;
21   local $SIG{__WARN__} = sub { die 'warn:' . join(' ', @_) };
22   {
23    use indirect;
24    eval "die qq{ok\\n}; $_";
25   }
26   is($@, "ok\n", "use indirect: $_");
27   {
28    no indirect;
29    eval "die qq{ok\n}; $_";
30   }
31   is($@, "ok\n", "no indirect: $_");
32   s/Hlagh/Dongs/g;
33   {
34    use indirect;
35    eval "die qq{ok\\n}; $_";
36   }
37   is($@, "ok\n", "use indirect, defined: $_");
38   {
39    no indirect;
40    eval "die qq{ok\\n}; $_";
41   }
42   is($@, "ok\n", "no indirect, defined: $_");
43  }
44 }
45
46 __DATA__
47 $obj = Hlagh->new;
48 ####
49 $obj = Hlagh->new();
50 ####
51 $obj = Hlagh->new(1);
52 ####
53 $obj = Hlagh->new(q{foo}, bar => $obj);
54 ####
55 $obj = Hlagh   ->   new   ;
56 ####
57 $obj = Hlagh   ->   new   (   )   ;
58 ####
59 $obj = Hlagh   ->   new   (   1   )   ;
60 ####
61 $obj = Hlagh   ->   new   (   'foo'   ,   bar =>   $obj   );
62 ####
63 $obj = Hlagh
64             ->
65                           new   ;
66 ####
67 $obj = Hlagh  
68
69       ->   
70 new   ( 
71  )   ;
72 ####
73 $obj = Hlagh
74                                        ->   new   ( 
75                1   )   ;
76 ####
77 $obj = Hlagh   ->
78                               new   (   "foo"
79   ,    bar     
80                =>        $obj       );
81 ####
82 $obj = Hlagh->$cb;
83 ####
84 $obj = Hlagh->$cb();
85 ####
86 $obj = Hlagh->$cb($pkg);
87 ####
88 $obj = Hlagh->$cb(sub { 'foo' },  bar => $obj);
89 ####
90 $obj = $pkg->new   ;
91 ####
92 $obj = $pkg  ->   new  (   );
93 ####
94 $obj = $pkg       
95            -> 
96         new ( $pkg );
97 ####
98 $obj = 
99          $pkg
100 ->
101 new        (     qr/foo/,
102       foo => qr/bar/   );
103 ####
104 $obj 
105   =  
106 $pkg
107 ->
108 $cb
109 ;
110 ####
111 $obj = $pkg    ->   ($cb)   ();
112 ####
113 $obj = $pkg->$cb( $obj  );
114 ####
115 $obj = $pkg->$cb(qw/foo bar baz/);
116 ####
117 $obj = new { $x };
118 ####
119 $obj = new
120   {
121      $x  }
122   ();
123 ####
124 $obj = new {
125   $x  } qq/foo/;
126 ####
127 $obj = new
128    {
129       $x
130     }(qw/bar baz/);
131 ####
132 meh $x;
133 ####
134 meh $x, 1 , 2;
135 ####
136 print STDOUT "bananananananana\n";
137 ####
138 print $x "oh hai\n";
139 ####
140 $x->foo($pkg->$cb)
141 ####
142 $obj = "apple ${\(new Hlagh)} pear"
143 ####
144 $obj = "apple @{[new Hlagh]} pear"
145 ####
146 s/dongs/new Hlagh/e;