squash perl 5.12 warning
[bioperl-db.git] / t / 04swiss.t
blob644a78c0067631937231b3c703cf055709b88d5a
1 # -*-Perl-*-
2 # $Id$
4 BEGIN {
5     use lib 't';
6     use Bio::Root::Test;
7     test_begin(-tests => 55);
8         use_ok('DBTestHarness');
9         use_ok('Bio::SeqIO');
10         use_ok('Bio::Seq::SeqFactory');
13 $biosql = DBTestHarness->new("biosql");
14 $db = $biosql->get_DBAdaptor();
15 ok $db;
17 my $seqio = Bio::SeqIO->new('-format' => 'swiss',
18                             '-file' => test_input_file('swiss.dat'));
19 my $seq = $seqio->next_seq();
20 ok $seq;
22 my $pseq = $db->create_persistent($seq);
23 ok $pseq;
24 isa_ok $pseq, "Bio::DB::PersistentObjectI";
25 isa_ok $pseq, "Bio::SeqI";
27 $pseq->namespace("mytestnamespace");
28 $pseq->create();
29 my $dbid = $pseq->primary_key();
30 ok $dbid;
32 my $adp = $db->get_object_adaptor($seq);
33 ok $adp;
34 isa_ok $adp, "Bio::DB::PersistenceAdaptorI";
36 my $seqfact = Bio::Seq::SeqFactory->new(-type => "Bio::Seq::RichSeq");
37 ok $seqfact;
38 isa_ok $seqfact, "Bio::Factory::ObjectFactoryI";
40 # try/finally
41 eval {
42     $dbseq = $adp->find_by_primary_key($dbid, $seqfact);
43     ok $dbseq;
45     is ($dbseq->display_id, $seq->display_id);
46     like ($dbseq->primary_id, qr/=HASH/);
47     like ($seq->primary_id, qr/=HASH/);
48     is ($dbseq->accession_number, $seq->accession_number);
49     is ($dbseq->species->binomial, $seq->species->binomial);
50     is ($dbseq->subseq(3,10), $seq->subseq(3,10) );
51     is ($dbseq->seq, $seq->seq);
52     is ($dbseq->length, $seq->length);
53     is ($dbseq->length, length($dbseq->seq));
55     is ($dbseq->desc, $seq->desc);
57     my @dbarr = $dbseq->annotation->get_Annotations('dblink');
58     my @arr = $seq->annotation->get_Annotations('dblink');
59     is (scalar(@dbarr), scalar(@arr));
61     @dbarr = sort { $a->primary_id cmp $b->primary_id } @dbarr;
62     @arr = sort { $a->primary_id cmp $b->primary_id } @arr;
63     is ( $dbarr[0]->primary_id, $arr[0]->primary_id);
65     @dbarr = $dbseq->annotation->get_Annotations('reference');
66     @arr = $seq->annotation->get_Annotations('reference');
67     is (scalar(@dbarr), scalar(@arr));
69     @dbarr = sort { $a->primary_id cmp $b->primary_id } @dbarr;
70     @arr = sort { $a->primary_id cmp $b->primary_id } @arr;
71     is ( $dbarr[0]->primary_id, $arr[0]->primary_id);
72     is (scalar(grep { $_->start() && $_->end(); } @dbarr),
73         scalar(grep { $_->start() && $_->end(); } @arr));
75     foreach (@dbarr) {
76         my $ref = shift(@arr);
77         is ($_->authors, $ref->authors);
78         is ($_->title, $ref->title);
79         is ($_->location, $ref->location);
80         is ($_->medline, $ref->medline);
81     }
82     
83     @dbarr = $dbseq->annotation->get_Annotations('gene_name');
84     @arr = $seq->annotation->get_Annotations('gene_name');
85     ok (scalar(@dbarr));
86     is (scalar(@dbarr), scalar(@arr));
87     @dbarr = sort { $a->value() cmp $b->value() } @dbarr;
88     @arr = sort { $a->value() cmp $b->value() } @arr;
89     for(my $i = 0; $i < @dbarr; $i++) {
90         is ($dbarr[$i]->value(), $arr[$i]->value());
91     }
93     @dbarr = $dbseq->top_SeqFeatures();
94     @arr = $seq->top_SeqFeatures();
95     is (scalar(@dbarr), scalar(@arr));
96     @dbarr = sort { $a->primary_tag() cmp $b->primary_tag() } @dbarr;
97     @arr = sort { $a->primary_tag() cmp $b->primary_tag() } @arr;
98     for(my $i = 0; $i < @dbarr; $i++) {
99         is ($dbarr[$i]->primary_tag(), $arr[$i]->primary_tag());
100     }
104 print STDERR $@ if $@;
106 # delete seq
107 is ($pseq->remove(), 1);
108 my $ns = Bio::DB::Persistent::BioNamespace->new(-identifiable => $pseq);
109 ok $ns = $db->get_object_adaptor($ns)->find_by_unique_key($ns);
110 ok $ns->primary_key();
111 is ($ns->remove(), 1);