X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fio%2FFileIOTester.java;h=48aae6ba24168d5b2d321be93950e8a7cab0e42b;hb=dc5a5883cfe90255079e41538e56bc433bd1e4a5;hp=5d10c35670a27bcedda3cd17766ab320cff981d3;hpb=ea7d610e641753af7bf54fc778a4c3564ae51014;p=jalview.git diff --git a/test/jalview/io/FileIOTester.java b/test/jalview/io/FileIOTester.java index 5d10c35..48aae6b 100644 --- a/test/jalview/io/FileIOTester.java +++ b/test/jalview/io/FileIOTester.java @@ -1,108 +1,179 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1) - * Copyright (C) 2014 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along with Jalview. If not, see . + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.io; -import static org.junit.Assert.*; +import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertTrue; +import java.io.BufferedInputStream; +import java.io.ByteArrayInputStream; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; +import java.io.StringBufferInputStream; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; +import org.testng.AssertJUnit; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import jalview.bin.Console; +import jalview.gui.JvOptionPane; /** * @author jimp - * + * */ public class FileIOTester { + @BeforeClass(alwaysRun = true) + public void setUpJvOptionPane() + { + JvOptionPane.setInteractiveMode(false); + JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); + } + /** * @throws java.lang.Exception */ - @BeforeClass + @BeforeClass(alwaysRun = true) public static void setUpBeforeClass() throws Exception { + Console.initLogger(); } /** * @throws java.lang.Exception */ - @AfterClass + @AfterClass(alwaysRun = true) public static void tearDownAfterClass() throws Exception { } + // TODO: make a better/more comprehensive test harness for identify/io - - final static File ALIGN_FILE = new File("test/jalview/io/test_gz_fasta.gz"); - final static File NOTGZALIGN_FILE = new File("test/jalview/io/test_gz_fasta_notgz.gz"); - final static File STARS_FA_FILE1 = new File("test/jalview/io/test_fasta_stars.fa"); - final static File STARS_FA_FILE2 = new File("test/jalview/io/test_fasta_stars2.fa"); - private void assertValidFormat(String fmt, String src, FileParse fp) + final static File ALIGN_FILE = new File( + "test/jalview/io/test_gz_fasta.gz"); + + final static File NOTGZALIGN_FILE = new File( + "test/jalview/io/test_gz_fasta_notgz.gz"); + + final static File STARS_FA_FILE1 = new File( + "test/jalview/io/test_fasta_stars.fa"); + + final static File STARS_FA_FILE2 = new File( + "test/jalview/io/test_fasta_stars2.fa"); + + private void assertValidFormat(FileFormatI fmt, String src, FileParse fp) + throws FileFormatException { - assertTrue("Couldn't resolve "+src+" as a valid file",fp.isValid()); - String type = new IdentifyFile().Identify(fp); - assertTrue("Data from '"+src+"' Expected to be '"+fmt+"' identified as '"+type+"'",type.equalsIgnoreCase(fmt)); + AssertJUnit.assertTrue("Couldn't resolve " + src + " as a valid file", + fp.isValid()); + FileFormatI type = new IdentifyFile().identify(fp); + AssertJUnit.assertSame("Data from '" + src + "' Expected to be '" + fmt + + "' identified as '" + type + "'", type, fmt); } - @Test + + @Test(groups = { "Functional" }) public void testStarsInFasta1() throws IOException { String uri; - FileParse fp = new FileParse(uri=STARS_FA_FILE1.getAbsoluteFile().toString(),AppletFormatAdapter.FILE); - assertValidFormat("FASTA", uri, fp); + FileParse fp = new FileParse( + uri = STARS_FA_FILE1.getAbsoluteFile().toString(), + DataSourceType.FILE); + assertValidFormat(FileFormat.Fasta, uri, fp); } - @Test + + @Test(groups = { "Functional" }) public void testStarsInFasta2() throws IOException { String uri; - FileParse fp = new FileParse(uri=STARS_FA_FILE2.getAbsoluteFile().toString(),AppletFormatAdapter.FILE); - assertValidFormat("FASTA", uri, fp); + FileParse fp = new FileParse( + uri = STARS_FA_FILE2.getAbsoluteFile().toString(), + DataSourceType.FILE); + assertValidFormat(FileFormat.Fasta, uri, fp); } - @Test + + @Test(groups = { "Functional" }) public void testGzipIo() throws IOException - { + { String uri; - FileParse fp = new FileParse(uri=ALIGN_FILE.getAbsoluteFile().toURI().toString(),AppletFormatAdapter.URL); - assertValidFormat("FASTA", uri, fp); + FileParse fp = new FileParse( + uri = ALIGN_FILE.getAbsoluteFile().toURI().toString(), + DataSourceType.URL); + assertValidFormat(FileFormat.Fasta, uri, fp); } - @Test + @Test(groups = { "Functional" }) public void testGziplocalFileIO() throws IOException { String filepath; - FileParse fp = new FileParse(filepath=ALIGN_FILE.getAbsoluteFile().toString(), AppletFormatAdapter.FILE); - assertValidFormat("FASTA",filepath, fp); + FileParse fp = new FileParse( + filepath = ALIGN_FILE.getAbsoluteFile().toString(), + DataSourceType.FILE); + assertValidFormat(FileFormat.Fasta, filepath, fp); } - @Test + + @Test(groups = { "Functional" }) + public void testIsGzipInputStream() throws IOException + { + InputStream is = new FileInputStream(ALIGN_FILE); + + /* + * first try fails - FileInputStream does not support mark/reset + */ + assertFalse(FileParse.isGzipStream(is)); + + /* + * wrap in a BufferedInputStream and try again + */ + is = new BufferedInputStream(is, 16); + assertTrue(FileParse.isGzipStream(is)); + + /* + * check recognition of non-gzipped input + */ + assertFalse(FileParse.isGzipStream(new BufferedInputStream( + new ByteArrayInputStream("NOT A GZIP".getBytes())))); + } + + @Test(groups = { "Functional" }) public void testNonGzipURLIO() throws IOException { String uri; - FileParse fp = new FileParse(uri=NOTGZALIGN_FILE.getAbsoluteFile().toURI().toString(),AppletFormatAdapter.URL); - assertValidFormat("FASTA",uri, fp); + FileParse fp = new FileParse( + uri = NOTGZALIGN_FILE.getAbsoluteFile().toURI().toString(), + DataSourceType.URL); + assertValidFormat(FileFormat.Fasta, uri, fp); } - @Test + + @Test(groups = { "Functional" }) public void testNonGziplocalFileIO() throws IOException { String filepath; - FileParse fp = new FileParse(filepath=NOTGZALIGN_FILE.getAbsoluteFile().toString(), AppletFormatAdapter.FILE); - assertValidFormat("FASTA",filepath, fp); + FileParse fp = new FileParse( + filepath = NOTGZALIGN_FILE.getAbsoluteFile().toString(), + DataSourceType.FILE); + assertValidFormat(FileFormat.Fasta, filepath, fp); } }