The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;

package Foo;

sub new {
    my $class = shift;
    bless { _class => $class }, $class;
}

package Foo::Mouse;
use Mouse;
use Any::Moose 'X::NonMoose';
extends 'Foo';

package main;
my $foo = Foo->new;
my $foo_moose = Foo::Mouse->new;
isa_ok($foo, 'Foo');
is($foo->{_class}, 'Foo', 'Foo gets the correct class');
isa_ok($foo_moose, 'Foo::Mouse');
isa_ok($foo_moose, 'Foo');
isa_ok($foo_moose, 'Mouse::Object');
is($foo_moose->{_class}, 'Foo::Mouse', 'Foo::Mouse gets the correct class');
my $meta = Foo::Mouse->meta;
ok($meta->has_method('new'), 'Foo::Mouse has its own constructor');
my $cc_meta = $meta->constructor_class->meta;
isa_ok($cc_meta, 'Mouse::Meta::Class');

done_testing;