Merge pull request #254 from bioperl/hyphaltip-bug253-patch-1
[bioperl-live.git] / t / SeqFeature / SubSeq.t
blobcb1f52b18d0c9d67fc4a3cb7ada57ee5294a1aec
1 use strict;
3 BEGIN {
4     use lib '.';
5     use Bio::Root::Test;
6     
7     test_begin(-tests => 37);
9     use_ok 'Bio::PrimarySeq';
10     use_ok 'Bio::SeqFeature::SubSeq';
13 my ($subseq, $subseq_seq, $subsubseq, $subsubseq_seq, $template);
16 # Basic SubSeq object
18 $subseq = Bio::SeqFeature::SubSeq->new();
19 isa_ok $subseq, 'Bio::SeqFeature::SubSeq';
20 isa_ok $subseq, 'Bio::SeqFeature::Generic';
21 is $subseq->length, undef;
24 # SubSeq with explicit sequence (sequence string)
26 ok $subseq = Bio::SeqFeature::SubSeq->new(
27     -seq => 'CCCCCAAAAAGGGGGTTTTT',
29 is $subseq->length, 20;
30 ok $subseq_seq = $subseq->seq;
31 isa_ok $subseq_seq, 'Bio::PrimarySeq';
32 is $subseq_seq->seq, 'CCCCCAAAAAGGGGGTTTTT';
35 # SubSeq with explicit sequence (sequence object)
37 ok $subseq = Bio::SeqFeature::SubSeq->new(
38     -seq => Bio::PrimarySeq->new( -seq => 'CCCCCAAAAAGGGGGTTTTT' ),
40 is $subseq->length, 20;
41 ok $subseq_seq = $subseq->seq;
42 isa_ok $subseq_seq, 'Bio::PrimarySeq';
43 is $subseq_seq->seq, 'CCCCCAAAAAGGGGGTTTTT';
46 # SubSeq with explicit sequence and coordinates
48 ok $subseq = Bio::SeqFeature::SubSeq->new(
49     -seq    => Bio::PrimarySeq->new( -seq => 'CCCCCAAAAAGGGGGTTTTT' ),
50     -start  => 11,
51     -end    => 40,
52     -strand => -1
54 is $subseq->length, 30;
55 ok $subseq_seq = $subseq->seq;
56 isa_ok $subseq_seq, 'Bio::PrimarySeq';
57 is $subseq_seq->seq, 'CCCCCAAAAAGGGGGTTTTT';
60 # Subseq with implicit sequence
62 $template = Bio::Seq->new( -seq => 'ATCGATCGATCCCCCAAAAAGGGGGTTTTTAGCTAGCTAT');
64 ok $subseq = Bio::SeqFeature::SubSeq->new(
65     -start  => 11,
66     -end    => 30,
67     -strand => -1
69 is $subseq->length, 20;
71 ok $template->add_SeqFeature($subseq);
72 ok $subseq_seq = $subseq->seq;
73 isa_ok $subseq_seq, 'Bio::PrimarySeq';
74 is $subseq_seq->seq, 'AAAAACCCCCTTTTTGGGGG';
77 # Subseq with implicit sequence
79 $template = Bio::Seq->new( -seq => 'ATCGATCGATCCCCCAAAAAGGGGGTTTTTAGCTAGCTAT');
81 ok $subseq = Bio::SeqFeature::SubSeq->new(
82     -start    => 11,
83     -end      => 30,
84     -strand   => -1,
85     -template => $template,
87 is $subseq->length, 20;
88 ok $subseq_seq = $subseq->seq;
89 isa_ok $subseq_seq, 'Bio::PrimarySeq';
90 is $subseq_seq->seq, 'AAAAACCCCCTTTTTGGGGG';
93 # Sub SubSeq
95 ok $subsubseq = Bio::SeqFeature::SubSeq->new(
96     -start    => 11,
97     -end      => 15,
98     -strand   => 1,
99     -template => $subseq,
101 is $subsubseq->length, 5;
102 ok $subsubseq_seq = $subsubseq->seq;
103 isa_ok $subsubseq_seq, 'Bio::PrimarySeq';
104 is $subsubseq_seq->seq, 'CCCCC';
107 # One-liner
109 is( Bio::SeqFeature::SubSeq->new(-start=>11,-end=>30,-strand=>1,-template=>$template)->seq->seq, 'CCCCCAAAAAGGGGGTTTTT' );