package Test::Run::Base::Struct;
use strict;
use warnings;
=head1 NAME
Test::Run::Base::Struct - base class for Test::Run's "structs", that are
simple classes that hold several values.
=head1 DESCRIPTION
Inherits from L<Test::Run::Base>.
=cut
use MRO::Compat;
use Moose;
# We need to put it here before the use MooseX::StrictConstructor due
# to a Moose mis-feature. Thanks to doy.
BEGIN
{
extends('Test::Run::Base');
}
use MooseX::StrictConstructor;
sub _pre_init
{
}
use Carp;
=head2 BUILD
For Moose.
=cut
sub BUILD
{
my $self = shift;
=begin debugging_code
Carp::confess '$args not a hash' if (ref($args) ne "HASH");
=end debugging_code
=cut
$self->_pre_init();
return;
}
=head1 METHODS
=head2 $struct->inc_field($field_name)
Increment the slot $field_name by 1.
=cut
sub inc_field
{
my ($self, $field) = @_;
return $self->add_to_field($field, 1);
}
=head2 $struct->add_to_field($field_name, $difference)
Add $difference to the slot $field_name.
=cut
sub add_to_field
{
my ($self, $field, $diff) = @_;
$self->$field($self->$field()+$diff);
}
1;
__END__
=head1 SEE ALSO
L<Test::Run::Base>, L<Test::Run::Obj>, L<Test::Run::Core>
=head1 LICENSE
This file is freely distributable under the MIT X11 license.
L<http://www.opensource.org/licenses/mit-license.php>
=head1 AUTHOR
Shlomi Fish, L<http://www.shlomifish.org/>.
=cut