The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::Requires qw(Moose::Role Moose::Role Moose::Util::TypeConstraints);

package Fuga;
use Moose::Role;

package Hoge;
use Moose;

with "Fuga";

package main;
use strict;
use warnings;
use Test::More;
use Test::TypeConstraints qw(type_isa type_does);

my $hoge = Hoge->new;

my $subtype = subtype 'HogeClass' => as 'Object' => where { $_->isa("Hoge") } ;
isa_ok($subtype, "Moose::Meta::TypeConstraint");

type_isa($hoge, $subtype, "Moose TypeConstraint object ok");
type_does($hoge, $subtype, "Moose::Role ok");

done_testing();