Skip to content

Instantly share code, notes, and snippets.

@j1n3l0
Created November 9, 2018 23:43
Show Gist options
  • Save j1n3l0/6891b95abeda23db643686f2a8d55da0 to your computer and use it in GitHub Desktop.
Save j1n3l0/6891b95abeda23db643686f2a8d55da0 to your computer and use it in GitHub Desktop.
use Test2::V0;
use Moo;
{
package Person;
use Moo;
has age => ( is => 'ro' );
}
{
package Adult;
use Moo::Role;
requires qw< age >;
sub adult { $_[0]->age >= 18 }
}
{
require Moo::Role;
my $person = Person->new( age => 20 );
Moo::Role->apply_roles_to_object( $person, qw< Adult > );
can_ok( $person, qw< adult > );
}
{
require Moo::Role;
my $Person = Moo::Role->create_class_with_roles( 'Person', qw< Adult > );
my $person = $Person->new( age => 20 );
can_ok( $person, qw< adult > );
}
done_testing;
use Test2::V0;
use Moops;
class Person :ro {
has age => ();
};
role Adult {
requires qw< age >;
method adult { $self->age >= 18 }
};
{
require Moo::Role;
my $person = Person->new( age => 20 );
Moo::Role->apply_roles_to_object( $person, qw< Adult > );
can_ok( $person, qw< adult > );
}
{
require Moo::Role;
my $Person = Moo::Role->create_class_with_roles( 'Person', qw< Adult > );
my $person = $Person->new( age => 20 );
can_ok( $person, qw< adult > );
}
done_testing;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment