JAL-2189 format help
[jalview.git] / test / jalview / io / gff / GffHelperFactoryTest.java
1 package jalview.io.gff;
2
3 import static org.testng.AssertJUnit.assertNull;
4 import static org.testng.AssertJUnit.assertSame;
5 import static org.testng.AssertJUnit.assertTrue;
6
7 import org.testng.annotations.Test;
8
9 public class GffHelperFactoryTest
10 {
11
12   @Test(groups = "Functional")
13   public void testGetHelper()
14   {
15     assertNull(GffHelperFactory.getHelper(null));
16
17     String tabRegex = "\\t";
18
19     /*
20      * column 3 = 'similarity' indicates exonerate GFF alignment data
21      */
22     String gff = "submitted\taffine:local\tsimilarity\t20\t30\t99\t+\t.\t";
23     // no attributes (column 9 data):
24     assertTrue(GffHelperFactory.getHelper(gff.split(tabRegex)) instanceof Gff2Helper);
25
26     // attributes set but unhandled featureGroup - get generic handler
27     gff = "submitted\taffine:local\tsimilarity\t20\t30\t99\t+\t.\tID=$1";
28     assertSame(GffHelperFactory.getHelper(gff.split(tabRegex)).getClass(),
29             Gff3Helper.class);
30
31     // handled featureGroup (exonerate model) values
32     gff = "submitted\texonerate:protein2dna:local\tsimilarity\t20\t30\t99\t+\t.\tID=$1";
33     assertTrue(GffHelperFactory.getHelper(gff.split(tabRegex)) instanceof ExonerateHelper);
34
35     gff = "submitted\tprotein2genome\tsimilarity\t20\t30\t99\t+\t.\tID=$1";
36     assertTrue(GffHelperFactory.getHelper(gff.split(tabRegex)) instanceof ExonerateHelper);
37
38     gff = "submitted\tcoding2coding\tsimilarity\t20\t30\t99\t+\t.\tID=$1";
39     assertTrue(GffHelperFactory.getHelper(gff.split(tabRegex)) instanceof ExonerateHelper);
40
41     gff = "submitted\tcoding2genome\tsimilarity\t20\t30\t99\t+\t.\tID=$1";
42     assertTrue(GffHelperFactory.getHelper(gff.split(tabRegex)) instanceof ExonerateHelper);
43
44     gff = "submitted\tcdna2genome\tsimilarity\t20\t30\t99\t+\t.\tID=$1";
45     assertTrue(GffHelperFactory.getHelper(gff.split(tabRegex)) instanceof ExonerateHelper);
46
47     gff = "submitted\tgenome2genome\tsimilarity\t20\t30\t99\t+\t.\tID=$1";
48     assertTrue(GffHelperFactory.getHelper(gff.split(tabRegex)) instanceof ExonerateHelper);
49
50     // not case-sensitive:
51     gff = "submitted\tgenome2genome\tSIMILARITY\t20\t30\t99\t+\t.\tID=$1";
52     assertTrue(GffHelperFactory.getHelper(gff.split(tabRegex)) instanceof ExonerateHelper);
53
54     /*
55      * InterProScan has 'protein_match' in column 3
56      */
57     gff = "Submitted\tPANTHER\tprotein_match\t1\t1174\t0.0\t+\t.\tName=PTHR32154";
58     assertTrue(GffHelperFactory.getHelper(gff.split(tabRegex)) instanceof InterProScanHelper);
59
60     /*
61      * nothing specific - return the generic GFF3 class if Name=Value is present in col9
62      */
63     gff = "nothing\tinteresting\there\t20\t30\t99\t+\t.\tID=1";
64     GffHelperI helper = GffHelperFactory.getHelper(gff.split(tabRegex));
65     assertSame(helper.getClass(), Gff3Helper.class);
66
67     // return the generic GFF2 class if "Name Value" is present in col9
68     gff = "nothing\tinteresting\there\t20\t30\t99\t+\t.\tID 1";
69     helper = GffHelperFactory.getHelper(gff.split(tabRegex));
70     assertSame(helper.getClass(), Gff2Helper.class);
71   }
72 }