X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fdatamodel%2FAlignmentTest.java;h=7ad9436c858f8ef2fed092007d4d26a6550a73d8;hb=6c43dd36929855a7907380ffb36b4df249d4a557;hp=dbecc20b2743c1bb25beca3984a1183b628bc6dd;hpb=f11011db0fddcb60941d20e4ee9d63a87fda2a23;p=jalview.git diff --git a/test/jalview/datamodel/AlignmentTest.java b/test/jalview/datamodel/AlignmentTest.java index dbecc20..7ad9436 100644 --- a/test/jalview/datamodel/AlignmentTest.java +++ b/test/jalview/datamodel/AlignmentTest.java @@ -178,9 +178,11 @@ public class AlignmentTest } else { + int dsp = -1; // verify all dataset sequences for (SequenceI seqds : alignment.getSequences()) { + dsp++; if (seqds.getDatasetSequence() != null) { if (raiseAssert) @@ -189,6 +191,18 @@ public class AlignmentTest } return false; } + int foundp = alignment.findIndex(seqds); + if (foundp != dsp) + { + if (raiseAssert) + { + Assert.fail(message + + " Dataset sequence array contains a reference at " + + dsp + " to a sequence first seen at " + foundp + " (" + + seqds.toString() + ")"); + } + return false; + } if (seqds.getDBRefs() != null) { for (DBRefEntry dbr : seqds.getDBRefs()) @@ -405,7 +419,143 @@ public class AlignmentTest al.getDataset().addSequence(sqanotherout); assertVerifyAlignment(al, false, "verify should have failed when a sequence was added twice to the dataset"); + al.getDataset().deleteSequence(sqanotherout); + assertVerifyAlignment(al, true, + "verify should have passed after duplicate entry for sequence was removed"); + } + + /** + * checks that the sequence data for an alignment's dataset is non-redundant. + * Fails if there are sequences with same id, sequence, start, and. + */ + + public static void assertDatasetIsNormalised(AlignmentI al) + { + assertDatasetIsNormalised(al, null); + } + + /** + * checks that the sequence data for an alignment's dataset is non-redundant. + * Fails if there are sequences with same id, sequence, start, and. + * + * @param al + * - alignment to verify + * @param message + * - null or message prepended to exception message. + */ + public static void assertDatasetIsNormalised(AlignmentI al, String message) + { + if (al.getDataset()!=null) + { + assertDatasetIsNormalised(al.getDataset(), message); + return; + } + /* + * look for pairs of sequences with same ID, start, end, and sequence + */ + List seqSet = al.getSequences(); + for (int p=0;p