test for FOREIGNBUILDARGS
Graham Knop [Fri, 22 Feb 2013 09:58:44 +0000 (04:58 -0500)]
t/foreignbuildargs.t [new file with mode: 0644]

diff --git a/t/foreignbuildargs.t b/t/foreignbuildargs.t
new file mode 100644 (file)
index 0000000..291bd57
--- /dev/null
@@ -0,0 +1,41 @@
+use strictures 1;
+use Test::More;
+
+{
+    package t::non_moo_strict;
+
+    sub new {
+        my ($class, $arg) = @_;
+        die "invalid arguments: " . join(',', @_[2..$#_])
+          if @_ > 2;
+        bless { attr => $arg }, $class;
+    }
+
+    sub attr { shift->{attr} }
+
+    package t::ext_non_moo_strict::with_attr;
+    use Moo;
+    extends qw( t::non_moo_strict );
+
+    has 'attr2' => ( is => 'ro' );
+
+    sub FOREIGNBUILDARGS {
+        my ($class, %args) = @_;
+        return $args{attr};
+    }
+}
+
+
+my $non_moo = t::non_moo_strict->new( 'bar' );
+my $ext_non_moo = t::ext_non_moo_strict::with_attr->new( attr => 'bar', attr2 => 'baz' );
+
+is $non_moo->attr, 'bar',
+    "non-moo accepts params";
+is $ext_non_moo->attr, 'bar',
+    "extended non-moo passes params";
+is $ext_non_moo->attr2, 'baz',
+    "extended non-moo has own attributes";
+
+
+done_testing;
+