X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=test%2Fjalview%2Fdatamodel%2FAlignmentTest.java;h=cdcc219777eb12cfdbfc8660a3201892e5e850ea;hb=6babd7c2387996384a49042ed4290095c13d5ed9;hp=2fed815eaac736fbf895a6c06dacc9cd70d8c65a;hpb=cfed9d8a9e10be992877d6097260758ee5563630;p=jalview.git diff --git a/test/jalview/datamodel/AlignmentTest.java b/test/jalview/datamodel/AlignmentTest.java index 2fed815..cdcc219 100644 --- a/test/jalview/datamodel/AlignmentTest.java +++ b/test/jalview/datamodel/AlignmentTest.java @@ -243,12 +243,31 @@ public class AlignmentTest return false; } - if (alignment.findIndex(dbr.getMap().getTo()) == -1) + + SequenceI x = dbr.getMap().getTo(); +// System.out.println(alignment.toString()); +// System.out.println(dbr); +// System.out.println("map " + dbr.getMap()); +// System.out.println("to " + dbr.getMap().getTo()); +// if (x.toString().indexOf("ENSP00000395337") >= 0) +// { +// // The TO name here is "ENSP00000395337" +// // But the name in the table is "LDAH_HUMAN" +// System.out.println(x.getSequenceAsString()); +// SequenceI y = alignment.getSequenceAt(0); +// System.out.println(y.getSequenceAsString()); +// System.out.println(x.getSequenceAsString() +// .equals(y.getSequenceAsString())); +// +// } + if (alignment.findIndex(x) == -1) { if (raiseAssert) { Assert.fail(message - + " DBRefEntry for sequence in alignment had map to sequence not in dataset"); + + " DBRefEntry " + dbr + " for sequence " + + seqds + + " in alignment has map to sequence not in dataset"); } return false; } @@ -669,6 +688,17 @@ public class AlignmentTest // third found.. so assertFalse(iter.hasNext()); + // search for annotation on one sequence with a particular label - expect + // one + SequenceI sqfound; + anns = al.findAnnotations(sqfound = al.getSequenceAt(1), null, + "Secondary Structure"); + iter = anns.iterator(); + assertTrue(iter.hasNext()); + // expect reference to sequence 1 in the alignment + assertTrue(sqfound == iter.next().sequenceRef); + assertFalse(iter.hasNext()); + // null on all parameters == find all annotations anns = al.findAnnotations(null, null, null); iter = anns.iterator(); @@ -1160,14 +1190,14 @@ public class AlignmentTest /* * verify peptide.cdsdbref.peptidedbref is now mapped to peptide dataset */ - DBRefEntry[] dbRefs = pep.getDBRefs(); - assertEquals(2, dbRefs.length); - assertSame(dna, dbRefs[0].map.to); - assertSame(cds, dbRefs[1].map.to); - assertEquals(1, dna.getDBRefs().length); - assertSame(pep.getDatasetSequence(), dna.getDBRefs()[0].map.to); - assertEquals(1, cds.getDBRefs().length); - assertSame(pep.getDatasetSequence(), cds.getDBRefs()[0].map.to); + List dbRefs = pep.getDBRefs(); + assertEquals(2, dbRefs.size()); + assertSame(dna, dbRefs.get(0).map.to); + assertSame(cds, dbRefs.get(1).map.to); + assertEquals(1, dna.getDBRefs().size()); + assertSame(pep.getDatasetSequence(), dna.getDBRefs().get(0).map.to); + assertEquals(1, cds.getDBRefs().size()); + assertSame(pep.getDatasetSequence(), cds.getDBRefs().get(0).map.to); } @Test(groups = { "Functional" }) @@ -1323,6 +1353,24 @@ public class AlignmentTest // hidden sequences, properties } + /** + * test that calcId == null on findOrCreate doesn't raise an NPE, and yields + * an annotation with a null calcId + * + */ + @Test(groups = "Functional") + public void testFindOrCreateForNullCalcId() + { + SequenceI seq = new Sequence("seq1", "FRMLPSRT-A--L-"); + AlignmentI alignment = new Alignment(new SequenceI[] { seq }); + + AlignmentAnnotation ala = alignment.findOrCreateAnnotation( + "Temperature Factor", null, false, seq, null); + assertNotNull(ala); + assertEquals(seq, ala.sequenceRef); + assertEquals("", ala.calcId); + } + @Test(groups = "Functional") public void testPropagateInsertions() { @@ -1437,4 +1485,98 @@ public class AlignmentTest assertTrue(Comparison.isGap(al.getSequenceAt(1).getSequence()[6])); assertFalse(Comparison.isGap(al.getSequenceAt(1).getSequence()[7])); } + + @Test(groups = { "Functional" }) + public void testPadGaps() + { + SequenceI seq1 = new Sequence("seq1", "ABCDEF--"); + SequenceI seq2 = new Sequence("seq2", "-JKLMNO--"); + SequenceI seq3 = new Sequence("seq2", "-PQR"); + AlignmentI a = new Alignment(new SequenceI[] { seq1, seq2, seq3 }); + a.setGapCharacter('.'); // this replaces existing gaps + assertEquals("ABCDEF..", seq1.getSequenceAsString()); + a.padGaps(); + // trailing gaps are pruned, short sequences padded with gap character + assertEquals("ABCDEF.", seq1.getSequenceAsString()); + assertEquals(".JKLMNO", seq2.getSequenceAsString()); + assertEquals(".PQR...", seq3.getSequenceAsString()); + } + + /** + * Test for setHiddenColumns, to check it returns true if the hidden columns + * have changed, else false + */ + @Test(groups = { "Functional" }) + public void testSetHiddenColumns() + { + AlignmentI al = new Alignment(new SequenceI[] {}); + assertFalse(al.getHiddenColumns().hasHiddenColumns()); + + HiddenColumns hc = new HiddenColumns(); + assertFalse(al.setHiddenColumns(hc)); // no change + assertSame(hc, al.getHiddenColumns()); + + hc.hideColumns(2, 4); + assertTrue(al.getHiddenColumns().hasHiddenColumns()); + + /* + * set a different object but with the same columns hidden + */ + HiddenColumns hc2 = new HiddenColumns(); + hc2.hideColumns(2, 4); + assertFalse(al.setHiddenColumns(hc2)); // no change + assertSame(hc2, al.getHiddenColumns()); + + assertTrue(al.setHiddenColumns(null)); + assertNull(al.getHiddenColumns()); + assertTrue(al.setHiddenColumns(hc)); + assertSame(hc, al.getHiddenColumns()); + + al.getHiddenColumns().hideColumns(10, 12); + hc2.hideColumns(10, 12); + assertFalse(al.setHiddenColumns(hc2)); // no change + + /* + * hide columns 15-16 then 17-18 in hc + * hide columns 15-18 in hc2 + * these are not now 'equal' objects even though they + * represent the same set of columns + */ + assertSame(hc2, al.getHiddenColumns()); + hc.hideColumns(15, 16); + hc.hideColumns(17, 18); + hc2.hideColumns(15, 18); + assertFalse(hc.equals(hc2)); + assertTrue(al.setHiddenColumns(hc)); // 'changed' + } + + @Test(groups = { "Functional" }) + public void testGetWidth() + { + SequenceI seq1 = new Sequence("seq1", "ABCDEF--"); + SequenceI seq2 = new Sequence("seq2", "-JKLMNO--"); + SequenceI seq3 = new Sequence("seq2", "-PQR"); + AlignmentI a = new Alignment(new SequenceI[] { seq1, seq2, seq3 }); + + assertEquals(9, a.getWidth()); + + // width includes hidden columns + a.getHiddenColumns().hideColumns(2, 5); + assertEquals(9, a.getWidth()); + } + + @Test(groups = { "Functional" }) + public void testGetVisibleWidth() + { + SequenceI seq1 = new Sequence("seq1", "ABCDEF--"); + SequenceI seq2 = new Sequence("seq2", "-JKLMNO--"); + SequenceI seq3 = new Sequence("seq2", "-PQR"); + AlignmentI a = new Alignment(new SequenceI[] { seq1, seq2, seq3 }); + + assertEquals(9, a.getVisibleWidth()); + + // width excludes hidden columns + a.getHiddenColumns().hideColumns(2, 5); + assertEquals(5, a.getVisibleWidth()); + } }