App-Test-Generator
view release on metacpan or search on metacpan
t/Mutant_unit.t view on Meta::CPAN
id => 'X',
description => 'x',
original => '>',
line => 1,
transform => undef,
)
},
qr/transform must be a CODE reference/,
'undef transform croaks',
);
};
subtest 'new() type and group default to undef when not supplied' => sub {
my $m = _mutant();
is($m->type, undef, 'type defaults to undef');
is($m->group, undef, 'group defaults to undef');
};
subtest 'new() each call produces a distinct object' => sub {
my $m1 = _mutant();
my $m2 = _mutant();
isnt($m1, $m2, 'distinct objects returned');
};
# ==================================================================
# id()
#
# POD spec:
# Returns the id string.
# Read-only â argument is ignored.
# ==================================================================
subtest 'id() returns the stored id' => sub {
my $m = _mutant(id => 'NUM_BOUNDARY_42_7_!=');
is($m->id, 'NUM_BOUNDARY_42_7_!=', 'id returned correctly');
};
subtest 'id() is read-only â value unchanged after write attempt' => sub {
my $m = _mutant(id => 'ORIGINAL');
my $orig = $m->id;
eval { $m->id('CHANGED') };
is($m->id, $orig, 'id unchanged after write attempt');
};
# ==================================================================
# description()
#
# POD spec:
# Returns the description string.
# ==================================================================
subtest 'description() returns the stored description' => sub {
my $m = _mutant(description => 'Flip > to <');
is($m->description, 'Flip > to <', 'description returned correctly');
};
# ==================================================================
# original()
#
# POD spec:
# Returns the original source fragment string.
# ==================================================================
subtest 'original() returns the stored original value' => sub {
my $m = _mutant(original => '>=');
is($m->original, '>=', 'original returned correctly');
};
subtest 'original() can hold arbitrary Perl code snippets' => sub {
my $m = _mutant(original => 'return $self->{name}');
is($m->original, 'return $self->{name}',
'code snippet stored and returned correctly');
};
# ==================================================================
# line()
#
# POD spec:
# Returns the line number integer.
# ==================================================================
subtest 'line() returns the stored line number' => sub {
my $m = _mutant(line => 99);
is($m->line, 99, 'line number returned correctly');
};
subtest 'line() accepts line number 1' => sub {
my $m = _mutant(line => 1);
is($m->line, 1, 'line 1 valid');
};
# ==================================================================
# transform()
#
# POD spec:
# Returns the CODE reference.
# The coderef is callable and receives a document argument.
# ==================================================================
subtest 'transform() returns a CODE reference' => sub {
my $m = _mutant();
is(ref($m->transform), 'CODE', 'transform returns CODE ref');
};
subtest 'transform() coderef is callable' => sub {
my $called = 0;
my $m = _mutant(transform => sub { $called++ });
$m->transform->();
is($called, 1, 'transform coderef callable');
};
subtest 'transform() coderef receives its argument correctly' => sub {
my $received;
my $sentinel = { marker => 'doc' };
my $m = _mutant(transform => sub { $received = $_[0] });
$m->transform->($sentinel);
is($received, $sentinel, 'argument passed through to transform coderef');
};
# ==================================================================
# type()
( run in 0.953 second using v1.01-cache-2.11-cpan-b16cb0d3907 )