Allow falling back to any strigified Bio::AnnotationI for 'gene_name'
[bioperl-live.git] / t / SeqIO / tigrxml.t
blob81d729301ec2a33637bde2b2cc22fe90f78d42b6
1 # -*-Perl-*- Test Harness script for Bioperl
2 # $Id$
4 use strict;
6 BEGIN {
7     use lib '.';
8     use Bio::Root::Test;
9     
10     test_begin(-tests => 49,
11                            -requires_modules => [qw(XML::SAX XML::SAX::Writer)]);
12         
13         use_ok('Bio::SeqIO::tigrxml');
16 my $verbose = test_debug();
18 my $ast = Bio::SeqIO->new(-format => 'tigrxml' ,
19                           -verbose => $verbose,
20                           -file => test_input_file('test.tigrxml'));
21 isa_ok($ast, 'Bio::SeqIO');
22 $ast->verbose($verbose);
23 ok my $as = $ast->next_seq();
24 is($as->display_id, 'chr9');
26 my $first = 1;
27 for my $f ( sort { $a->start * $a->strand <=> $b->start * $b->strand } $as->get_SeqFeatures ) {
28     ok($f);
30     my ($name);
31     for my $tag ( qw(Parent ID) ) {
32         if( $f->has_tag($tag) ) {
33             ($name) = $f->get_tag_values($tag);
34             last;
35         }
36     }
37     if( $name eq '162.t00500' || $name eq '162.m02638' ) {
38         if( $f->primary_tag eq 'gene' ) {
39             is($f->start, 185408);
40             is($f->end, 187155);
41             # warn($f->gff_string, "\n");
42         } elsif( $f->primary_tag eq 'mRNA' ) { 
43             is($f->start, 185408); # the values list for COORD are start/end of CDS not whole transcript
44             is($f->end, 187155);    
45             is($f->strand, 1);
46         } elsif( $f->primary_tag eq "five_prime_UTR" ) {
47             my ($id) = $f->get_tag_values('ID');
48             if( $id =~ /UTR1$/ ) {
49                 is($f->start, 185408);
50                 is($f->end,   185433);
51             } elsif( $id =~ /UTR2$/ ) {
52                 is($f->start, 185487);
53                 is($f->end,   185793);
54             } else {
55                 ok(0, 'expected only two UTRS');
56             }       
57         } elsif( $f->primary_tag eq "three_prime_UTR" ) {
58             is($f->start, 187042);
59             is($f->end, 187155);
60         } elsif( $f->primary_tag eq 'CDS' ) {
61             is($f->start, 185794);
62             is($f->end, 187041);
63         }
64     } elsif ( $name eq '162.t00448' || $name eq '162.m02967' ) {
65         if( $f->primary_tag eq 'gene' ) {
66             is($f->start, 59343);
67             is($f->end, 61061);
68         } elsif( $f->primary_tag eq 'mRNA' ) { 
69             is($f->start, 59343); # the values list for COORD are start/end of CDS not whole transcript
70             is($f->end, 61061);    
71             is($f->strand, -1);
72         } elsif( $f->primary_tag eq "five_prime_UTR" ) {
73             my ($id) = $f->get_tag_values('ID');
74             is($f->start, 60834);
75             is($f->end, 61061);
76             is($f->strand, -1);
77         } elsif( $f->primary_tag eq "three_prime_UTR" ) {
78             is($f->start, 59343);
79             is($f->end,   59632);
80             is($f->strand, -1);
81         } elsif( $f->primary_tag eq 'CDS' ) {
82             if( $first ) { 
83                 is($f->start, 60801);
84                 is($f->end,   60833);
85                 is($f->strand, -1);
86                 $first = 0;
87             }
88         }
89     } else { 
90         ok(0, "unexpected name '$name'\n");
91     }