inhale Mouse
[gitmo/Moo.git] / xt / super-jenga.t
diff --git a/xt/super-jenga.t b/xt/super-jenga.t
new file mode 100644 (file)
index 0000000..d67dee2
--- /dev/null
@@ -0,0 +1,38 @@
+use strictures 1;
+use Test::More;
+
+{
+  package Tower1;
+
+  use Mouse;
+
+  has 'attr1' => (is => 'ro', required => 1);
+
+  package Tower2;
+
+  use Moo;
+
+  extends 'Tower1';
+
+  has 'attr2' => (is => 'ro', required => 1);
+
+  package Tower3;
+
+  use Moose;
+
+  extends 'Tower2';
+
+  has 'attr3' => (is => 'ro', required => 1);
+
+  __PACKAGE__->meta->make_immutable;
+}
+
+foreach my $num (1..3) {
+  my $class = "Tower${num}";
+  my @attrs = map "attr$_", 1..$num;
+  my %args = map +($_ => "${_}_value"), @attrs;
+  my $obj = $class->new(%args);
+  is($obj->{$_}, "${_}_value", "Attribute $_ ok for $class") for @attrs;
+}
+
+done_testing;