X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fanalysis%2FParsePropertiesTest.java;h=a01d255f7ee4436f0adf13b55517ccdf47d291ac;hb=ad251609d6d0d12aaa6d466b91d719dabf269d7b;hp=a679a469aa8fc8a9c36bac511f3dcb2eeaecfd40;hpb=d07fe6a0891b57a9d707e356f7769395ce94b0da;p=jalview.git diff --git a/test/jalview/analysis/ParsePropertiesTest.java b/test/jalview/analysis/ParsePropertiesTest.java index a679a46..a01d255 100644 --- a/test/jalview/analysis/ParsePropertiesTest.java +++ b/test/jalview/analysis/ParsePropertiesTest.java @@ -3,6 +3,8 @@ package jalview.analysis; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; +import java.util.List; + import org.junit.Before; import org.junit.Test; @@ -47,9 +49,6 @@ public class ParsePropertiesTest @Test public void testGetScoresFromDescription() { - // TODO - test the regex actually used by Jalview? - // \\W*([-+eE0-9.]+) - // see AlignFrame.extractScores_actionPerformed String regex = ".*([-0-9.+]+)"; final int count = pp.getScoresFromDescription("my Score", "my Score Description", regex, true); @@ -138,4 +137,57 @@ public class ParsePropertiesTest assertEquals("my Score Description (column 1)", anns[1].description); assertEquals("my Score_1", anns[1].label); } + + /** + * Test with a regex that looks for numbers separated by words - as currently + * used in Jalview (May 2015) + * + * @see AlignFrame.extractScores_actionPerformed + */ + @Test + public void testGetScoresFromDescription_wordBoundaries() + { + String regex = "\\W*([-+eE0-9.]+)"; + List seqs = al.getSequences(); + seqs.get(0).setDescription("Ferredoxin"); + seqs.get(1).setDescription(" Ferredoxin-1, chloroplast precursor"); + seqs.get(2).setDescription("GH28E30p"); + seqs.get(3).setDescription("At1g10960/T19D16_12"); + final int count = pp.getScoresFromDescription("description column", + "score in description column ", regex, true); + assertEquals(3, count); + + /* + * No score parsable from seq1 description + */ + AlignmentAnnotation[] anns = al.getSequenceAt(0).getAnnotation(); + assertNull(anns); + + /* + * Seq2 description has a '1' in it + */ + anns = al.getSequenceAt(1).getAnnotation(); + assertEquals(1, anns.length); + assertEquals(1d, anns[0].getScore(), 0.001d); + + /* + * Seq3 description has '28E30' in it + * + * Note: 1.8E308 or larger would result in 'Infinity' + */ + anns = al.getSequenceAt(2).getAnnotation(); + assertEquals(1, anns.length); + assertEquals(2.8E31d, anns[0].getScore(), 0.001d); + + /* + * Seq4 description has several numbers in it + */ + anns = al.getSequenceAt(3).getAnnotation(); + assertEquals(5, anns.length); + assertEquals(1d, anns[0].getScore(), 0.001d); + assertEquals(10960d, anns[1].getScore(), 0.001d); + assertEquals(19d, anns[2].getScore(), 0.001d); + assertEquals(16d, anns[3].getScore(), 0.001d); + assertEquals(12d, anns[4].getScore(), 0.001d); + } }