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++)
// sanity check
List<SequenceFeature> 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!
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 };
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());
+
}
}
}