Merge branch 'develop' into Release_2_9_0b1_Branch
[jalview.git] / test / jalview / commands / EditCommandTest.java
index 69379d0..3bb98eb 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9)
+ * Copyright (C) 2015 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
@@ -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());
@@ -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);