AI-Gene-Sequence
view release on metacpan or search on metacpan
$gene = $main->clone;
$rt = $gene->mutate_switch(1,0,2,5,3); # overlap of sections
ok($rt,0);
ok($gene->d, 'abcdefghij');
# hammer randomness
$rt = 0;
for (1..$hammer) {
$gene = $main->clone;
eval '$gene->mutate_switch(1,undef,undef,0,0)';
$rt = 1 if $@;
}
ok($rt,0);
}
{ print "# mutate_shuffle\n";
my $gene = $main->clone;
my $rt = $gene->mutate_shuffle(1,5,0); # from after to
ok($rt,1);
ok($gene->d, 'fabcdeghij');
$gene = $main->clone;
$rt = $gene->mutate_shuffle(1,5,0,2); # extended sequence
ok($rt,1);
ok($gene->d, 'fgabcdehij');
$gene = $main->clone;
$rt = $gene->mutate_shuffle(1,0,5,2); # to after from
ok($rt,1);
ok($gene->d, 'cdeabfghij');
$gene = $main->clone;
$rt = $gene->mutate_shuffle(1,0,9,1); # 1st to last
ok($rt,1);
ok($gene->d, 'bcdefghiaj');
$gene = $main->clone;
$rt = $gene->mutate_shuffle(1,0,3,8); # overlap
ok($rt,0);
ok($gene->d, 'abcdefghij');
$gene = $main->clone;
$rt = $gene->mutate_shuffle(1,0,10,1); # to posn outside gene
ok($rt,0);
ok($gene->d, 'abcdefghij');
$gene = $main->clone;
$rt = $gene->mutate_shuffle(1,0,8,5); # should suceed
ok($rt,1);
ok($gene->d, 'fghabcdeij');
$gene = $main->clone;
$rt = $gene->mutate_shuffle(1,8,5,5); # extends beyond gene
ok($rt,0);
ok($gene->d, 'abcdefghij');
# hammer randomness
$rt = 0;
for (1..$hammer) {
$gene = $main->clone;
eval '$gene->mutate_shuffle(1,undef,undef,0)';
$rt = 1 if $@;
}
ok($rt,0);
}
{ print "# mutate\n";
my $rt = 0;
# hammer with defaults
for (1..$hammer) {
my $gene = $main->clone;
eval '$gene->mutate';
$rt = 1 if $@;
}
ok($rt,0);
# hammer with custom probs
my %probs = (
insert =>1,
remove =>1,
duplicate =>1,
overwrite =>1,
minor =>1,
major =>1,
switch =>1,
shuffle =>1,
);
$rt = 0;
for (1..$hammer) {
my $gene= $main->clone;
eval '$gene->mutate(1, \\%probs)';
$rt = 1 if $@;
}
ok($rt,0);
}
1;
( run in 0.438 second using v1.01-cache-2.11-cpan-39bf76dae61 )