1# -*-Perl-*- Test Harness script for Bioperl
2# $Id$
3
4use strict;
5
6BEGIN {
7    use Bio::Root::Test;
8
9    test_begin(-tests => 23);
10
11	use_ok('Bio::SeqFeature::Generic');
12	use_ok('Bio::SeqFeature::AnnotationAdaptor');
13	use_ok('Bio::Annotation::DBLink');
14	use_ok('Bio::Annotation::Comment');
15	use_ok('Bio::Annotation::SimpleValue');
16}
17
18
19my $feat = Bio::SeqFeature::Generic->new();
20$feat->add_tag_value("tag1", "value of tag1");
21$feat->add_tag_value("tag1", "another value of tag1");
22$feat->add_tag_value("tag2", "some value for a tag");
23
24my $link1 = Bio::Annotation::DBLink->new(-database => 'TSC',
25                                        -primary_id => 'TSC0000030',
26                                        -tagname => "tag2"
27                                       );
28$feat->annotation->add_Annotation($link1);
29
30my $anncoll = Bio::SeqFeature::AnnotationAdaptor->new(-feature => $feat);
31
32is($anncoll->get_num_of_annotations(), 4);
33is(scalar($anncoll->get_all_annotation_keys()), 2);
34
35my @anns = $anncoll->get_Annotations("tag1");
36my @vals = $feat->get_tag_values("tag1");
37
38is (scalar(@anns), scalar(@vals));
39for(my $i = 0; $i < @anns; $i++) {
40  is ($anns[$i]->value(), $vals[$i]);
41}
42
43@anns = $anncoll->get_Annotations("tag2");
44my @fanns = $feat->annotation->get_Annotations("tag2");
45@vals = $feat->get_tag_values("tag2");
46
47is (scalar(@fanns), 1);
48is (scalar(@anns), 2);
49is (scalar(@vals), 1);
50is ($anns[0]->value(), $vals[0]);
51
52is ($anns[1]->primary_id(), $fanns[0]->primary_id());
53
54my $comment = Bio::Annotation::Comment->new( '-text' => 'sometext');
55$anncoll->add_Annotation('comment', $comment);
56
57@fanns = $feat->annotation->get_Annotations("comment");
58is (scalar(@fanns), 1);
59is ($fanns[0]->text(), "sometext");
60
61my $tagval = Bio::Annotation::SimpleValue->new(-value => "boring value",
62					       -tagname => "tag2");
63$anncoll->add_Annotation($tagval);
64
65@anns = $anncoll->get_Annotations("tag2");
66@fanns = $feat->annotation->get_Annotations("tag2");
67@vals = $feat->get_tag_values("tag2");
68
69is (scalar(@fanns), 1);
70is (scalar(@anns), 3);
71is (scalar(@vals), 2);
72is ($anns[0]->value(), $vals[0]);
73is ($anns[1]->value(), $vals[1]);
74is ($anns[2]->primary_id(), $fanns[0]->primary_id());
75