Merge branch 'develop' into features/JAL-3010ontologyFeatureSettings
[jalview.git] / test / jalview / io / gff / SequenceOntologyLiteTest.java
1 package jalview.io.gff;
2
3 import static org.testng.Assert.assertEquals;
4 import static org.testng.Assert.assertFalse;
5 import static org.testng.Assert.assertNull;
6 import static org.testng.Assert.assertTrue;
7
8 import jalview.datamodel.ontology.OntologyI;
9
10 import java.util.Arrays;
11 import java.util.Collections;
12 import java.util.HashSet;
13 import java.util.List;
14 import java.util.Set;
15
16 import org.testng.annotations.BeforeClass;
17 import org.testng.annotations.Test;
18
19 public class SequenceOntologyLiteTest
20 {
21   private OntologyI so;
22
23   @BeforeClass(alwaysRun = true)
24   public void setUp()
25   {
26     so = new SequenceOntologyLite();
27   }
28
29   @Test(groups = "Functional")
30   public void testIsA_sequenceVariant()
31   {
32     assertFalse(so.isA("CDS", "sequence_variant"));
33     assertTrue(so.isA("sequence_variant", "sequence_variant"));
34
35     /*
36      * these should all be sub-types of sequence_variant
37      */
38     assertTrue(so.isA("structural_variant", "sequence_variant"));
39     assertTrue(so.isA("feature_variant", "sequence_variant"));
40     assertTrue(so.isA("gene_variant", "sequence_variant"));
41     assertTrue(so.isA("transcript_variant", "sequence_variant"));
42     assertTrue(so.isA("NMD_transcript_variant", "sequence_variant"));
43     assertTrue(so.isA("missense_variant", "sequence_variant"));
44     assertTrue(so.isA("synonymous_variant", "sequence_variant"));
45     assertTrue(so.isA("frameshift_variant", "sequence_variant"));
46     assertTrue(so.isA("5_prime_UTR_variant", "sequence_variant"));
47     assertTrue(so.isA("3_prime_UTR_variant", "sequence_variant"));
48     assertTrue(so.isA("stop_gained", "sequence_variant"));
49     assertTrue(so.isA("stop_lost", "sequence_variant"));
50     assertTrue(so.isA("inframe_deletion", "sequence_variant"));
51     assertTrue(so.isA("inframe_insertion", "sequence_variant"));
52     assertTrue(so.isA("splice_region_variant", "sequence_variant"));
53   }
54
55   @Test(groups = "Functional")
56   public void testGetParentTerms()
57   {
58     Set<String> terms = new HashSet<>();
59     terms.add("sequence_variant");
60     terms.add("NMD_transcript_variant");
61     terms.add("stop_lost");
62     terms.add("chain"); // not an SO term
63   
64     Set<String> parents = so.getParentTerms(terms);
65     assertEquals(parents.size(), 2);
66     assertTrue(parents.contains("sequence_variant"));
67     assertTrue(parents.contains("chain"));
68   }
69
70   @Test(groups = "Functional")
71   public void testGetChildTerms()
72   {
73     List<String> terms = Collections.<String> emptyList();
74     List<String> children = so.getChildTerms("exon", terms);
75     assertTrue(children.isEmpty());
76
77     terms = Arrays.asList("gene", "transcript", "snRNA", "junk", "mRNA");
78     children = so.getChildTerms("exon", terms);
79     assertTrue(children.isEmpty());
80     children = so.getChildTerms("transcript", terms);
81     assertEquals(children.size(), 2);
82     assertTrue(children.contains("snRNA"));
83     assertTrue(children.contains("mRNA"));
84
85     terms = Arrays.asList("gene", "transcript", "synonymous_variant",
86             "stop_lost", "chain");
87     children = so.getChildTerms("sequence_variant", terms);
88     assertEquals(children.size(), 2);
89     assertTrue(children.contains("synonymous_variant"));
90     assertTrue(children.contains("stop_lost"));
91   }
92
93   @Test(groups = "Functional")
94   public void testGetRootParents()
95   {
96     List<String> roots = so.getRootParents("xyz");
97     assertNull(roots);
98     roots = so.getRootParents(null);
99     assertNull(roots);
100
101     roots = so.getRootParents("stop_gained");
102     assertEquals(roots.size(), 1);
103     assertEquals(roots.get(0), "sequence_variant");
104   }
105 }