JAL-2089 patch broken merge to master for Release 2.10.0b1
[jalview.git] / test / jalview / commands / EditCommandTest.java
index 69379d0..7fb80fb 100644 (file)
@@ -105,7 +105,7 @@ public class EditCommandTest
   public void testCut()
   {
     Edit ec = testee.new Edit(Action.CUT, seqs, 4, 3, al);
-    testee.cut(ec, new AlignmentI[] { al });
+    EditCommand.cut(ec, new AlignmentI[] { al });
     assertEquals("abcdhjk", seqs[0].getSequenceAsString());
     assertEquals("fghjnopq", seqs[1].getSequenceAsString());
     assertEquals("qrstxyz", seqs[2].getSequenceAsString());
@@ -130,7 +130,7 @@ public class EditCommandTest
     newSeqs[1] = new Sequence("newseq1", "JWMPDH");
 
     Edit ec = testee.new Edit(Action.PASTE, newSeqs, 0, al.getWidth(), al);
-    testee.paste(ec, new AlignmentI[] { al });
+    EditCommand.paste(ec, new AlignmentI[] { al });
     assertEquals(6, al.getSequences().size());
     assertEquals("1234567890", seqs[3].getSequenceAsString());
     assertEquals("ACEFKL", seqs[4].getSequenceAsString());
@@ -239,7 +239,7 @@ public class EditCommandTest
   public void testReplace()
   {
     // seem to need a dataset sequence on the edited sequence here
-    seqs[1].setDatasetSequence(seqs[1]);
+    seqs[1].createDatasetSequence();
     new EditCommand("", Action.REPLACE, "ZXY", new SequenceI[] { seqs[1] },
             4, 8, al);
     assertEquals("abcdefghjk", seqs[0].getSequenceAsString());
@@ -423,12 +423,12 @@ public class EditCommandTest
     SequenceI seq = new Sequence("", "--A--B-CDEF");
     SequenceI ds = new Sequence("", "ABCDEF");
     seq.setDatasetSequence(ds);
-    SequenceI[] seqs = new SequenceI[] { seq };
-    Edit e = command.new Edit(Action.INSERT_GAP, seqs, 1, 2, '-');
+    SequenceI[] sqs = new SequenceI[] { seq };
+    Edit e = command.new Edit(Action.INSERT_GAP, sqs, 1, 2, '-');
     command.addEdit(e);
-    e = command.new Edit(Action.INSERT_GAP, seqs, 4, 1, '-');
+    e = command.new Edit(Action.INSERT_GAP, sqs, 4, 1, '-');
     command.addEdit(e);
-    e = command.new Edit(Action.INSERT_GAP, seqs, 0, 2, '-');
+    e = command.new Edit(Action.INSERT_GAP, sqs, 0, 2, '-');
     command.addEdit(e);
 
     Map<SequenceI, SequenceI> unwound = command.priorState(false);
@@ -450,10 +450,10 @@ public class EditCommandTest
     SequenceI seq = new Sequence("", "ABC");
     SequenceI ds = new Sequence("", "ABC");
     seq.setDatasetSequence(ds);
-    SequenceI[] seqs = new SequenceI[] { seq };
-    Edit e = command.new Edit(Action.DELETE_GAP, seqs, 1, 1, '-');
+    SequenceI[] sqs = new SequenceI[] { seq };
+    Edit e = command.new Edit(Action.DELETE_GAP, sqs, 1, 1, '-');
     command.addEdit(e);
-    e = command.new Edit(Action.DELETE_GAP, seqs, 2, 1, '-');
+    e = command.new Edit(Action.DELETE_GAP, sqs, 2, 1, '-');
     command.addEdit(e);
 
     Map<SequenceI, SequenceI> unwound = command.priorState(false);
@@ -470,8 +470,8 @@ public class EditCommandTest
     SequenceI seq = new Sequence("", "ABCDEF");
     SequenceI ds = new Sequence("", "ABCDEF");
     seq.setDatasetSequence(ds);
-    SequenceI[] seqs = new SequenceI[] { seq };
-    Edit e = command.new Edit(Action.DELETE_GAP, seqs, 2, 2, '-');
+    SequenceI[] sqs = new SequenceI[] { seq };
+    Edit e = command.new Edit(Action.DELETE_GAP, sqs, 2, 2, '-');
     command.addEdit(e);
 
     Map<SequenceI, SequenceI> unwound = command.priorState(false);
@@ -488,12 +488,38 @@ public class EditCommandTest
     SequenceI seq = new Sequence("", "AB---CDEF");
     SequenceI ds = new Sequence("", "ABCDEF");
     seq.setDatasetSequence(ds);
-    SequenceI[] seqs = new SequenceI[] { seq };
-    Edit e = command.new Edit(Action.INSERT_GAP, seqs, 2, 3, '-');
+    SequenceI[] sqs = new SequenceI[] { seq };
+    Edit e = command.new Edit(Action.INSERT_GAP, sqs, 2, 3, '-');
     command.addEdit(e);
 
     Map<SequenceI, SequenceI> unwound = command.priorState(false);
-    assertEquals("ABCDEF", unwound.get(ds).getSequenceAsString());
+    SequenceI prior = unwound.get(ds);
+    assertEquals("ABCDEF", prior.getSequenceAsString());
+    assertEquals(1, prior.getStart());
+    assertEquals(6, prior.getEnd());
+  }
+
+  /**
+   * Test 'undoing' a single gap insertion edit command, on a sequence whose
+   * start residue is other than 1
+   */
+  @Test(groups = { "Functional" })
+  public void testPriorState_singleInsertWithOffset()
+  {
+    EditCommand command = new EditCommand();
+    SequenceI seq = new Sequence("", "AB---CDEF", 8, 13);
+    // SequenceI ds = new Sequence("", "ABCDEF", 8, 13);
+    // seq.setDatasetSequence(ds);
+    seq.createDatasetSequence();
+    SequenceI[] sqs = new SequenceI[] { seq };
+    Edit e = command.new Edit(Action.INSERT_GAP, sqs, 2, 3, '-');
+    command.addEdit(e);
+
+    Map<SequenceI, SequenceI> unwound = command.priorState(false);
+    SequenceI prior = unwound.get(seq.getDatasetSequence());
+    assertEquals("ABCDEF", prior.getSequenceAsString());
+    assertEquals(8, prior.getStart());
+    assertEquals(13, prior.getEnd());
   }
 
   /**
@@ -514,13 +540,13 @@ public class EditCommandTest
     SequenceI seq = new Sequence("", "ABC-DEF");
     SequenceI ds1 = new Sequence("", "ABCDEF");
     seq.setDatasetSequence(ds1);
-    SequenceI[] seqs = new SequenceI[] { seq };
-    Edit e = command.new Edit(Action.DELETE_GAP, seqs, 0, 2, '-');
+    SequenceI[] sqs = new SequenceI[] { seq };
+    Edit e = command.new Edit(Action.DELETE_GAP, sqs, 0, 2, '-');
     command.addEdit(e);
     seq = new Sequence("", "ABCDEF");
     seq.setDatasetSequence(ds1);
-    seqs = new SequenceI[] { seq };
-    e = command.new Edit(Action.DELETE_GAP, seqs, 3, 1, '-');
+    sqs = new SequenceI[] { seq };
+    e = command.new Edit(Action.DELETE_GAP, sqs, 3, 1, '-');
     command.addEdit(e);
 
     /*
@@ -529,13 +555,13 @@ public class EditCommandTest
     seq = new Sequence("", "FGHI--J");
     SequenceI ds2 = new Sequence("", "FGHIJ");
     seq.setDatasetSequence(ds2);
-    seqs = new SequenceI[] { seq };
-    e = command.new Edit(Action.DELETE_GAP, seqs, 2, 1, '-');
+    sqs = new SequenceI[] { seq };
+    e = command.new Edit(Action.DELETE_GAP, sqs, 2, 1, '-');
     command.addEdit(e);
     seq = new Sequence("", "FGHIJ");
     seq.setDatasetSequence(ds2);
-    seqs = new SequenceI[] { seq };
-    e = command.new Edit(Action.DELETE_GAP, seqs, 4, 2, '-');
+    sqs = new SequenceI[] { seq };
+    e = command.new Edit(Action.DELETE_GAP, sqs, 4, 2, '-');
     command.addEdit(e);
 
     /*
@@ -544,8 +570,8 @@ public class EditCommandTest
     seq = new Sequence("", "MNOPQ");
     SequenceI ds3 = new Sequence("", "MNOPQ");
     seq.setDatasetSequence(ds3);
-    seqs = new SequenceI[] { seq };
-    e = command.new Edit(Action.DELETE_GAP, seqs, 1, 1, '-');
+    sqs = new SequenceI[] { seq };
+    e = command.new Edit(Action.DELETE_GAP, sqs, 1, 1, '-');
     command.addEdit(e);
 
     Map<SequenceI, SequenceI> unwound = command.priorState(false);
@@ -579,8 +605,8 @@ public class EditCommandTest
     SequenceI seq3 = new Sequence("", "M-NO--PQ");
     SequenceI ds3 = new Sequence("", "MNOPQ");
     seq3.setDatasetSequence(ds3);
-    SequenceI[] seqs = new SequenceI[] { seq1, seq2, seq3 };
-    Edit e = command.new Edit(Action.DELETE_GAP, seqs, 0, 1, '-');
+    SequenceI[] sqs = new SequenceI[] { seq1, seq2, seq3 };
+    Edit e = command.new Edit(Action.DELETE_GAP, sqs, 0, 1, '-');
     command.addEdit(e);
 
     /*
@@ -592,8 +618,8 @@ public class EditCommandTest
     seq2.setDatasetSequence(ds2);
     seq3 = new Sequence("", "M-NOPQ");
     seq3.setDatasetSequence(ds3);
-    seqs = new SequenceI[] { seq1, seq2, seq3 };
-    e = command.new Edit(Action.DELETE_GAP, seqs, 4, 2, '-');
+    sqs = new SequenceI[] { seq1, seq2, seq3 };
+    e = command.new Edit(Action.DELETE_GAP, sqs, 4, 2, '-');
     command.addEdit(e);
 
     Map<SequenceI, SequenceI> unwound = command.priorState(false);