1 # -*-Perl-*- Test Harness script for Bioperl
10 test_begin(-tests => 27,
11 -requires_module => 'Graph::Directed');
13 use_ok('Bio::Ontology::Term');
14 use_ok('Bio::Ontology::Relationship');
15 use_ok('Bio::Ontology::RelationshipType');
16 use_ok('Bio::Ontology::SimpleOntologyEngine');
17 use_ok('Bio::Ontology::Ontology');
20 my $ont = Bio::Ontology::Ontology->new(-name => "My Ontology");
22 my $eng = Bio::Ontology::SimpleOntologyEngine->new();
24 isa_ok( $eng,"Bio::Ontology::OntologyEngineI" );
25 is ($ont->engine, $eng);
28 [-identifier => "IPR000001",
30 -definition => "Kringles are autonomous structural domains ...",
33 [-identifier => "IPR000002",
34 -name => "Cdc20/Fizzy",
35 -definition => "The Cdc20/Fizzy region is almost always ...",
38 [-identifier => "IPR000003",
39 -name => "Retinoid X receptor",
40 -definition => "Steroid or nuclear hormone receptors ...",
43 [-identifier => "IPR000004",
45 -definition => "Test4 definition ...",
50 for(my $i = 0; $i < @terms; $i++) {
51 $terms[$i] = Bio::Ontology::Term->new(@{$terms[$i]});
52 $ont->add_term($terms[$i]);
55 my $rel_type = Bio::Ontology::RelationshipType->get_instance("IS_A", $ont);
56 my $rel_type1 = Bio::Ontology::RelationshipType->get_instance("PART_OF", $ont);
59 [-object_term => $terms[0],
60 -subject_term => $terms[1],
61 -predicate_term => $rel_type,
64 [-object_term => $terms[1],
65 -subject_term => $terms[2],
66 -predicate_term => $rel_type,
69 [-object_term => $terms[0],
70 -subject_term => $terms[3],
71 -predicate_term => $rel_type,
74 [-object_term => $terms[3],
75 -subject_term => $terms[2],
76 -predicate_term => $rel_type,
81 for(my $i = 0; $i < @rels; $i++) {
82 $rels[$i] = Bio::Ontology::Relationship->new(@{$rels[$i]});
83 $ont->add_relationship($rels[$i]);
86 my @child_terms = sort { $a->identifier() cmp $b->identifier();
87 } $ont->get_child_terms($terms[0]);
88 is (scalar(@child_terms), 2);
89 is( $child_terms[0], $terms[1] );
90 my @child_terms1 = sort { $a->identifier() cmp $b->identifier();
91 } $ont->get_child_terms($terms[0], $rel_type);
92 is (scalar(@child_terms), 2);
93 is( $child_terms1[0], $terms[1] );
94 is (scalar($ont->get_child_terms($terms[0], $rel_type1)), 0);
96 my @descendant_terms = sort { $a->identifier() cmp $b->identifier();
97 } $ont->get_descendant_terms($terms[0]);
98 is( scalar(@descendant_terms), 3);
99 is( $descendant_terms[1], $terms[2] );
101 my @descendant_terms1 = sort { $a->identifier() cmp $b->identifier();
102 } $ont->get_descendant_terms($terms[0], $rel_type);
103 is( $descendant_terms1[1], $terms[2] );
104 is (scalar(@descendant_terms1), 3);
105 is (scalar($ont->get_descendant_terms($terms[0], $rel_type1)), 0);
107 my @parent_terms = sort { $a->identifier() cmp $b->identifier();
108 } $ont->get_parent_terms($terms[1]);
109 is (scalar(@parent_terms), 1);
110 is( $parent_terms[0], $terms[0] );
112 my @ancestor_terms = sort { $a->identifier() cmp $b->identifier();
113 } $ont->get_ancestor_terms($terms[2]);
114 is( $ancestor_terms[0], $terms[0] );
115 is (scalar(@ancestor_terms), 3);
116 is (scalar($ont->get_ancestor_terms($terms[2], $rel_type)), 3);
117 is (scalar($ont->get_ancestor_terms($terms[2], $rel_type1)), 0);
119 my @leaf_terms = $ont->get_leaf_terms();
120 # print scalar(@leaf_terms)."\n";
121 is (scalar(@leaf_terms), 1);
122 is( $leaf_terms[0], $terms[2]);
124 my @root_terms = $ont->get_root_terms();
125 # print scalar(@root_terms)."\n";
126 is (scalar(@root_terms), 1);
127 is( $root_terms[0], $terms[0]);
129 #print $ont->engine->to_string();