8c4a40dd6883f3e9f1475e97bbcbc566c219b58d
[jalview.git] / test / jalview / io / Gff3tests.java
1 package jalview.io;
2
3 import jalview.datamodel.Alignment;
4 import jalview.datamodel.AlignmentI;
5 import jalview.datamodel.SequenceDummy;
6 import jalview.datamodel.SequenceI;
7 import jalview.gui.AlignFrame;
8
9 import java.io.IOException;
10
11 import org.junit.Assert;
12 import org.junit.Test;
13
14 public class Gff3tests
15 {
16
17   private static String exonerateSeqs = "examples/testdata/exonerateseqs.fa",
18           exonerateOutput = "examples/testdata/exonerateoutput.gff",
19           simpleGff3file = "examples/testdata/simpleGff3.gff";
20
21   @Test
22   public void testExonerateImport()
23   {
24     // exonerate does not tag sequences after features, so we have a more
25     // conventional annotation import test here
26
27     FileLoader loader = new FileLoader(false);
28
29     AlignFrame af = loader.LoadFileWaitTillLoaded(exonerateSeqs,
30             FormatAdapter.FILE);
31
32     Assert.assertEquals("Unexpected number of DNA protein associations", 0,
33             af.getViewport().getAlignment().getCodonFrames().size());
34
35     af.loadJalviewDataFile(exonerateOutput, FormatAdapter.FILE, null, null);
36
37     Assert.assertNotEquals("Expected at least one DNA protein association",
38             0, af.getViewport().getAlignment().getDataset()
39                     .getCodonFrames().size());
40
41   }
42
43   @Test
44   public void simpleGff3() throws IOException
45   {
46     AlignmentI dataset = new Alignment(new SequenceI[]
47     {});
48     FeaturesFile ffile = new FeaturesFile(simpleGff3file,
49             FormatAdapter.FILE);
50
51     boolean parseResult = ffile.parse(dataset, null, null, false, false);
52     Assert.assertTrue("return result should be true", parseResult);
53     checkDatasetfromSimpleGff3(dataset);
54   }
55
56   @Test
57   public void simpleGff3RelaxedIdMatching() throws IOException
58   {
59     AlignmentI dataset = new Alignment(new SequenceI[]
60     {});
61     FeaturesFile ffile = new FeaturesFile(simpleGff3file,
62             FormatAdapter.FILE);
63
64     boolean parseResult = ffile.parse(dataset, null, null, false, true);
65     Assert.assertTrue("return result (relaxedID matching) should be true",
66             parseResult);
67     checkDatasetfromSimpleGff3(dataset);
68   }
69
70   private void checkDatasetfromSimpleGff3(AlignmentI dataset)
71   {
72     Assert.assertEquals("no sequences extracted from GFF3 file", 2,
73             dataset.getHeight());
74
75     SequenceI seq1 = dataset.findName("seq1"), seq2 = dataset
76             .findName("seq2");
77     Assert.assertNotNull(seq1);
78     Assert.assertNotNull(seq2);
79     Assert.assertFalse(
80             "Failed to replace dummy seq1 with real sequence",
81             seq1 instanceof SequenceDummy
82                     && ((SequenceDummy) seq1).isDummy());
83     Assert.assertFalse(
84             "Failed to replace dummy seq2 with real sequence",
85             seq2 instanceof SequenceDummy
86                     && ((SequenceDummy) seq2).isDummy());
87     String placeholderseq = new SequenceDummy("foo").getSequenceAsString();
88     Assert.assertFalse("dummy replacement buggy for seq1",
89             placeholderseq.equals(seq1.getSequenceAsString()));
90     Assert.assertNotEquals("dummy replacement buggy for seq2",
91             placeholderseq.equals(seq2.getSequenceAsString()));
92     Assert.assertNotNull("No features added to seq1",
93             seq1.getSequenceFeatures());// != null);
94     Assert.assertEquals("Wrong number of features", 3,
95             seq1.getSequenceFeatures().length);
96     Assert.assertNull(seq2.getSequenceFeatures());
97     Assert.assertEquals("Wrong number of features", 0, seq2
98             .getSequenceFeatures() == null ? 0
99             : seq2.getSequenceFeatures().length);
100
101   }
102   // @Test
103   // public final void testPrintGFFFormatSequenceIArrayMapOfStringObject()
104   // {
105   // fail("Not yet implemented");
106   // }
107   //
108   // @Test
109   // public final void testAlignFileBooleanStringString()
110   // {
111   // fail("Not yet implemented");
112   // }
113
114 }