package jalview.ext.so; import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertTrue; import jalview.ext.so.SequenceOntology; import jalview.io.gff.SequenceOntologyFactory; import jalview.io.gff.SequenceOntologyI; 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 } }