+ private SequenceI mkDs(SequenceI as)
+ {
+ SequenceI ds = as.createDatasetSequence();
+ ds.setSequence(ds.getSequenceAsString().toUpperCase(Locale.ROOT));
+ return ds;
+ }
+ /**
+ * Test that mimics 'remove all gapped columns' action. This generates a
+ * series Delete Gap edits that each act on all sequences that share a gapped
+ * column region.
+ */
+ @Test(groups = { "Functional" })
+ public void testLeftRight_Justify_and_preserves_gaps()
+ {
+ EditCommand command = new EditCommand();
+ String original1 = "--ABc--DEF";
+ String original2 = "-G-Hi--J";
+ String original3 = "-M-No--PQ";
+
+ /*
+ * Set up the sequence array for operations
+ */
+ SequenceI seq1 = new Sequence("sq1", original1);
+ SequenceI ds1 = mkDs(seq1);
+ /*
+ * and check we are preserving data - if the calls below fail, something has broken the Jalview dataset derivation process
+ */
+ assertEquals("ABCDEF", seq1.getDatasetSequence().getSequenceAsString());
+ assertEquals(original1,seq1.getSequenceAsString());
+ SequenceI seq2 = new Sequence("sq2",original2);
+ SequenceI ds2 = mkDs(seq2);
+ SequenceI seq3 = new Sequence("sq3", original3);
+ SequenceI ds3 = mkDs(seq3);
+ List<SequenceI> sqs = Arrays.asList( seq1, seq2, seq3 );
+ Alignment al = new Alignment(sqs.toArray(new SequenceI[0]));
+ EditCommand lefj = new JustifyLeftOrRightCommand("Left J", true, sqs, 1, 7, al);
+ String exp = "-ABcD---EF";
+ // check without case conservation
+ assertEquals(exp.toUpperCase(Locale.ROOT),seq1.getSequenceAsString().toUpperCase(Locale.ROOT));
+ // check case
+ assertEquals(exp,seq1.getSequenceAsString());
+ // and other seqs
+ assertEquals("-GHiJ---",seq2.getSequenceAsString());
+ assertEquals("-MNoP---Q",seq3.getSequenceAsString());
+ lefj.undoCommand(new AlignmentI[] { al});
+ assertEquals(original3,seq3.getSequenceAsString());
+ assertEquals(original1,seq1.getSequenceAsString());
+ assertEquals(original2,seq2.getSequenceAsString());
+
+ EditCommand righj = new JustifyLeftOrRightCommand("Right J", false, sqs, 2, 7, al);
+ assertEquals("----ABcDEF",seq1.getSequenceAsString());
+ assertEquals("-G---HiJ",seq2.getSequenceAsString());
+ assertEquals("-M---NoPQ",seq3.getSequenceAsString());
+ righj.undoCommand(new AlignmentI[] { al});
+ assertEquals(original3,seq3.getSequenceAsString());
+ assertEquals(original1,seq1.getSequenceAsString());
+ assertEquals(original2,seq2.getSequenceAsString());
+
+ }