X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fanalysis%2FResidueCountTest.java;h=4a71f8988977e77690cb0dc623eac298589cfa79;hb=189c266962d87c8f748da4889626e1faa691c13e;hp=a26252c22c72891ab0f62aec1be45be97f54e126;hpb=62cdf4a06bef088c02f81c66ab2fe0bc3264e321;p=jalview.git diff --git a/test/jalview/analysis/ResidueCountTest.java b/test/jalview/analysis/ResidueCountTest.java index a26252c..4a71f89 100644 --- a/test/jalview/analysis/ResidueCountTest.java +++ b/test/jalview/analysis/ResidueCountTest.java @@ -71,6 +71,7 @@ public class ResidueCountTest * overflow from add */ ResidueCount rc = new ResidueCount(true); + rc.addGap(); rc.put('A', Short.MAX_VALUE - 1); assertFalse(rc.isCountingInts()); rc.add('A'); @@ -78,6 +79,12 @@ public class ResidueCountTest rc.add('A'); assertTrue(rc.isCountingInts()); assertEquals(rc.getCount('a'), Short.MAX_VALUE + 1); + rc.add('A'); + assertTrue(rc.isCountingInts()); + assertEquals(rc.getCount('a'), Short.MAX_VALUE + 2); + assertEquals(rc.getGapCount(), 1); + rc.addGap(); + assertEquals(rc.getGapCount(), 2); /* * overflow from put @@ -86,6 +93,17 @@ public class ResidueCountTest rc.put('G', Short.MAX_VALUE + 1); assertTrue(rc.isCountingInts()); assertEquals(rc.getCount('g'), Short.MAX_VALUE + 1); + rc.put('G', 1); + assertTrue(rc.isCountingInts()); + assertEquals(rc.getCount('g'), 1); + + /* + * underflow from put + */ + rc = new ResidueCount(true); + rc.put('G', Short.MIN_VALUE - 1); + assertTrue(rc.isCountingInts()); + assertEquals(rc.getCount('g'), Short.MIN_VALUE - 1); } /** @@ -135,6 +153,9 @@ public class ResidueCountTest rc.put('J', 4); assertTrue(rc.isUsingOtherData()); + assertEquals(rc.getCount('J'), 4); + rc.add('j'); + assertEquals(rc.getCount('J'), 5); } @Test(groups = "Functional") @@ -162,7 +183,7 @@ public class ResidueCountTest @Test(groups = "Functional") public void testGetModalCount() { - ResidueCount rc = new ResidueCount(); + ResidueCount rc = new ResidueCount(true); rc.add('c'); rc.add('g'); rc.add('c'); @@ -176,7 +197,7 @@ public class ResidueCountTest assertEquals(rc.getModalCount(), Short.MAX_VALUE + 1); // modal count is in the 'other data' counts - rc = new ResidueCount(); + rc = new ResidueCount(false); rc.add('Q'); rc.add('{'); rc.add('{'); @@ -196,7 +217,7 @@ public class ResidueCountTest @Test(groups = "Functional") public void testGetResiduesForCount() { - ResidueCount rc = new ResidueCount(); + ResidueCount rc = new ResidueCount(true); rc.add('c'); rc.add('g'); rc.add('c'); @@ -207,12 +228,20 @@ public class ResidueCountTest assertEquals(rc.getResiduesForCount(-1), ""); // modal count is in the 'short overflow' counts - rc = new ResidueCount(); + rc = new ResidueCount(true); rc.add('c'); rc.put('g', Short.MAX_VALUE); rc.add('G'); assertEquals(rc.getResiduesForCount(Short.MAX_VALUE + 1), "G"); assertEquals(rc.getResiduesForCount(1), "C"); + + // peptide modal count is in the 'short overflow' counts + rc = new ResidueCount(false); + rc.add('c'); + rc.put('p', Short.MAX_VALUE); + rc.add('P'); + assertEquals(rc.getResiduesForCount(Short.MAX_VALUE + 1), "P"); + assertEquals(rc.getResiduesForCount(1), "C"); // modal count is in the 'other data' counts rc = new ResidueCount(); @@ -248,27 +277,52 @@ public class ResidueCountTest } @Test(groups = "Functional") - public void testGetSymbolCounts() + public void testGetSymbolCounts_nucleotide() { - ResidueCount rc = new ResidueCount(); - rc.add('q'); + ResidueCount rc = new ResidueCount(true); + rc.add('g'); rc.add('c'); - rc.add('Q'); + rc.add('G'); rc.add('J'); // 'otherData' - rc.add('q'); - rc.add('x'); + rc.add('g'); + rc.add('N'); + rc.put('[', 0); // 'otherdata' SymbolCounts sc = rc.getSymbolCounts(); - Assert.assertArrayEquals(new char[] { 'C', 'Q', 'X', 'J' }, sc.symbols); - Assert.assertArrayEquals(new int[] { 1, 3, 1, 1 }, sc.values); + Assert.assertArrayEquals(new char[] { 'C', 'G', 'N', 'J', '[' }, + sc.symbols); + Assert.assertArrayEquals(new int[] { 1, 3, 1, 1, 0 }, sc.values); // now with overflow to int counts - rc.put('g', Short.MAX_VALUE); - rc.add('g'); + rc.put('U', Short.MAX_VALUE); + rc.add('u'); sc = rc.getSymbolCounts(); - Assert.assertArrayEquals(new char[] { 'C', 'G', 'Q', 'X', 'J' }, + Assert.assertArrayEquals(new char[] { 'C', 'G', 'N', 'U', 'J', '[' }, sc.symbols); - Assert.assertArrayEquals(new int[] { 1, 32768, 3, 1, 1 }, sc.values); + Assert.assertArrayEquals(new int[] { 1, 3, 1, 32768, 1, 0 }, sc.values); + } + + @Test(groups = "Functional") + public void testGetSymbolCounts_peptide() + { + ResidueCount rc = new ResidueCount(false); + rc.add('W'); + rc.add('q'); + rc.add('W'); + rc.add('Z'); // 'otherData' + rc.add('w'); + rc.add('L'); + + SymbolCounts sc = rc.getSymbolCounts(); + Assert.assertArrayEquals(new char[] { 'L', 'Q', 'W', 'Z' }, sc.symbols); + Assert.assertArrayEquals(new int[] { 1, 1, 3, 1 }, sc.values); + + // now with overflow to int counts + rc.put('W', Short.MAX_VALUE); + rc.add('W'); + sc = rc.getSymbolCounts(); + Assert.assertArrayEquals(new char[] { 'L', 'Q', 'W', 'Z' }, sc.symbols); + Assert.assertArrayEquals(new int[] { 1, 1, 32768, 1 }, sc.values); } @Test(groups = "Functional") @@ -289,4 +343,62 @@ public class ResidueCountTest rc.add('g'); assertEquals(rc.toString(), "[ C:1 G:32768 Q:2 {:1 ]"); } + + @Test(groups = "Functional") + public void testGetTooltip() + { + ResidueCount rc = new ResidueCount(); + + // no counts! + assertEquals(rc.getTooltip(20, 1), ""); + + /* + * count 7 C, 6 K, 7 Q, 10 P, 9 W, 1 F (total 40) + */ + for (int i = 0; i < 7; i++) + { + rc.add('c'); + rc.add('q'); + } + for (int i = 0; i < 10; i++) + { + rc.add('p'); + } + for (int i = 0; i < 9; i++) + { + rc.add('W'); + } + for (int i = 0; i < 6; i++) + { + rc.add('K'); + } + rc.add('F'); + + assertEquals(rc.getTooltip(40, 0), + "P 25%; W 22%; C 17%; Q 17%; K 15%; F 2%"); + + assertEquals(rc.getTooltip(30, 1), + "P 33.3%; W 30.0%; C 23.3%; Q 23.3%; K 20.0%; F 3.3%"); + } + + @Test(groups = "Functional") + public void testPut() + { + ResidueCount rc = new ResidueCount(); + rc.put('q', 3); + assertEquals(rc.getCount('Q'), 3); + rc.put(' ', 4); + assertEquals(rc.getGapCount(), 4); + rc.put('.', 5); + assertEquals(rc.getGapCount(), 5); + rc.put('-', 6); + assertEquals(rc.getGapCount(), 6); + + rc.put('?', 5); + assertEquals(rc.getCount('?'), 5); + rc.put('?', 6); + rc.put('!', 7); + assertEquals(rc.getCount('?'), 6); + assertEquals(rc.getCount('!'), 7); + } }