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 )