{
SequenceI sq = new Sequence("test", "ABCDEF");
assertEquals(0, sq.findIndex(0));
+ PA.setValue(sq, "cursor", null);
assertEquals(1, sq.findIndex(1));
+ PA.setValue(sq, "cursor", null);
assertEquals(5, sq.findIndex(5));
+ PA.setValue(sq, "cursor", null);
assertEquals(6, sq.findIndex(6));
+ PA.setValue(sq, "cursor", null);
assertEquals(6, sq.findIndex(9));
sq = new Sequence("test/8-13", "-A--B-C-D-E-F--");
assertEquals(2, sq.findIndex(8));
+ PA.setValue(sq, "cursor", null);
assertEquals(5, sq.findIndex(9));
+ PA.setValue(sq, "cursor", null);
assertEquals(7, sq.findIndex(10));
// before start returns 0
+ PA.setValue(sq, "cursor", null);
assertEquals(0, sq.findIndex(0));
+ PA.setValue(sq, "cursor", null);
assertEquals(0, sq.findIndex(-1));
// beyond end returns last residue column
+ PA.setValue(sq, "cursor", null);
assertEquals(13, sq.findIndex(99));
-
}
/**
range = sq.findPositions(3, 7); // DE
assertEquals(new Range(11, 12), range);
}
+
+ @Test(groups = { "Functional" })
+ public void testFindIndex_withCursor()
+ {
+ Sequence sq = new Sequence("test/8-13", "-A--BCD-EF--");
+
+ // find F given A
+ assertEquals(10, sq.findIndex(13, new SequenceCursor(sq, 8, 2, 0)));
+
+ // find A given F
+ assertEquals(2, sq.findIndex(8, new SequenceCursor(sq, 13, 10, 0)));
+
+ // find C given C
+ assertEquals(6, sq.findIndex(10, new SequenceCursor(sq, 10, 6, 0)));
+ }
+
+ @Test(groups = { "Functional" })
+ public void testFindPosition_withCursor()
+ {
+ Sequence sq = new Sequence("test/8-13", "-A--BCD-EF--");
+
+ // find F pos given A
+ assertEquals(13, sq.findPosition(10, new SequenceCursor(sq, 8, 2, 0)));
+
+ // find A pos given F
+ assertEquals(8, sq.findPosition(2, new SequenceCursor(sq, 13, 10, 0)));
+
+ // find C pos given C
+ assertEquals(10, sq.findPosition(6, new SequenceCursor(sq, 10, 6, 0)));
+
+ // now the grey area - what residue position for a gapped column? JAL-2562
+
+ // find 'residue' for column 3 given cursor for D (so working left)
+ assertEquals(9, sq.findPosition(3, new SequenceCursor(sq, 11, 7, 0)));
+
+ // find 'residue' for column 8 given cursor for D (so working right)
+ assertEquals(12, sq.findPosition(8, new SequenceCursor(sq, 11, 7, 0)));
+
+ // find 'residue' for column 12 given cursor for B
+ assertEquals(14, sq.findPosition(12, new SequenceCursor(sq, 9, 5, 0)));
+ }
+
+ @Test
+ public void testFindPositions_withCursor()
+ {
+ Sequence sq = new Sequence("Seq", "ABC--DE-F", 8, 13);
+
+ // find positions for columns 1-4 (BC--) given E cursor
+ Range range = sq.findPositions(1, 4, new SequenceCursor(sq, 12, 7, 0)); // BC
+ assertEquals(new Range(9, 10), range);
+
+ // repeat using B cursor
+ range = sq.findPositions(1, 4, new SequenceCursor(sq, 9, 2, 0)); // BC
+ assertEquals(new Range(9, 10), range);
+
+ // find positions for columns 2-4 (C--) given A cursor
+ range = sq.findPositions(2, 4, new SequenceCursor(sq, 8, 1, 0)); // C
+ assertEquals(new Range(10, 10), range);
+
+ // gapped region
+ assertNull(sq.findPositions(3, 4, new SequenceCursor(sq, 10, 3, 0)));
+ assertNull(sq.findPositions(3, 4, new SequenceCursor(sq, 12, 7, 0)));
+
+ // find positions for columns 2-6 (C--DE) given B cursor
+ range = sq.findPositions(2, 6, new SequenceCursor(sq, 9, 2, 0)); // CDE
+ assertEquals(new Range(10, 12), range);
+
+ // repeat using C as cursor
+ range = sq.findPositions(2, 6, new SequenceCursor(sq, 10, 3, 0));
+ assertEquals(new Range(10, 12), range);
+
+ // repeat using D as cursor
+ range = sq.findPositions(2, 6, new SequenceCursor(sq, 11, 6, 0));
+ assertEquals(new Range(10, 12), range);
+
+ // repeat using E as cursor
+ range = sq.findPositions(2, 6, new SequenceCursor(sq, 12, 7, 0));
+ assertEquals(new Range(10, 12), range);
+
+ // repeat using F as cursor
+ range = sq.findPositions(2, 6, new SequenceCursor(sq, 13, 9, 0));
+ assertEquals(new Range(10, 12), range);
+ }
}