Clover icon

Coverage Report

  1. Project Clover database Mon Sep 2 2024 17:57:51 BST
  2. Package jalview.io

File FileIOTester.java

 

Code metrics

0
29
11
1
179
115
11
0.38
2.64
11
1

Classes

Class Line # Actions
FileIOTester 46 29 11
1.0100%
 

Contributing tests

This file is covered by 7 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.Assert.assertFalse;
24    import static org.testng.Assert.assertTrue;
25   
26    import java.io.BufferedInputStream;
27    import java.io.ByteArrayInputStream;
28    import java.io.File;
29    import java.io.FileInputStream;
30    import java.io.IOException;
31    import java.io.InputStream;
32    import java.io.StringBufferInputStream;
33   
34    import org.testng.AssertJUnit;
35    import org.testng.annotations.AfterClass;
36    import org.testng.annotations.BeforeClass;
37    import org.testng.annotations.Test;
38   
39    import jalview.bin.Console;
40    import jalview.gui.JvOptionPane;
41   
42    /**
43    * @author jimp
44    *
45    */
 
46    public class FileIOTester
47    {
48   
 
49  1 toggle @BeforeClass(alwaysRun = true)
50    public void setUpJvOptionPane()
51    {
52  1 JvOptionPane.setInteractiveMode(false);
53  1 JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
54    }
55   
56    /**
57    * @throws java.lang.Exception
58    */
 
59  1 toggle @BeforeClass(alwaysRun = true)
60    public static void setUpBeforeClass() throws Exception
61    {
62  1 Console.initLogger();
63    }
64   
65    /**
66    * @throws java.lang.Exception
67    */
 
68  1 toggle @AfterClass(alwaysRun = true)
69    public static void tearDownAfterClass() throws Exception
70    {
71    }
72   
73    // TODO: make a better/more comprehensive test harness for identify/io
74   
75    final static File ALIGN_FILE = new File(
76    "test/jalview/io/test_gz_fasta.gz");
77   
78    final static File NOTGZALIGN_FILE = new File(
79    "test/jalview/io/test_gz_fasta_notgz.gz");
80   
81    final static File STARS_FA_FILE1 = new File(
82    "test/jalview/io/test_fasta_stars.fa");
83   
84    final static File STARS_FA_FILE2 = new File(
85    "test/jalview/io/test_fasta_stars2.fa");
86   
 
87  6 toggle private void assertValidFormat(FileFormatI fmt, String src, FileParse fp)
88    throws FileFormatException
89    {
90  6 AssertJUnit.assertTrue("Couldn't resolve " + src + " as a valid file",
91    fp.isValid());
92  6 FileFormatI type = new IdentifyFile().identify(fp);
93  6 AssertJUnit.assertSame("Data from '" + src + "' Expected to be '" + fmt
94    + "' identified as '" + type + "'", type, fmt);
95    }
96   
 
97  1 toggle @Test(groups = { "Functional" })
98    public void testStarsInFasta1() throws IOException
99    {
100  1 String uri;
101  1 FileParse fp = new FileParse(
102    uri = STARS_FA_FILE1.getAbsoluteFile().toString(),
103    DataSourceType.FILE);
104  1 assertValidFormat(FileFormat.Fasta, uri, fp);
105    }
106   
 
107  1 toggle @Test(groups = { "Functional" })
108    public void testStarsInFasta2() throws IOException
109    {
110  1 String uri;
111  1 FileParse fp = new FileParse(
112    uri = STARS_FA_FILE2.getAbsoluteFile().toString(),
113    DataSourceType.FILE);
114  1 assertValidFormat(FileFormat.Fasta, uri, fp);
115    }
116   
 
117  1 toggle @Test(groups = { "Functional" })
118    public void testGzipIo() throws IOException
119    {
120  1 String uri;
121  1 FileParse fp = new FileParse(
122    uri = ALIGN_FILE.getAbsoluteFile().toURI().toString(),
123    DataSourceType.URL);
124  1 assertValidFormat(FileFormat.Fasta, uri, fp);
125    }
126   
 
127  1 toggle @Test(groups = { "Functional" })
128    public void testGziplocalFileIO() throws IOException
129    {
130  1 String filepath;
131  1 FileParse fp = new FileParse(
132    filepath = ALIGN_FILE.getAbsoluteFile().toString(),
133    DataSourceType.FILE);
134  1 assertValidFormat(FileFormat.Fasta, filepath, fp);
135    }
136   
 
137  1 toggle @Test(groups = { "Functional" })
138    public void testIsGzipInputStream() throws IOException
139    {
140  1 InputStream is = new FileInputStream(ALIGN_FILE);
141   
142    /*
143    * first try fails - FileInputStream does not support mark/reset
144    */
145  1 assertFalse(FileParse.isGzipStream(is));
146   
147    /*
148    * wrap in a BufferedInputStream and try again
149    */
150  1 is = new BufferedInputStream(is, 16);
151  1 assertTrue(FileParse.isGzipStream(is));
152   
153    /*
154    * check recognition of non-gzipped input
155    */
156  1 assertFalse(FileParse.isGzipStream(new BufferedInputStream(
157    new ByteArrayInputStream("NOT A GZIP".getBytes()))));
158    }
159   
 
160  1 toggle @Test(groups = { "Functional" })
161    public void testNonGzipURLIO() throws IOException
162    {
163  1 String uri;
164  1 FileParse fp = new FileParse(
165    uri = NOTGZALIGN_FILE.getAbsoluteFile().toURI().toString(),
166    DataSourceType.URL);
167  1 assertValidFormat(FileFormat.Fasta, uri, fp);
168    }
169   
 
170  1 toggle @Test(groups = { "Functional" })
171    public void testNonGziplocalFileIO() throws IOException
172    {
173  1 String filepath;
174  1 FileParse fp = new FileParse(
175    filepath = NOTGZALIGN_FILE.getAbsoluteFile().toString(),
176    DataSourceType.FILE);
177  1 assertValidFormat(FileFormat.Fasta, filepath, fp);
178    }
179    }