summaryrefslogtreecommitdiff
path: root/t/lib/Test/SubExporter/ObjGen.pm
diff options
context:
space:
mode:
Diffstat (limited to 't/lib/Test/SubExporter/ObjGen.pm')
-rw-r--r--t/lib/Test/SubExporter/ObjGen.pm54
1 files changed, 54 insertions, 0 deletions
diff --git a/t/lib/Test/SubExporter/ObjGen.pm b/t/lib/Test/SubExporter/ObjGen.pm
new file mode 100644
index 0000000..845d4b4
--- /dev/null
+++ b/t/lib/Test/SubExporter/ObjGen.pm
@@ -0,0 +1,54 @@
+#!perl
+package Test::SubExporter::ObjGen::Obj;
+
+use strict;
+use warnings;
+
+sub new {
+ my $class = shift;
+ my $code = $class->can(shift);
+
+ bless { code => $code } => $class;
+}
+
+sub group {
+ return {
+ foo => sub { return 'FOO' },
+ bar => sub { return 'BAR' },
+ };
+}
+
+sub baz {
+ return sub {
+ return 'BAZ';
+ };
+}
+
+use overload
+ '&{}' => sub { $_[0]->{code} },
+ 'bool' => sub { 1 };
+
+package Test::SubExporter::ObjGen;
+
+my ($group_o, $group_b, $baz, $quux);
+BEGIN {
+ $quux = sub { sub { 'QUUX' } };
+ bless $quux => 'Test::SubExporter::Whatever';
+
+ $group_o = sub { return {
+ ringo => sub { 'starr' },
+ richard => sub { 'starkey' },
+ } };
+ bless $group_o => 'Test::SubExporter::Whatever';
+
+ $baz = Test::SubExporter::ObjGen::Obj->new('baz');
+ $group_b = Test::SubExporter::ObjGen::Obj->new('group');
+}
+
+use Sub::Exporter -setup => {
+ exports => { baz => $baz, quux => $quux },
+ groups => { meta => $group_b, ringo => $group_o },
+};
+
+
+"call me";