package jalview.datamodel;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
+import static org.testng.AssertJUnit.assertSame;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertTrue;
+import static org.testng.AssertJUnit.assertNull;
+import org.testng.annotations.Test;
+import org.testng.annotations.BeforeMethod;
import java.util.Arrays;
import java.util.List;
-import org.junit.Before;
-import org.junit.Test;
-
public class SequenceTest
{
SequenceI seq;
- @Before
+ @BeforeMethod
public void setUp()
{
seq = new Sequence("FER1", "AKPNGVL");
assertEquals("zABCDEF", seq.getSequenceAsString());
seq.insertCharAt(2, 2, 'x');
assertEquals("zAxxBCDEF", seq.getSequenceAsString());
+
// for static method see StringUtilsTest
}
seq.getDatasetSequence().setDatasetSequence(seq); // loop!
assertNull(seq.getSequenceFeatures());
}
+
+ /**
+ * Test the method that returns an array, indexed by sequence position, whose
+ * entries are the residue positions at the sequence position (or to the right
+ * if a gap)
+ */
+ @Test
+ public void testFindPositionMap()
+ {
+ /*
+ * Note: Javadoc for findPosition says it returns the residue position to
+ * the left of a gapped position; in fact it returns the position to the
+ * right. Also it returns a non-existent residue position for a gap beyond
+ * the sequence.
+ */
+ Sequence seq = new Sequence("TestSeq", "AB.C-D E.");
+ int[] map = seq.findPositionMap();
+ assertEquals(Arrays.toString(new int[]
+ { 1, 2, 3, 3, 4, 4, 5, 5, 6 }), Arrays.toString(map));
+ }
+
+ /**
+ * Test for getSubsequence
+ */
+ @Test
+ public void testGetSubsequence()
+ {
+ SequenceI seq = new Sequence("TestSeq", "ABCDEFG");
+ seq.createDatasetSequence();
+
+ // positions are base 0, end position is exclusive
+ SequenceI subseq = seq.getSubSequence(2, 4);
+
+ assertEquals("CD", subseq.getSequenceAsString());
+ // start/end are base 1 positions
+ assertEquals(3, subseq.getStart());
+ assertEquals(4, subseq.getEnd());
+ // subsequence shares the full dataset sequence
+ assertSame(seq.getDatasetSequence(), subseq.getDatasetSequence());
+ }
+
+ /**
+ * Test for deriveSequence applied to a sequence with a dataset
+ */
+ @Test
+ public void testDeriveSequence_existingDataset()
+ {
+ SequenceI seq = new Sequence("Seq1", "CD");
+ seq.setDatasetSequence(new Sequence("Seq1", "ABCDEF"));
+ seq.setStart(3);
+ seq.setEnd(4);
+ SequenceI derived = seq.deriveSequence();
+ assertEquals("CD", derived.getSequenceAsString());
+ assertSame(seq.getDatasetSequence(), derived.getDatasetSequence());
+ }
+
+ /**
+ * Test for deriveSequence applied to an ungapped sequence with no dataset
+ */
+ @Test
+ public void testDeriveSequence_noDatasetUngapped()
+ {
+ SequenceI seq = new Sequence("Seq1", "ABCDEF");
+ assertEquals(1, seq.getStart());
+ assertEquals(6, seq.getEnd());
+ SequenceI derived = seq.deriveSequence();
+ assertEquals("ABCDEF", derived.getSequenceAsString());
+ assertEquals("ABCDEF", derived.getDatasetSequence()
+ .getSequenceAsString());
+ }
+
+ /**
+ * Test for deriveSequence applied to a gapped sequence with no dataset
+ */
+ @Test
+ public void testDeriveSequence_noDatasetGapped()
+ {
+ SequenceI seq = new Sequence("Seq1", "AB-C.D EF");
+ assertEquals(1, seq.getStart());
+ assertEquals(6, seq.getEnd());
+ assertNull(seq.getDatasetSequence());
+ SequenceI derived = seq.deriveSequence();
+ assertEquals("AB-C.D EF", derived.getSequenceAsString());
+ assertEquals("ABCDEF", derived.getDatasetSequence()
+ .getSequenceAsString());
+ }
}