test package fix for List<DBRefEntry> DBrefs (untested)
[jalview.git] / test / jalview / datamodel / AlignmentTest.java
index 2fed815..96af53e 100644 (file)
@@ -248,7 +248,9 @@ public class AlignmentTest
                   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 +671,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 +1173,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<DBRefEntry> 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 +1336,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 +1468,20 @@ 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());
+  }
 }