App-Sandy
view release on metacpan or search on metacpan
t/lib/TestsFor/App/Sandy/Read.pm view on Meta::CPAN
package TestsFor::App::Sandy::Read;
# ABSTRACT: Tests for 'App::Sandy::Read' class
use App::Sandy::Base 'test';
use App::Sandy::PieceTable;
use App::Sandy::RNG;
#use Data::Dumper;
use base 'TestsFor';
use constant {
SEED => 17
};
sub startup : Tests(startup) {
my $test = shift;
$test->SUPER::startup;
my $class = ref $test;
$class->mk_classdata('default_read');
$class->mk_classdata('default_attr');
$class->mk_classdata('seq');
$class->mk_classdata('seq_len');
$class->mk_classdata('table');
$class->mk_classdata('table_seq');
$class->mk_classdata('slice_len');
$class->mk_classdata('rng');
}
sub setup : Tests(setup) {
my $test = shift;
my %child_arg = @_;
$test->SUPER::setup;
my %default_attr = (
sequencing_error => 0.1,
%child_arg
);
my $seq = 'TGACCCGCTAACCTCAGTTCTGCAGCAGTAACAACTGCCGTATCTGGACTTTCCTAATACCTCGCATAGTCCGTCCCCTCGCGCGGCAAGAGGTGCGGCG';
my $table_seq = "A large span of text";
$test->default_attr(\%default_attr);
$test->default_read($test->class_to_test->new(%default_attr));
$test->seq($seq);
$test->seq_len(length $seq);
$test->slice_len(10);
$test->table(App::Sandy::PieceTable->new(orig => \$table_seq));
$test->rng(App::Sandy::RNG->new(SEED));
}
sub constructor : Tests(4) {
my $test = shift;
my $class = $test->class_to_test;
my $read = $test->default_read;
my %default_attr = %{ $test->default_attr };
while (my ($attr, $value) = each %default_attr) {
can_ok $read, $attr;
is $read->$attr, $value,"The value for $attr shold be correct";
}
}
sub subseq_seq : Test(5) {
my $test = shift;
my $read = $test->default_read;
my $seq = $test->seq;
my $seq_len = $test->seq_len;
my $slice_len = $test->slice_len;
my $rng = $test->rng;
my ($read_seq1_ref, $pos1) = $read->subseq(\$seq, $seq_len, $slice_len, 0);
is length($$read_seq1_ref), 10,
"Setting a slice_len ($slice_len) should return a seq ($slice_len) in subseq";
ok index($seq, $$read_seq1_ref) >= 0,
"Read sequence must be inside seq in subseq";
my ($read_seq2_ref, $pos2) = $read->subseq_rand(\$seq, $seq_len, $slice_len, $rng);
is length($$read_seq2_ref), 10,
"Setting a slice_len ($slice_len) should return a seq ($slice_len) in subseq_rand";
ok index($seq, $$read_seq2_ref) >= 0,
"Read sequence must be inside seq in subseq";
my ($read_seq3_ref, $pos3) = $read->subseq_rand(\$seq, $seq_len, $slice_len, $rng);
is index($seq, $$read_seq3_ref), $pos3,
"Position returned in subseq_rand ($pos3) should be equal to postion in index";
}
( run in 0.554 second using v1.01-cache-2.11-cpan-98e64b0badf )