X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FTest%2FValgrind%2FComponent.pm;fp=lib%2FTest%2FValgrind%2FComponent.pm;h=3b7a5701f3a698167d95a0c0281fabd0d16eb35c;hb=943acd9991dfbe73afc5eca6921767f098f5e6a9;hp=0000000000000000000000000000000000000000;hpb=01ace0ff88ffd8fb63dfebcc3b8a8baaf9e0df25;p=perl%2Fmodules%2FTest-Valgrind.git diff --git a/lib/Test/Valgrind/Component.pm b/lib/Test/Valgrind/Component.pm new file mode 100644 index 0000000..3b7a570 --- /dev/null +++ b/lib/Test/Valgrind/Component.pm @@ -0,0 +1,116 @@ +package Test::Valgrind::Component; + +use strict; +use warnings; + +=head1 NAME + +Test::Valgrind::Component - Base class for Test::Valgrind components. + +=head1 VERSION + +Version 1.02 + +=cut + +our $VERSION = '1.02'; + +use Scalar::Util (); + +use base qw/Test::Valgrind::Carp/; + +=head1 METHODS + +=head2 C + +Basic constructor. + +=cut + +sub new { + my $self = shift; + + my $class = $self; + if (Scalar::Util::blessed($self)) { + $class = ref $self; + if ($self->isa(__PACKAGE__)) { + $self->{started} = undef; + return $self; + } + } + + bless { + started => undef, + }, $class; +} + +=head2 C + +Specifies whether the component is running (C<1>), stopped (C<0>) or was never started (C). + +=cut + +sub started { @_ <= 1 ? $_[0]->{started} : ($_[0]->{started} = $_[1] ? 1 : 0) } + +=head2 C + +Marks the component as started, and throws an exception if it was already. +Returns its self object. + +=cut + +sub start { + my ($self) = @_; + + $self->_croak(ref($self) . ' component already started') if $self->started; + $self->started(1); + + $self; +} + +=head2 C + +Marks the component as stopped, and throws an exception if it wasn't started. +Returns its self object. + +=cut + +sub finish { + my ($self) = @_; + + $self->_croak(ref($self) . ' component is not started') unless $self->started; + $self->started(0); + + $self; +} + +=head1 SEE ALSO + +L. + +=head1 AUTHOR + +Vincent Pit, C<< >>, L. + +You can contact me by mail or on C (vincent). + +=head1 BUGS + +Please report any bugs or feature requests to C, or through the web interface at L. +I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. + +=head1 SUPPORT + +You can find documentation for this module with the perldoc command. + + perldoc Test::Valgrind::Component + +=head1 COPYRIGHT & LICENSE + +Copyright 2009 Vincent Pit, all rights reserved. + +This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. + +=cut + +1; # End of Test::Valgrind::Component