X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fdatamodel%2FAlignmentTest.java;h=fcf724a7d817b9416c5bfd7a406dfc8ec3632330;hb=fa2b80f5f3252f1f4801d2048b80a8745b399616;hp=003f2aae65e922485b0f2c7bfedb9824daa8b4df;hpb=0ef77af2bb4f71ab35c427a029590009af482953;p=jalview.git diff --git a/test/jalview/datamodel/AlignmentTest.java b/test/jalview/datamodel/AlignmentTest.java index 003f2aa..fcf724a 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()) @@ -296,23 +310,28 @@ public class AlignmentTest } // also check validation passes with asserts disabled Assert.assertTrue(verifyAlignmentDatasetRefs(al, false, null), - "Valid test alignment failed when raiseAsserts disabled:" + "Valid test alignment tested false when raiseAsserts disabled:" + msg); } else { + boolean assertRaised = false; try { - Assert.assertFalse(verifyAlignmentDatasetRefs(al, true, null)); - Assert.fail("Invalid test alignment passed but no assertion raised when raiseAsserts enabled:" - + msg); + verifyAlignmentDatasetRefs(al, true, null); } catch (AssertionError ae) { // expected behaviour + assertRaised = true; + } + if (!assertRaised) + { + Assert.fail("Invalid test alignment passed when raiseAsserts enabled:" + + msg); } // also check validation passes with asserts disabled Assert.assertFalse(verifyAlignmentDatasetRefs(al, false, null), - "Invalid test alignment passed when raiseAsserts disabled:" + "Invalid test alignment tested true when raiseAsserts disabled:" + msg); } } @@ -397,7 +416,146 @@ public class AlignmentTest al, true, "verify should have passed once all sequences involved in alCodonFrame were added to dataset"); + 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