From: Jim Procter Date: Tue, 24 Oct 2017 12:54:42 +0000 (+0100) Subject: JAL-2541 assert that alignments sharing references to dataset sequences are unaffecte... X-Git-Tag: Release_2_11_1_0~98^2~23^2~5 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=d04ceb9a223fe6eeb504d23f7bc85c519d75a255;p=jalview.git JAL-2541 assert that alignments sharing references to dataset sequences are unaffected by cuts to a sequence in an alignment --- diff --git a/test/jalview/commands/EditCommandTest.java b/test/jalview/commands/EditCommandTest.java index dbc659e..63ceebe 100644 --- a/test/jalview/commands/EditCommandTest.java +++ b/test/jalview/commands/EditCommandTest.java @@ -752,6 +752,14 @@ public class EditCommandTest seq0.setEnd(end); AlignmentI alignment = new Alignment(new SequenceI[] { seq0 }); alignment.setDataset(null); + /* + * create a new alignment with shared dataset sequence + */ + AlignmentI copy = new Alignment( + new SequenceI[] + { alignment.getDataset().getSequenceAt(0).deriveSequence() }); + SequenceI copySeq0 = copy.getSequenceAt(0); + for (int from = start; from <= end; from++) { for (int to = from; to <= end; to++) @@ -767,7 +775,8 @@ public class EditCommandTest // sanity check List sfs = seq0.getSequenceFeatures(); assertEquals(func(5), sfs.size()); - + assertEquals(sfs, copySeq0.getSequenceFeatures()); + String copySequenceFeatures = copySeq0.getSequenceFeatures().toString(); /* * now perform all possible cuts of subranges of columns 1-5 * and validate the resulting remaining sequence features! @@ -785,6 +794,18 @@ public class EditCommandTest verifyCut(seq0, from, to, msg, start); /* + * verify copy alignment dataset sequence unaffected + */ + assertEquals("Original dataset sequence was modified", + copySequenceFeatures, + copySeq0.getSequenceFeatures().toString()); + /* + * verify a new dataset sequence has appeared + */ + assertEquals("Wrong Dataset size after cut", 2, + alignment.getDataset().getHeight()); + + /* * undo and verify all restored */ AlignmentI[] views = new AlignmentI[] { alignment }; @@ -794,15 +815,54 @@ public class EditCommandTest verifyUndo(from, to, sfs); /* + * verify copy alignment dataset sequence still unaffected + */ + assertEquals("Original dataset sequence was modified", + copySequenceFeatures, + copySeq0.getSequenceFeatures().toString()); + + /* + * verify dataset sequence has shrunk + */ + assertEquals("Wrong Dataset size after cut", 1, + alignment.getDataset().getHeight()); + + /* * redo and verify */ ec.doCommand(views); verifyCut(seq0, from, to, msg, start); /* + * verify copy alignment dataset sequence unaffected + */ + assertEquals("Original dataset sequence was modified", + copySequenceFeatures, + copySeq0.getSequenceFeatures().toString()); + + /* + * verify a new dataset sequence has appeared again + */ + assertEquals("Wrong Dataset size after cut", 2, + alignment.getDataset().getHeight()); + + /* * undo ready for next cut */ ec.undoCommand(views); + + /* + * final verify that copy alignment dataset sequence is still unaffected + */ + assertEquals("Original dataset sequence was modified", + copySequenceFeatures, + copySeq0.getSequenceFeatures().toString()); + /* + * and that dataset sequence has shrunk + */ + assertEquals("Wrong Dataset size after cut", 1, + alignment.getDataset().getHeight()); + } } }