X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fanalysis%2FTestAlignSeq.java;h=05575f454a95a308480a6368c8707800488b36c7;hb=eb3e681d6e82ccdd5d312d1981dfb306e7f479f0;hp=81514a42d9a21162dab68fa996135e312c3c6a44;hpb=ab22918ab8fc67d30dad1fb1ae0f37e51f49df95;p=jalview.git diff --git a/test/jalview/analysis/TestAlignSeq.java b/test/jalview/analysis/TestAlignSeq.java index 81514a4..05575f4 100644 --- a/test/jalview/analysis/TestAlignSeq.java +++ b/test/jalview/analysis/TestAlignSeq.java @@ -26,12 +26,18 @@ import static org.testng.AssertJUnit.assertNull; import jalview.datamodel.Mapping; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceI; +import jalview.gui.JvOptionPane; import java.io.PrintStream; +import java.nio.charset.Charset; +import java.util.Locale; +import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; +import com.google.common.base.Charsets; + /** * Test the alignment -> Mapping routines * @@ -41,12 +47,19 @@ import org.testng.annotations.Test; public class TestAlignSeq { + @BeforeClass(alwaysRun = true) + public void setUpJvOptionPane() + { + JvOptionPane.setInteractiveMode(false); + JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); + } + SequenceI s1, s2, s3; /** * @throws java.lang.Exception */ - @BeforeMethod + @BeforeMethod(alwaysRun = true) public void setUp() throws Exception { s1 = new Sequence("Seq1", "ASDFAQQQRRRSSS"); @@ -55,18 +68,17 @@ public class TestAlignSeq s2 = new Sequence("Seq2", "ASDFA"); s2.setStart(5); s2.setEnd(9); - s3 = new Sequence("Seq1", "SDFAQQQSSS"); + s3 = new Sequence("Seq3", "SDFAQQQSSS"); } - @Test(groups ={ "Functional" }) + @Test(groups = { "Functional" }) /** * simple test that mapping from alignment corresponds identical positions. */ public void testGetMappingForS1() { - AlignSeq as = AlignSeq - .doGlobalNWAlignment(s1, s2, AlignSeq.PEP); + AlignSeq as = AlignSeq.doGlobalNWAlignment(s1, s2, AlignSeq.PEP); System.out.println("s1: " + as.getAStr1()); System.out.println("s2: " + as.getAStr2()); @@ -75,18 +87,47 @@ public class TestAlignSeq assertEquals(as.getAStr1(), as.getAStr2()); Mapping s1tos2 = as.getMappingFromS1(false); + checkMapping(s1tos2, s1, s2); + } + + public void checkMapping(Mapping s1tos2, SequenceI _s1, SequenceI _s2) + { System.out.println(s1tos2.getMap().toString()); - for (int i = s2.getStart(); i < s2.getEnd(); i++) + for (int i = _s2.getStart(); i < _s2.getEnd(); i++) { - System.out.println("Position in s2: " + i - + " maps to position in s1: " + s1tos2.getPosition(i)); - // TODO fails: getCharAt doesn't allow for the start position?? - // assertEquals(String.valueOf(s2.getCharAt(i)), - // String.valueOf(s1.getCharAt(s1tos2.getPosition(i)))); + int p = s1tos2.getPosition(i); + char s2c = _s2.getCharAt(i - _s2.getStart()); + char s1c = _s1.getCharAt(p - _s1.getStart()); + System.out.println("Position in s2: " + i + s2c + + " maps to position in s1: " + p + s1c); + assertEquals(s1c, s2c); } } - @Test(groups ={ "Functional" }) + @Test(groups = { "Functional" }) + /** + * simple test that mapping from alignment corresponds identical positions. + */ + public void testGetMappingForS1_withLowerCase() + { + // make one of the sequences lower case + SequenceI ns2 = new Sequence(s2); + ns2.replace('D', 'd'); + AlignSeq as = AlignSeq.doGlobalNWAlignment(s1, ns2, AlignSeq.PEP); + System.out.println("s1: " + as.getAStr1()); + System.out.println("s2: " + as.getAStr2()); + + // aligned results match + assertEquals("ASDFA", as.getAStr1()); + assertEquals(as.getAStr1(), as.getAStr2().toUpperCase(Locale.ROOT)); + + Mapping s1tos2 = as.getMappingFromS1(false); + assertEquals("ASdFA", as.getAStr2()); + // verify mapping is consistent between original all-caps sequences + checkMapping(s1tos2, s1, s2); + } + + @Test(groups = { "Functional" }) public void testExtractGaps() { assertNull(AlignSeq.extractGaps(null, null)); @@ -96,7 +137,7 @@ public class TestAlignSeq assertEquals("ABCD", AlignSeq.extractGaps(" .-", ". -A-B.C D.")); } - @Test(groups ={ "Functional" }) + @Test(groups = { "Functional" }) public void testPrintAlignment() { AlignSeq as = AlignSeq.doGlobalNWAlignment(s1, s3, AlignSeq.PEP); @@ -117,10 +158,9 @@ public class TestAlignSeq }; as.printAlignment(ps); - String expected = "Score = 320\nLength of alignment = 10\nSequence Seq1 : 3 - 18 (Sequence length = 14)\nSequence Seq1 : 1 - 10 (Sequence length = 10)\n\n" - + "Seq1 SDFAQQQRRR\n" - + " ||||||| \n" - + "Seq1 SDFAQQQSSS\n\n" + "Percentage ID = 70.00\n\n"; + String expected = "Score = 320.0\nLength of alignment = 10\nSequence Seq1/4-13 (Sequence length = 14)\nSequence Seq3/1-10 (Sequence length = 10)\n\n" + + "Seq1/4-13 SDFAQQQRRR\n" + " ||||||| \n" + + "Seq3/1-10 SDFAQQQSSS\n\n" + "Percentage ID = 70.00\n\n"; assertEquals(expected, baos.toString()); } }