+ String outputfile = rf.formatSequences(ioformat, al, true);
+ System.out.println("Output file in '" + ioformat + "':\n"
+ + outputfile + "\n<<EOF\n");
+ // test for consistency in io
+ Alignment al_input = new AppletFormatAdapter().readFile(outputfile,
+ AppletFormatAdapter.PASTE, ioformat);
+ assertNotNull("Couldn't parse reimported alignment data.", al_input);
+
+ String identifyoutput = new IdentifyFile().Identify(outputfile,
+ AppletFormatAdapter.PASTE);
+ assertNotNull("Identify routine failed for outputformat " + ioformat,
+ identifyoutput);
+ assertTrue(
+ "Identify routine could not recognise output generated by '"
+ + ioformat + "' writer",
+ ioformat.equals(identifyoutput));
+ testAlignmentEquivalence(al, al_input);
+ } catch (Exception e)
+ {
+ e.printStackTrace();
+ assertTrue("Couln't format the alignment for output file.", false);
+ }
+ }
+
+ /**
+ * assert alignment equivalence
+ *
+ * @param al
+ * 'original'
+ * @param al_input
+ * 'secondary' or generated alignment from some datapreserving
+ * transformation
+ */
+ public static void testAlignmentEquivalence(AlignmentI al,
+ AlignmentI al_input)
+ {
+ assertNotNull("Original alignment was null", al);
+ assertNotNull("Generated alignment was null", al_input);
+
+ assertTrue(
+ "Alignment dimension mismatch: originl contains "
+ + al.getHeight() + " and generated has "
+ + al_input.getHeight() + " sequences; original has "
+ + al.getWidth() + " and generated has "
+ + al_input.getWidth() + " columns.",
+ al.getHeight() == al_input.getHeight()
+ && al.getWidth() == al_input.getWidth());
+
+ // check Alignment annotation
+ AlignmentAnnotation[] aa_new = al_input.getAlignmentAnnotation();
+ AlignmentAnnotation[] aa_original = al.getAlignmentAnnotation();
+
+ // note - at moment we do not distinguish between alignment without any
+ // annotation rows and alignment with no annotation row vector
+ // we might want to revise this in future
+ int aa_new_size = (aa_new == null ? 0 : aa_new.length), aa_original_size = (aa_original == null ? 0
+ : aa_original.length);
+ Map<Integer, java.util.BitSet> orig_groups = new HashMap<Integer, java.util.BitSet>(), new_groups = new HashMap<Integer, java.util.BitSet>();