X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fio%2FAnnotationFileIOTest.java;fp=test%2Fjalview%2Fio%2FAnnotationFileIOTest.java;h=2aed08bd2c8fec0729ef6543c007a4a4aef35550;hb=597f27e694edb7a0770bc51c902a444dcd4db82c;hp=0000000000000000000000000000000000000000;hpb=001636f00e52e74080d8f48c1c59172141502e93;p=jalview.git diff --git a/test/jalview/io/AnnotationFileIOTest.java b/test/jalview/io/AnnotationFileIOTest.java new file mode 100644 index 0000000..2aed08b --- /dev/null +++ b/test/jalview/io/AnnotationFileIOTest.java @@ -0,0 +1,90 @@ +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 + 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<