package jalview.io; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import jalview.datamodel.AlignmentI; import java.io.File; import org.junit.Test; public class AnnotationFileIOTest { static String TestFiles[][] = {{ "Test example annotation import/export","examples/uniref50.fa", "examples/testdata/example_annot_file.jva" } ,{"Test multiple combine annotation statements import/export","examples/uniref50.fa", "examples/testdata/test_combine_annot.jva"} ,{"Test multiple combine annotation statements with sequence_ref import/export","examples/uniref50.fa", "examples/testdata/uniref50_iupred.jva"}}; @Test public void exampleAnnotationFileIO() throws Exception { for (String[] testPair:TestFiles) { testAnnotationFileIO(testPair[0], new File(testPair[1]), new File(testPair[2])); } } public static AlignmentI readAlignmentFile(File f) { System.out.println("Reading file: " + f); String ff = f.getPath(); try { FormatAdapter rf = new FormatAdapter(); AlignmentI al = rf.readFile(ff, AppletFormatAdapter.FILE, new IdentifyFile().Identify(ff, AppletFormatAdapter.FILE)); // make sure dataset is initialised ? not sure about this for (int i = 0; i < al.getSequencesArray().length; ++i) { al.getSequenceAt(i).setDatasetSequence(al.getSequenceAt(i).createDatasetSequence()); } assertNotNull("Couldn't read supplied alignment data.", al); return al; } catch (Exception e) { e.printStackTrace(); } fail("Couln't read the alignment in file '"+f.toString()+"'"); return null; } /** * test alignment data in given file can be imported, exported and reimported * with no dataloss * * @param f * - source datafile (IdentifyFile.identify() should work with it) * @param ioformat * - label for IO class used to write and read back in the data from * f */ public static void testAnnotationFileIO(String testname, File f, File annotFile) { System.out.println("Test: "+testname+"\nReading annotation file '"+annotFile+"' onto : " + f); String af = annotFile.getPath(); try { AlignmentI al = readAlignmentFile(f); assertTrue("Test "+testname+"\nAlignment was not annotated - annotation file not imported.",new AnnotationFile().readAnnotationFile(al, af, FormatAdapter.FILE)); String anfileout = new AnnotationFile().printAnnotations(al.getAlignmentAnnotation(), al.getGroups(), al.getProperties()); assertTrue("Test "+testname+"\nAlignment annotation file was not regenerated. Null string",anfileout!=null); assertTrue("Test "+testname+"\nAlignment annotation file was not regenerated. Empty string",anfileout.length()>"JALVIEW_ANNOTATION".length()); System.out.println("Output annotation file:\n"+anfileout+"\n<