X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fcommands%2FEditCommandTest.java;h=216065764cd647690d9c4b271b1f21c530819f95;hb=aab74f8748bf49bf6b17ba82f0bc5644d4dc2853;hp=d72fa7d92840451985b1933fdb3d911df4478006;hpb=9cf4a84ed83aee947d2adde33aaebed2e72175b9;p=jalview.git diff --git a/test/jalview/commands/EditCommandTest.java b/test/jalview/commands/EditCommandTest.java index d72fa7d..2160657 100644 --- a/test/jalview/commands/EditCommandTest.java +++ b/test/jalview/commands/EditCommandTest.java @@ -153,18 +153,23 @@ public class EditCommandTest } /** - * Test a Paste action, where this adds sequences to an alignment. + * Test a Paste action, followed by Undo and Redo */ - @Test(groups = { "Functional" }, enabled = true) - // TODO fix so it works - public void testPaste_addToAlignment() + @Test(groups = { "Functional" }, enabled = false) + public void testPaste_undo_redo() { + // TODO code this test properly, bearing in mind that: + // Paste action requires something on the clipboard (Cut/Copy) + // - EditCommand.paste doesn't add sequences to the alignment + // ... that is done in AlignFrame.paste() + // ... unless as a Redo + // ... + SequenceI[] newSeqs = new SequenceI[2]; newSeqs[0] = new Sequence("newseq0", "ACEFKL"); newSeqs[1] = new Sequence("newseq1", "JWMPDH"); - Edit ec = testee.new Edit(Action.PASTE, newSeqs, 0, al.getWidth(), al); - EditCommand.paste(ec, new AlignmentI[] { al }); + new EditCommand("Paste", Action.PASTE, newSeqs, 0, al.getWidth(), al); assertEquals(6, al.getSequences().size()); assertEquals("1234567890", seqs[3].getSequenceAsString()); assertEquals("ACEFKL", seqs[4].getSequenceAsString()); @@ -274,9 +279,14 @@ public class EditCommandTest { // seem to need a dataset sequence on the edited sequence here seqs[1].createDatasetSequence(); - new EditCommand("", Action.REPLACE, "ZXY", new SequenceI[] { seqs[1] }, + assertEquals("fghjklmnopq", seqs[1].getSequenceAsString()); + // NB command.number holds end position for a Replace command + new EditCommand("", Action.REPLACE, "Z-xY", new SequenceI[] { seqs[1] }, 4, 8, al); assertEquals("abcdefghjk", seqs[0].getSequenceAsString()); + assertEquals("fghjZ-xYopq", seqs[1].getSequenceAsString()); + assertEquals("fghjZxYopq", + seqs[1].getDatasetSequence().getSequenceAsString()); assertEquals("qrstuvwxyz", seqs[2].getSequenceAsString()); assertEquals("1234567890", seqs[3].getSequenceAsString()); } @@ -290,16 +300,50 @@ public class EditCommandTest SequenceI seq = new Sequence("seq", "ABC--DEF"); seq.createDatasetSequence(); assertEquals("ABCDEF", seq.getDatasetSequence().getSequenceAsString()); + assertEquals(1, seq.getStart()); + assertEquals(6, seq.getEnd()); /* * replace C- with XYZ * NB arg4 = start column of selection for edit (base 0) * arg5 = column after end of selection for edit */ - new EditCommand("", Action.REPLACE, "XYZ", new SequenceI[] { seq }, 2, + EditCommand edit = new EditCommand("", Action.REPLACE, "xyZ", + new SequenceI[] + { seq }, 2, 4, al); - assertEquals("ABXYZ-DEF", seq.getSequenceAsString()); - assertEquals("ABXYZDEF", seq.getDatasetSequence().getSequenceAsString()); + assertEquals("ABxyZ-DEF", seq.getSequenceAsString()); + assertEquals(1, seq.getStart()); + assertEquals(8, seq.getEnd()); + assertEquals("ABxyZDEF", + seq.getDatasetSequence().getSequenceAsString()); + assertEquals(8, seq.getDatasetSequence().getEnd()); + + /* + * undo the edit + */ + AlignmentI[] views = new AlignmentI[] + { new Alignment(new SequenceI[] { seq }) }; + edit.undoCommand(views); + + assertEquals("ABC--DEF", seq.getSequenceAsString()); + assertEquals("ABCDEF", seq.getDatasetSequence().getSequenceAsString()); + assertEquals(1, seq.getStart()); + assertEquals(6, seq.getEnd()); + assertEquals(6, seq.getDatasetSequence().getEnd()); + + /* + * redo the edit + */ + edit.doCommand(views); + + assertEquals("ABxyZ-DEF", seq.getSequenceAsString()); + assertEquals(1, seq.getStart()); + assertEquals(8, seq.getEnd()); + assertEquals("ABxyZDEF", + seq.getDatasetSequence().getSequenceAsString()); + assertEquals(8, seq.getDatasetSequence().getEnd()); + } /** @@ -856,7 +900,6 @@ public class EditCommandTest * and validate the resulting remaining sequence features! */ SequenceI[] sqs = new SequenceI[] { seq0 }; - boolean checkDsSize = true; for (int from = 0; from < seq0.getLength(); from++) { @@ -877,15 +920,14 @@ public class EditCommandTest copySequenceFeatures, copySeq0.getSequenceFeatures().toString()); - if (checkDsSize) - { - /* - * verify a new dataset sequence has appeared - */ - assertEquals("Wrong Dataset size after cut", - newDatasetSequence ? 2 : 1, alignment.getDataset() - .getHeight()); - } + /* + * verify any new dataset sequence was added to the + * alignment dataset + */ + assertEquals("Wrong Dataset size after " + msg, + newDatasetSequence ? 2 : 1, + alignment.getDataset().getHeight()); + /* * undo and verify all restored */ @@ -897,19 +939,13 @@ public class EditCommandTest /* * verify copy alignment dataset sequence still unaffected + * and alignment dataset has shrunk (if it was added to) */ assertEquals("Original dataset sequence was modified", copySequenceFeatures, copySeq0.getSequenceFeatures().toString()); - - if (checkDsSize) - { - /* - * verify dataset sequence has shrunk - */ - assertEquals("Wrong Dataset size after cut", 1, - alignment.getDataset().getHeight()); - } + assertEquals("Wrong Dataset size after Undo of " + msg, 1, + alignment.getDataset().getHeight()); /* * redo and verify @@ -919,20 +955,14 @@ public class EditCommandTest /* * verify copy alignment dataset sequence unaffected + * and any new dataset sequence readded to alignment dataset */ assertEquals("Original dataset sequence was modified", copySequenceFeatures, copySeq0.getSequenceFeatures().toString()); - - if (checkDsSize) - { - /* - * verify a new dataset sequence has appeared again - */ - assertEquals("Wrong Dataset size after cut", - newDatasetSequence ? 2 : 1, alignment.getDataset() - .getHeight()); - } + assertEquals("Wrong Dataset size after Redo of " + msg, + newDatasetSequence ? 2 : 1, + alignment.getDataset().getHeight()); /* * undo ready for next cut @@ -941,18 +971,13 @@ public class EditCommandTest /* * final verify that copy alignment dataset sequence is still unaffected + * and that alignment dataset has shrunk */ assertEquals("Original dataset sequence was modified", copySequenceFeatures, copySeq0.getSequenceFeatures().toString()); - if (checkDsSize) - { - /* - * and that dataset sequence has shrunk - */ - assertEquals("Wrong Dataset size after cut", 1, - alignment.getDataset().getHeight()); - } + assertEquals("Wrong Dataset size after final Undo of " + msg, 1, + alignment.getDataset().getHeight()); } } }