be074854b2fe9de0c5c4f72585142ee857d586e1
[jalview.git] / test / jalview / ext / so / SequenceOntologyTest.java
1 package jalview.ext.so;
2
3 import static org.testng.AssertJUnit.assertFalse;
4 import static org.testng.AssertJUnit.assertTrue;
5
6 import jalview.ext.so.SequenceOntology;
7 import jalview.io.gff.SequenceOntologyFactory;
8 import jalview.io.gff.SequenceOntologyI;
9
10 import org.testng.annotations.AfterClass;
11 import org.testng.annotations.BeforeClass;
12 import org.testng.annotations.Test;
13
14 public class SequenceOntologyTest
15 {
16   private SequenceOntologyI so;
17
18   @BeforeClass
19   public void setUp() {
20     long now = System.currentTimeMillis();
21     SequenceOntologyFactory.setInstance(new SequenceOntology());
22     long elapsed = System.currentTimeMillis() - now;
23     System.out.println("Load and cache of Sequence Ontology took "
24             + elapsed + "ms");
25     so = SequenceOntologyFactory.getInstance();
26   }
27
28   @AfterClass
29   public void tearDown()
30   {
31     SequenceOntologyFactory.setInstance(null);
32   }
33
34   @Test(groups = "Functional")
35   public void testIsA()
36   {
37     assertFalse(so.isA(null, null));
38     assertFalse(so.isA(null, "SO:0000087"));
39     assertFalse(so.isA("SO:0000087", null));
40     assertFalse(so.isA("complete", "garbage"));
41
42     assertTrue(so.isA("SO:0000087", "SO:0000704"));
43     assertFalse(so.isA("SO:0000704", "SO:0000087"));
44     assertTrue(so.isA("SO:0000736", "SO:0000735"));
45
46     // same thing:
47     assertTrue(so.isA("micronuclear_sequence", "micronuclear_sequence"));
48     // direct parent:
49     assertTrue(so.isA("micronuclear_sequence", "organelle_sequence"));
50     // grandparent:
51     assertTrue(so.isA("micronuclear_sequence", "sequence_location"));
52     // great-grandparent:
53     assertTrue(so.isA("micronuclear_sequence", "sequence_attribute"));
54
55     // same thing by name / description:
56     assertTrue(so.isA("micronuclear_sequence", "SO:0000084"));
57     assertTrue(so.isA("SO:0000084", "micronuclear_sequence"));
58     assertTrue(so.isA("SO:0000084", "SO:0000084"));
59
60     // SO name to description:
61     assertTrue(so.isA("SO:0000084", "organelle_sequence"));
62     assertTrue(so.isA("SO:0000084", "sequence_location"));
63     assertTrue(so.isA("SO:0000084", "sequence_attribute"));
64
65     // description to SO name:
66     assertTrue(so.isA("micronuclear_sequence", "SO:0000736"));
67     assertTrue(so.isA("micronuclear_sequence", "SO:0000735"));
68     assertTrue(so.isA("micronuclear_sequence", "SO:0000400"));
69   }
70
71   @Test(groups = "Functional")
72   public void testIsCDS()
73   {
74     assertTrue(so.isA("CDS", "CDS"));
75     assertTrue(so.isA("CDS_predicted", "CDS"));
76     assertTrue(so.isA("transposable_element_CDS", "CDS"));
77     assertTrue(so.isA("edited_CDS", "CDS"));
78     assertTrue(so.isA("CDS_independently_known", "CDS"));
79     assertTrue(so.isA("CDS_fragment", "CDS"));
80     assertFalse(so.isA("CDS_region", "CDS"));// part_of
81     assertFalse(so.isA("polypeptide", "CDS")); // derives_from
82   }
83 }