--- /dev/null
+package jalview.io.gff;
+
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertTrue;
+
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+public class SequenceOntologyTest
+{
+ private SequenceOntologyI so;
+
+ @BeforeClass
+ public void setUp() {
+ long now = System.currentTimeMillis();
+ SequenceOntologyFactory.setInstance(new SequenceOntology());
+ long elapsed = System.currentTimeMillis() - now;
+ System.out.println("Load and cache of Sequence Ontology took "
+ + elapsed + "ms");
+ so = SequenceOntologyFactory.getInstance();
+ }
+
+ @AfterClass
+ public void tearDown()
+ {
+ SequenceOntologyFactory.setInstance(null);
+ }
+
+ @Test(groups = "Functional")
+ public void testIsA()
+ {
+ assertFalse(so.isA(null, null));
+ assertFalse(so.isA(null, "SO:0000087"));
+ assertFalse(so.isA("SO:0000087", null));
+ assertFalse(so.isA("complete", "garbage"));
+
+ assertTrue(so.isA("SO:0000087", "SO:0000704"));
+ assertFalse(so.isA("SO:0000704", "SO:0000087"));
+ assertTrue(so.isA("SO:0000736", "SO:0000735"));
+
+ // same thing:
+ assertTrue(so.isA("micronuclear_sequence", "micronuclear_sequence"));
+ // direct parent:
+ assertTrue(so.isA("micronuclear_sequence", "organelle_sequence"));
+ // grandparent:
+ assertTrue(so.isA("micronuclear_sequence", "sequence_location"));
+ // great-grandparent:
+ assertTrue(so.isA("micronuclear_sequence", "sequence_attribute"));
+
+ // same thing by name / description:
+ assertTrue(so.isA("micronuclear_sequence", "SO:0000084"));
+ assertTrue(so.isA("SO:0000084", "micronuclear_sequence"));
+ assertTrue(so.isA("SO:0000084", "SO:0000084"));
+
+ // SO name to description:
+ assertTrue(so.isA("SO:0000084", "organelle_sequence"));
+ assertTrue(so.isA("SO:0000084", "sequence_location"));
+ assertTrue(so.isA("SO:0000084", "sequence_attribute"));
+
+ // description to SO name:
+ assertTrue(so.isA("micronuclear_sequence", "SO:0000736"));
+ assertTrue(so.isA("micronuclear_sequence", "SO:0000735"));
+ assertTrue(so.isA("micronuclear_sequence", "SO:0000400"));
+ }
+
+ @Test(groups = "Functional")
+ public void testIsCDS()
+ {
+ assertTrue(so.isA("CDS", "CDS"));
+ assertTrue(so.isA("CDS_predicted", "CDS"));
+ assertTrue(so.isA("transposable_element_CDS", "CDS"));
+ assertTrue(so.isA("edited_CDS", "CDS"));
+ assertTrue(so.isA("CDS_independently_known", "CDS"));
+ assertTrue(so.isA("CDS_fragment", "CDS"));
+ assertFalse(so.isA("CDS_region", "CDS"));// part_of
+ assertFalse(so.isA("polypeptide", "CDS")); // derives_from
+ }
+}