From 68812549c073b87fbdf9849cf8e455479978fab0 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 10 Jul 2009 20:21:22 -0500 Subject: add a few more tests for multi-level inheritance --- t/001-basic.t | 11 ++++++++++- t/002-immutable.t | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/t/001-basic.t b/t/001-basic.t index 44a68dd..d5951d4 100644 --- a/t/001-basic.t +++ b/t/001-basic.t @@ -1,7 +1,7 @@ #!/usr/bin/env perl use strict; use warnings; -use Test::More tests => 5; +use Test::More tests => 9; use Test::Exception; package Foo; @@ -22,10 +22,19 @@ use Moose; 'extending fails with the correct error when requires are not fulfilled'; sub bar { } +package Foo::Sub::Sub; +use Moose; +::lives_ok { extends 'Foo::Sub1' } 'extending twice works'; + package main; my $foosub; lives_ok { $foosub = Foo::Sub1->new } 'instantiating concrete subclasses works'; isa_ok($foosub, 'Foo', 'inheritance is correct'); +my $foosubsub; +lives_ok { $foosubsub = Foo::Sub::Sub->new } + 'instantiating deeper concrete subclasses works'; +isa_ok($foosubsub, 'Foo', 'inheritance is correct'); +isa_ok($foosubsub, 'Foo::Sub1', 'inheritance is correct'); throws_ok { Foo->new } qr/Foo is abstract, it cannot be instantiated/, 'instantiating abstract classes fails'; diff --git a/t/002-immutable.t b/t/002-immutable.t index 0f4bce8..66424da 100644 --- a/t/002-immutable.t +++ b/t/002-immutable.t @@ -1,7 +1,7 @@ #!/usr/bin/env perl use strict; use warnings; -use Test::More tests => 5; +use Test::More tests => 9; use Test::Exception; package Foo; @@ -26,6 +26,10 @@ use Moose; 'extending fails with the correct error when requires are not fulfilled'; sub bar { } +package Foo::Sub::Sub; +use Moose; +::lives_ok { extends 'Foo::Sub1' } 'extending twice works'; + __PACKAGE__->meta->make_immutable; package main; @@ -33,5 +37,10 @@ my $foosub; lives_ok { $foosub = Foo::Sub1->new } 'instantiating concrete subclasses works'; isa_ok($foosub, 'Foo', 'inheritance is correct'); +my $foosubsub; +lives_ok { $foosubsub = Foo::Sub::Sub->new } + 'instantiating deeper concrete subclasses works'; +isa_ok($foosubsub, 'Foo', 'inheritance is correct'); +isa_ok($foosubsub, 'Foo::Sub1', 'inheritance is correct'); throws_ok { Foo->new } qr/Foo is abstract, it cannot be instantiated/, 'instantiating abstract classes fails'; -- cgit v1.2.3-54-g00ecf