1# -*-Perl-*- Test Harness script for Bioperl
2# $Id$
3
4use strict;
5use warnings;
6
7BEGIN {
8    use Bio::Root::Test;
9
10    test_begin(-tests => 62,
11               -requires_module => 'Graph::Directed');
12
13    use_ok('Bio::Ontology::GOterm');
14    use_ok('Bio::Ontology::Ontology');
15	use_ok('Bio::Annotation::DBLink');
16}
17
18my $obj = Bio::Ontology::GOterm->new();
19
20# note that all *dblink* methods are now deprecated...
21
22isa_ok( $obj,"Bio::Ontology::GOterm");
23
24$obj->init();
25
26like( $obj->to_string(), qr'-- GO id:' );
27
28is( $obj->GO_id( "GO:0003947" ), "GO:0003947" );
29is( $obj->GO_id(), "GO:0003947" );
30
31
32is( $obj->get_dbxrefs(), 0 );
33
34my @dblinks = (Bio::Annotation::DBLink->new(-primary_id => 'dAA'),
35				 Bio::Annotation::DBLink->new(-primary_id => 'dAB'));
36
37$obj->add_dbxref( -dbxrefs => \@dblinks );
38is( scalar($obj->get_dbxrefs()), 2 );
39my @df1 = $obj->get_dbxrefs();
40is( $df1[ 0 ]->display_text, "dAA" );
41is( $df1[ 1 ]->display_text, "dAB" );
42is( $obj->get_dbxrefs(), 2 );
43
44my @df2 = $obj->remove_dbxrefs();
45is( $df2[ 0 ]->display_text, "dAA" );
46is( $df2[ 1 ]->display_text, "dAB" );
47
48is( $obj->get_dbxrefs(), 0 );
49is( $obj->remove_dbxrefs(), 0 );
50
51
52is( $obj->get_secondary_GO_ids(), 0 );
53
54$obj->add_secondary_GO_id( ( "GO:0000000", "GO:1234567" ) );
55is( scalar($obj->get_secondary_GO_ids()), 2 );
56my @si1 = $obj->get_secondary_GO_ids();
57is( $si1[ 0 ], "GO:0000000" );
58is( $si1[ 1 ], "GO:1234567" );
59is( $obj->get_secondary_GO_ids(), 2 );
60
61my @si2 = $obj->remove_secondary_GO_ids();
62is( $si2[ 0 ], "GO:0000000" );
63is( $si2[ 1 ], "GO:1234567" );
64
65is( $obj->get_secondary_GO_ids(), 0 );
66is( $obj->remove_secondary_GO_ids(), 0 );
67
68
69
70is( $obj->identifier( "0003947" ), "0003947" );
71is( $obj->identifier(), "0003947" );
72
73is( $obj->name( "N-acetylgalactosaminyltransferase" ), "N-acetylgalactosaminyltransferase" );
74is( $obj->name(), "N-acetylgalactosaminyltransferase" );
75
76is( $obj->definition( "Catalysis of ..." ), "Catalysis of ..." );
77is( $obj->definition(), "Catalysis of ..." );
78
79is( $obj->version( "666" ), "666" );
80is( $obj->version(), "666" );
81
82ok( $obj->ontology( "category 1 name" ) );
83is( $obj->ontology()->name(), "category 1 name" );
84
85my $ont = Bio::Ontology::Ontology->new();
86ok( $ont->name( "category 2 name" ) );
87
88ok( $obj->ontology( $ont ) );
89is( $obj->ontology()->name(), "category 2 name" );
90
91is( $obj->is_obsolete( 1 ), 1 );
92is( $obj->is_obsolete(), 1 );
93
94is( $obj->comment( "Consider the term ..." ), "Consider the term ..." );
95is( $obj->comment(), "Consider the term ..." );
96
97is( $obj->get_synonyms(), 0 );
98
99$obj->add_synonym( ( "AA", "AB" ) );
100my @al1 = $obj->get_synonyms();
101is( scalar(@al1), 2 );
102is( $al1[ 0 ], "AA" );
103is( $al1[ 1 ], "AB" );
104
105my @al2 = $obj->remove_synonyms();
106is( $al2[ 0 ], "AA" );
107is( $al2[ 1 ], "AB" );
108
109is( $obj->get_synonyms(), 0 );
110is( $obj->remove_synonyms(), 0 );
111
112$obj->add_synonym( ( "AA", "AB" ) );
113$obj->add_dbxref( -dbxrefs => \@dblinks );
114$obj->add_secondary_GO_id( ( "GO:1234567", "GO:1234567" ) );
115
116$obj->init();
117is( $obj->identifier(), undef ); # don't make up identifiers
118is( $obj->name(), undef );
119is( $obj->definition(), undef );
120is( $obj->is_obsolete(), 0 );
121is( $obj->comment(), undef );
122
123
124$obj = Bio::Ontology::GOterm->new( -go_id       => "0016847",
125                                   -name        => "1-aminocyclopropane-1-carboxylate synthase",
126                                   -definition  => "Catalysis of ...",
127                                   -is_obsolete => 0,
128                                   -version     => "6.6.6",
129                                   -ontology    => "cat",
130                                   -comment     => "X" );
131
132is( $obj->identifier(), "GO:0016847" );
133is( $obj->name(), "1-aminocyclopropane-1-carboxylate synthase" );
134is( $obj->definition(), "Catalysis of ..." );
135is( $obj->is_obsolete(), 0 );
136is( $obj->comment(), "X" );
137is( $obj->version(), "6.6.6" );
138is( $obj->ontology()->name(), "cat" );
139