Clover icon

Coverage Report

  1. Project Clover database Fri Dec 6 2024 13:47:14 GMT
  2. Package jalview.io

File IdentifyFileTest.java

 

Code metrics

2
33
7
1
197
121
9
0.27
4.71
7
1.29

Classes

Class Line # Actions
IdentifyFileTest 36 33 9
0.6428571364.3%
 

Contributing tests

This file is covered by 23 tests. .

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.assertFalse;
24    import static org.testng.AssertJUnit.assertSame;
25    import static org.testng.AssertJUnit.assertTrue;
26   
27    import java.io.FileNotFoundException;
28   
29    import org.testng.Assert;
30    import org.testng.annotations.BeforeClass;
31    import org.testng.annotations.DataProvider;
32    import org.testng.annotations.Test;
33   
34    import jalview.gui.JvOptionPane;
35   
 
36    public class IdentifyFileTest
37    {
38   
 
39  1 toggle @BeforeClass(alwaysRun = true)
40    public void setUpJvOptionPane()
41    {
42  1 JvOptionPane.setInteractiveMode(false);
43  1 JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
44    }
45   
 
46  22 toggle @Test(groups = { "Functional" }, dataProvider = "identifyFiles")
47    public void testIdentify(String data, FileFormatI expectedFileType)
48    throws FileFormatException, FileNotFoundException
49    {
50  22 DataSourceType protocol = DataSourceType.FILE;
51  22 IdentifyFile ider = new IdentifyFile();
52  22 FileFormatI actualFiletype = ider.identify(data, protocol);
53  22 Assert.assertSame(actualFiletype, expectedFileType,
54    "File identification Failed!");
55    }
56   
57    /**
58    * Additional tests for Jalview features file
59    *
60    * @throws FileFormatException
61    */
 
62  1 toggle @Test(groups = "Functional")
63    public void testIdentify_featureFile()
64    throws FileFormatException, FileNotFoundException
65    {
66  1 IdentifyFile ider = new IdentifyFile();
67   
68    /*
69    * Jalview format with features only, no feature colours
70    */
71  1 String data = "Iron-sulfur (2Fe-2S)\tFER_CAPAA\t-1\t39\t39\tMETAL\n"
72    + "Iron-phosphorus (2Fe-P)\tID_NOT_SPECIFIED\t2\t86\t87\tMETALLIC\n";
73  1 assertSame(FileFormat.Features,
74    ider.identify(data, DataSourceType.PASTE));
75   
76    /*
77    * Jalview feature colour followed by GFF format feature data
78    */
79  1 data = "METAL\tcc9900\n" + "GFF\n"
80    + "FER_CAPAA\tuniprot\tMETAL\t44\t45\t4.0\t.\t.\n";
81  1 assertSame(FileFormat.Features,
82    ider.identify(data, DataSourceType.PASTE));
83   
84    /*
85    * Feature with '<' in the name (JAL-2098)
86    */
87  1 data = "kD < 3\tred\n" + "Low kD\tFER_CAPAA\t-1\t39\t39\tkD < 3\n";
88  1 assertSame(FileFormat.Features,
89    ider.identify(data, DataSourceType.PASTE));
90    }
91   
 
92  1 toggle @DataProvider(name = "identifyFiles")
93    public Object[][] IdentifyFileDP()
94    {
95  1 return new Object[][] { { "examples/example.json", FileFormat.Json },
96    { "examples/plantfdx.fa", FileFormat.Fasta },
97    { "examples/dna_interleaved.phy", FileFormat.Phylip },
98    { "examples/2GIS.pdb", FileFormat.PDB },
99    { "examples/RF00031_folded.stk", FileFormat.Stockholm },
100    { "examples/testdata/test.rnaml", FileFormat.Rnaml },
101    { "examples/testdata/test.aln", FileFormat.Clustal },
102    { "examples/testdata/test.pfam", FileFormat.Pfam },
103    { "examples/testdata/test.msf", FileFormat.MSF },
104    { "examples/testdata/test.pir", FileFormat.PIR },
105    { "examples/testdata/test.html", FileFormat.Html },
106    { "examples/testdata/test.pileup", FileFormat.Pileup },
107    { "examples/testdata/test.blc", FileFormat.BLC },
108    { "test/jalview/io/J03321.embl.txt", FileFormat.Embl },
109    { "test/jalview/io/J03321.gb", FileFormat.GenBank },
110    { "examples/exampleFeatures.txt", FileFormat.Features },
111    { "examples/testdata/simpleGff3.gff", FileFormat.Features },
112    { "examples/testdata/test.jvp", FileFormat.Jalview },
113    { "examples/testdata/test.cif", FileFormat.MMCif },
114    { "examples/testdata/cullpdb_pc25_res3.0_R0.3_d150729_chains9361.fasta.15316",
115    FileFormat.Fasta },
116    { "resources/scoreModel/pam250.scm", FileFormat.ScoreMatrix },
117    { "resources/scoreModel/blosum80.scm", FileFormat.ScoreMatrix }
118    // { "examples/testdata/test.amsa", "AMSA" },
119    // { "examples/test.jnet", "JnetFile" },
120    };
121    }
122   
 
123  1 toggle @Test(groups = "Functional")
124    public void testLooksLikeFeatureData()
125    {
126  1 IdentifyFile id = new IdentifyFile();
127  1 assertFalse(id.looksLikeFeatureData(null));
128  1 assertFalse(id.looksLikeFeatureData(""));
129    // too few columns:
130  1 assertFalse(id.looksLikeFeatureData("1 \t 2 \t 3 \t 4 \t 5"));
131    // GFF format:
132  1 assertTrue(
133    id.looksLikeFeatureData("Seq1\tlocal\tHelix\t2456\t2462\tss"));
134    // Jalview format:
135  1 assertTrue(id.looksLikeFeatureData("Helix\tSeq1\t-1\t2456\t2462\tss"));
136    // non-numeric start column:
137  1 assertFalse(id.looksLikeFeatureData("Helix\tSeq1\t-1\t.\t2462\tss"));
138    // non-numeric start column:
139  1 assertFalse(id.looksLikeFeatureData("Helix\tSeq1\t-1\t2456\t.\tss"));
140    }
141   
 
142  0 toggle @Test(groups = "Network", dataProvider = "urlTargetsAndExceptions")
143    public void testExceptions(String url,
144    Class<? extends Exception> expectedExceptionClass,
145    FileFormatI expectedFormat)
146    {
147  0 Class<? extends Exception> actualExceptionClass = null;
148  0 FileFormatI actualFormat = null;
149  0 try
150    {
151  0 actualFormat = new IdentifyFile().identify(url, DataSourceType.URL);
152    } catch (FileFormatException | FileNotFoundException e)
153    {
154  0 Assert.assertNull(expectedFormat,
155    "Exception occurred when expecting an identifiable format.");
156  0 Assert.assertNotNull(expectedExceptionClass,
157    "An unexpected exception occurred: '" + e.getMessage() + "'");
158  0 Assert.assertEquals(e.getClass(), expectedExceptionClass,
159    "Got the wrong kind of exception.");
160  0 actualExceptionClass = e.getClass();
161    }
162   
163  0 if (expectedExceptionClass != null)
164    {
165  0 Assert.assertEquals(actualExceptionClass, expectedExceptionClass,
166    "Expected an exception but got the wrong one.");
167    }
168   
169    }
170   
 
171  0 toggle @DataProvider(name = "urlTargetsAndExceptions")
172    public Object[][] urlTargetsAndExceptions()
173    {
174    /*
175    String targetUrl,
176    String finalUrl,
177    String foundInFirstLine,
178    */
179  0 return new Object[][] {
180    //
181    /*
182    { "http://jalview.org/examples/uniref50.fa", null,
183    FileFormat.Fasta },
184    { "https://www.jalview.org/examples/NOFILE.fa",
185    FileNotFoundException.class, null },
186    { "https://NOSERVER.jalview.org/", FileNotFoundException.class,
187    null },
188    */
189    { "https://www.jalview.org/schools/Jalview_Schools_Workbook_200.jpg",
190    FileFormatException.class, null },
191    /*
192    */
193    //
194    };
195    }
196   
197    }