Clover icon

jalviewX

  1. Project Clover database Wed Oct 31 2018 15:13:58 GMT
  2. Package jalview.io

File AnnotationFileIOTest.java

 

Code metrics

2
34
4
1
168
119
7
0.21
8.5
4
1.75

Classes

Class Line # Actions
AnnotationFileIOTest 38 34 7 5
0.87587.5%
 

Contributing tests

This file is covered by 1 test. .

Source view

1    /*
2    * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3    * Copyright (C) $$Year-Rel$$ The Jalview Authors
4    *
5    * This file is part of Jalview.
6    *
7    * Jalview is free software: you can redistribute it and/or
8    * modify it under the terms of the GNU General Public License
9    * as published by the Free Software Foundation, either version 3
10    * of the License, or (at your option) any later version.
11    *
12    * Jalview is distributed in the hope that it will be useful, but
13    * WITHOUT ANY WARRANTY; without even the implied warranty
14    * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15    * PURPOSE. See the GNU General Public License for more details.
16    *
17    * You should have received a copy of the GNU General Public License
18    * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19    * The Jalview Authors are detailed in the 'AUTHORS' file.
20    */
21    package jalview.io;
22   
23    import static org.testng.AssertJUnit.assertNotNull;
24    import static org.testng.AssertJUnit.assertTrue;
25   
26    import jalview.datamodel.AlignmentI;
27    import jalview.datamodel.HiddenColumns;
28    import jalview.gui.JvOptionPane;
29    import jalview.io.AnnotationFile.ViewDef;
30   
31    import java.io.File;
32    import java.util.Hashtable;
33   
34    import org.testng.Assert;
35    import org.testng.annotations.BeforeClass;
36    import org.testng.annotations.Test;
37   
 
38    public class AnnotationFileIOTest
39    {
40   
 
41  1 toggle @BeforeClass(alwaysRun = true)
42    public void setUpJvOptionPane()
43    {
44  1 JvOptionPane.setInteractiveMode(false);
45  1 JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
46    }
47   
48    static String TestFiles[][] = {
49    { "Test example annotation import/export", "examples/uniref50.fa",
50    "examples/testdata/example_annot_file.jva" },
51    { "Test multiple combine annotation statements import/export",
52    "examples/uniref50.fa",
53    "examples/testdata/test_combine_annot.jva" },
54    {
55    "Test multiple combine annotation statements with sequence_ref import/export",
56    "examples/uniref50.fa", "examples/testdata/uniref50_iupred.jva" },
57    {
58    "Test group only annotation file parsing results in parser indicating annotation was parsed",
59    "examples/uniref50.fa", "examples/testdata/test_grpannot.jva" },
60    { "Test hiding/showing of insertions on sequence_ref",
61    "examples/uniref50.fa", "examples/testdata/uniref50_seqref.jva" } };
62   
 
63  1 toggle @Test(groups = { "Functional" })
64    public void exampleAnnotationFileIO() throws Exception
65    {
66  1 for (String[] testPair : TestFiles)
67    {
68  5 testAnnotationFileIO(testPair[0], new File(testPair[1]), new File(
69    testPair[2]));
70    }
71    }
72   
 
73  10 toggle AlignmentI readAlignmentFile(File f)
74    {
75  10 System.out.println("Reading file: " + f);
76  10 String ff = f.getPath();
77  10 try
78    {
79  10 FormatAdapter rf = new FormatAdapter();
80   
81  10 AlignmentI al = rf.readFile(ff, DataSourceType.FILE,
82    new IdentifyFile().identify(ff, DataSourceType.FILE));
83   
84    // make sure dataset is initialised ? not sure about this
85  160 for (int i = 0; i < al.getSequencesArray().length; ++i)
86    {
87  150 al.getSequenceAt(i).createDatasetSequence();
88    }
89  10 assertNotNull("Couldn't read supplied alignment data.", al);
90  10 return al;
91    } catch (Exception e)
92    {
93  0 e.printStackTrace();
94    }
95  0 Assert.fail("Couln't read the alignment in file '" + f.toString() + "'");
96  0 return null;
97    }
98   
99    /**
100    * test alignment data in given file can be imported, exported and reimported
101    * with no dataloss
102    *
103    * @param f
104    * - source datafile (IdentifyFile.identify() should work with it)
105    * @param ioformat
106    * - label for IO class used to write and read back in the data from
107    * f
108    */
 
109  5 toggle void testAnnotationFileIO(String testname, File f,
110    File annotFile)
111    {
112  5 System.out.println("Test: " + testname + "\nReading annotation file '"
113    + annotFile + "' onto : " + f);
114  5 String af = annotFile.getPath();
115  5 try
116    {
117  5 AlignmentI al = readAlignmentFile(f);
118  5 HiddenColumns cs = new HiddenColumns();
119  5 assertTrue(
120    "Test "
121    + testname
122    + "\nAlignment was not annotated - annotation file not imported.",
123    new AnnotationFile().readAnnotationFile(al, cs, af,
124    DataSourceType.FILE));
125   
126  5 AnnotationFile aff = new AnnotationFile();
127    // ViewDef is not used by Jalview
128  5 ViewDef v = aff.new ViewDef(null, al.getHiddenSequences(), cs,
129    new Hashtable());
130  5 String anfileout = new AnnotationFile().printAnnotations(
131    al.getAlignmentAnnotation(), al.getGroups(),
132    al.getProperties(), null, al, v);
133  5 assertTrue(
134    "Test "
135    + testname
136    + "\nAlignment annotation file was not regenerated. Null string",
137    anfileout != null);
138  5 assertTrue(
139    "Test "
140    + testname
141    + "\nAlignment annotation file was not regenerated. Empty string",
142    anfileout.length() > "JALVIEW_ANNOTATION".length());
143   
144  5 System.out.println("Output annotation file:\n" + anfileout
145    + "\n<<EOF\n");
146   
147  5 AlignmentI al_new = readAlignmentFile(f);
148  5 assertTrue(
149    "Test "
150    + testname
151    + "\nregenerated annotation file did not annotate alignment.",
152    new AnnotationFile().readAnnotationFile(al_new, anfileout,
153    DataSourceType.PASTE));
154   
155    // test for consistency in io
156  5 StockholmFileTest.testAlignmentEquivalence(al, al_new, false, false,
157    false);
158  5 return;
159    } catch (Exception e)
160    {
161  0 e.printStackTrace();
162    }
163  0 Assert.fail("Test "
164    + testname
165    + "\nCouldn't complete Annotation file roundtrip input/output/input test for '"
166    + annotFile + "'.");
167    }
168    }