JAL-1499 slight refactoring of handling interleaved data blocks
[jalview.git] / test / jalview / io / MegaFileTest.java
index 4a3918e..860a898 100644 (file)
@@ -74,7 +74,8 @@ public class MegaFileTest
           + "!TITLE Interleaved sequence data\n\n"
           + "#U455   ABCDEF\n" 
           + "#CPZANT  MNOPQR\n\n"
-          + "#U456   KLMNOP\n";
+          + "#U455   GHIJKL\n" 
+          + "#U456   KLMNOP\n"; // wossis?
 
   // interleaved with description, bases/gaps in triplet groups
   private static final String INTERLEAVED_WITH_DESCRIPTION = 
@@ -1019,4 +1020,35 @@ public class MegaFileTest
     assertEquals("Noncoding", MegaFile.getPropertyFromAnnotation(3, aa));
     assertEquals("Coding", MegaFile.getPropertyFromAnnotation(4, aa));
   }
+
+  //@formatter:on
+  
+  /**
+   * Test parse of interleaved data with no blank lines to separate blocks of
+   * sequence data; to confirm we can handle this correctly
+   * 
+   * @throws IOException
+   */
+  @Test(groups = { "Functional" })
+  public void testParse_interleaved_noBlankLines() throws IOException
+  {
+    String data = INTERLEAVED.replace("\n\n", "\n");
+    MegaFile testee = new MegaFile(data, AppletFormatAdapter.PASTE);
+    assertEquals("Title not as expected", "Interleaved sequence data",
+            testee.getAlignmentProperty(MegaFile.PROP_TITLE));
+    Vector<SequenceI> seqs = testee.getSeqs();
+    // should be 2 sequences
+    assertEquals("Expected two sequences", 2, seqs.size());
+    // check sequence names correct and order preserved
+    assertEquals("First sequence id wrong", "U455", seqs.get(0).getName());
+    assertEquals("Second sequence id wrong", "CPZANT", seqs.get(1)
+            .getName());
+    // check sequence data
+    assertEquals("First sequence data wrong", "ABCDEFKLMNOP", seqs.get(0)
+            .getSequenceAsString());
+    assertEquals("Second sequence data wrong", "MNOPQRWXYZGC", seqs.get(1)
+            .getSequenceAsString());
+    assertTrue("File format is not flagged as interleaved",
+            testee.isInterleaved());
+  }
 }