Test-Chunks
view release on metacpan or search on metacpan
lib/Test/Chunks.pm view on Meta::CPAN
$list = [@{$self->chunk_list}, undef];
$self->_next_list($list);
}
my $chunk = shift @$list;
if (defined $chunk and not $chunk->is_filtered) {
$chunk->run_filters;
}
return $chunk;
}
sub filters_delay() {
(my ($self), @_) = find_my_self(@_);
$self->_filters_delay(defined $_[0] ? shift : 1);
}
sub delimiters() {
(my ($self), @_) = find_my_self(@_);
$self->check_late;
my ($chunk_delimiter, $data_delimiter) = @_;
$chunk_delimiter ||= $self->chunk_delim_default;
$data_delimiter ||= $self->data_delim_default;
$self->chunk_delim($chunk_delimiter);
$self->data_delim($data_delimiter);
return $self;
}
sub spec_file() {
(my ($self), @_) = find_my_self(@_);
$self->check_late;
$self->_spec_file(shift);
return $self;
}
sub spec_string() {
(my ($self), @_) = find_my_self(@_);
$self->check_late;
$self->_spec_string(shift);
return $self;
}
sub filters() {
(my ($self), @_) = find_my_self(@_);
if (ref($_[0]) eq 'HASH') {
$self->_filters_map(shift);
}
else {
my $filters = $self->_filters;
push @$filters, @_;
}
return $self;
}
sub filter_arguments() {
$Test::Chunks::Filter::arguments;
}
sub have_text_diff {
eval { require Text::Diff; 1 };
}
sub is($$;$) {
(my ($self), @_) = find_my_self(@_);
my ($actual, $expected, $name) = @_;
local $Test::Builder::Level = $Test::Builder::Level + 1;
if ($ENV{TEST_SHOW_NO_DIFFS} or
$actual eq $expected or
not($self->have_text_diff) or
$expected !~ /\n./s
) {
Test::More::is($actual, $expected, $name);
}
else {
$name = '' unless defined $name;
ok $actual eq $expected,
$name . "\n" . Text::Diff::diff(\$actual, \$expected);
}
}
sub run(&) {
(my ($self), @_) = find_my_self(@_);
my $callback = shift;
for my $chunk (@{$self->chunk_list}) {
$chunk->run_filters unless $chunk->is_filtered;
&{$callback}($chunk);
}
}
sub run_is() {
(my ($self), @_) = find_my_self(@_);
my ($x, $y) = @_;
local $Test::Builder::Level = $Test::Builder::Level + 1;
for my $chunk (@{$self->chunk_list}) {
next unless exists($chunk->{$x}) and exists($chunk->{$y});
$chunk->run_filters unless $chunk->is_filtered;
is($chunk->$x, $chunk->$y,
$chunk->name ? $chunk->name : ()
);
}
}
sub run_is_deeply() {
(my ($self), @_) = find_my_self(@_);
my ($x, $y) = @_;
for my $chunk (@{$self->chunk_list}) {
next unless exists($chunk->{$x}) and exists($chunk->{$y});
$chunk->run_filters unless $chunk->is_filtered;
is_deeply($chunk->$x, $chunk->$y,
$chunk->name ? $chunk->name : ()
);
}
}
sub run_like() {
(my ($self), @_) = find_my_self(@_);
my ($x, $y) = @_;
for my $chunk (@{$self->chunk_list}) {
next unless exists($chunk->{$x}) and defined($y);
$chunk->run_filters unless $chunk->is_filtered;
my $regexp = ref $y ? $y : $chunk->$y;
like($chunk->$x, $regexp,
$chunk->name ? $chunk->name : ()
( run in 2.152 seconds using v1.01-cache-2.11-cpan-524268b4103 )