public class SequenceTest
{
- Sequence seq;
+ SequenceI seq;
@Before
public void setUp()
seq = new Sequence("FER1", "AKPNGVL");
}
@Test
+ public void testInsertGapsAndGapmaps()
+ {
+ SequenceI aseq = seq.deriveSequence();
+ aseq.insertCharAt(2, 3, '-');
+ aseq.insertCharAt(6, 3, '-');
+ assertEquals("Gap insertions not correct", "AK---P---NGVL",
+ aseq.getSequenceAsString());
+ List<int[]> gapInt = aseq.getInsertions();
+ assertEquals("Gap interval 1 start wrong", 2, gapInt.get(0)[0]);
+ assertEquals("Gap interval 1 end wrong", 4, gapInt.get(0)[1]);
+ assertEquals("Gap interval 2 start wrong", 6, gapInt.get(1)[0]);
+ assertEquals("Gap interval 2 end wrong", 8, gapInt.get(1)[1]);
+ }
+
+ @Test
public void testGetAnnotation()
{
// initial state returns null not an empty array
@Test
public void testAddAlignmentAnnotation()
{
- assertNull(seq.annotation);
+ assertNull(seq.getAnnotation());
final AlignmentAnnotation annotation = new AlignmentAnnotation("a",
"b", 2d);
assertNull(annotation.sequenceRef);
seq.createDatasetSequence();
assertEquals("[1, 4, 6, 7, 9, 12]", Arrays.toString(seq.gapMap()));
}
+
+ /**
+ * Test the method that gets sequence features, either from the sequence or
+ * its dataset.
+ */
+ @Test
+ public void testGetSequenceFeatures()
+ {
+ SequenceI seq = new Sequence("test", "GATCAT");
+ seq.createDatasetSequence();
+
+ assertNull(seq.getSequenceFeatures());
+
+ /*
+ * SequenceFeature on sequence
+ */
+ SequenceFeature sf = new SequenceFeature();
+ seq.addSequenceFeature(sf);
+ SequenceFeature[] sfs = seq.getSequenceFeatures();
+ assertEquals(1, sfs.length);
+ assertSame(sf, sfs[0]);
+
+ /*
+ * SequenceFeature on sequence and dataset sequence; returns that on
+ * sequence
+ */
+ SequenceFeature sf2 = new SequenceFeature();
+ seq.getDatasetSequence().addSequenceFeature(sf2);
+ sfs = seq.getSequenceFeatures();
+ assertEquals(1, sfs.length);
+ assertSame(sf, sfs[0]);
+
+ /*
+ * SequenceFeature on dataset sequence only
+ */
+ seq.setSequenceFeatures(null);
+ sfs = seq.getSequenceFeatures();
+ assertEquals(1, sfs.length);
+ assertSame(sf2, sfs[0]);
+
+ /*
+ * Corrupt case - no SequenceFeature, dataset's dataset is the original
+ * sequence. Test shows no infinite loop results.
+ */
+ seq.getDatasetSequence().setSequenceFeatures(null);
+ seq.getDatasetSequence().setDatasetSequence(seq); // loop!
+ assertNull(seq.getSequenceFeatures());
+ }
}