develop merge
[jalview.git] / test / jalview / io / gff / SequenceOntologyTest.java
diff --git a/test/jalview/io/gff/SequenceOntologyTest.java b/test/jalview/io/gff/SequenceOntologyTest.java
new file mode 100644 (file)
index 0000000..0b72515
--- /dev/null
@@ -0,0 +1,79 @@
+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
+  }
+}