summaryrefslogtreecommitdiffstats
path: root/t/abstract-subclass.t
diff options
context:
space:
mode:
Diffstat (limited to 't/abstract-subclass.t')
-rw-r--r--t/abstract-subclass.t50
1 files changed, 50 insertions, 0 deletions
diff --git a/t/abstract-subclass.t b/t/abstract-subclass.t
new file mode 100644
index 0000000..f2cc65c
--- /dev/null
+++ b/t/abstract-subclass.t
@@ -0,0 +1,50 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More;
+use Test::Fatal;
+
+{
+ package Foo;
+ use Moose;
+ use MooseX::ABC;
+
+ requires 'foo';
+ requires 'bar';
+}
+
+{
+ package Foo::Sub;
+ use Moose;
+ use MooseX::ABC;
+ extends 'Foo';
+
+ requires 'baz';
+
+ sub bar { 'BAR' }
+}
+
+{
+ package Foo::Sub::Sub;
+ use Moose;
+ extends 'Foo::Sub';
+
+ sub foo { 'FOO' }
+ sub baz { 'BAZ' }
+}
+
+like(
+ exception { Foo->new },
+ qr/Foo is abstract, it cannot be instantiated/,
+ "can't create Foo objects"
+);
+like(
+ exception { Foo::Sub->new },
+ qr/Foo::Sub is abstract, it cannot be instantiated/,
+ "can't create Foo::Sub objects"
+);
+
+my $foo = Foo::Sub::Sub->new;
+is($foo->foo, 'FOO', 'successfully created a Foo::Sub::Sub object');
+
+done_testing;