+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.datamodel;
+import java.util.Locale;
+
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
-import jalview.datamodel.ResidueCount;
import jalview.datamodel.ResidueCount.SymbolCounts;
+import jalview.gui.JvOptionPane;
import org.junit.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ResidueCountTest
{
+
+ @BeforeClass(alwaysRun = true)
+ public void setUpJvOptionPane()
+ {
+ JvOptionPane.setInteractiveMode(false);
+ JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+ }
+
/**
* Test a mix of add and put for nucleotide counting
*/
rc.add('-');
rc.add('.');
rc.add(' ');
-
+
assertEquals(rc.getGapCount(), 4);
assertEquals(rc.getCount(' '), 4);
assertEquals(rc.getCount('-'), 4);
assertEquals(rc.getCount('.'), 4);
assertFalse(rc.isUsingOtherData());
assertFalse(rc.isCountingInts());
+
+ rc.set(ResidueCount.GAP_COUNT, Short.MAX_VALUE - 2);
+ assertEquals(rc.getGapCount(), Short.MAX_VALUE - 2);
+ assertFalse(rc.isCountingInts());
+ rc.addGap();
+ assertEquals(rc.getGapCount(), Short.MAX_VALUE - 1);
+ assertFalse(rc.isCountingInts());
+ rc.addGap();
+ assertEquals(rc.getGapCount(), Short.MAX_VALUE);
+ rc.addGap();
+ assertTrue(rc.isCountingInts());
+ assertEquals(rc.getGapCount(), Short.MAX_VALUE + 1);
}
@Test(groups = "Functional")
ResidueCount rc = new ResidueCount(false);
// expected characters (upper or lower case):
String aas = "ACDEFGHIKLMNPQRSTVWXY";
- String lower = aas.toLowerCase();
+ String lower = aas.toLowerCase(Locale.ROOT);
for (int i = 0; i < aas.length(); i++)
{
rc.put(aas.charAt(i), i);
ResidueCount rc = new ResidueCount(true);
// expected characters (upper or lower case):
String nucs = "ACGTUN";
- String lower = nucs.toLowerCase();
+ String lower = nucs.toLowerCase(Locale.ROOT);
for (int i = 0; i < nucs.length(); i++)
{
rc.put(nucs.charAt(i), i);
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();
rc.add('Q');
rc.add('K');
}
rc.add('F');
-
+
+ /*
+ * percentages are rounded (0.5 rounded up)
+ * 10/40 9/40 7/40 6/40 1/40
+ */
assertEquals(rc.getTooltip(40, 0),
- "P 25%; W 22%; C 17%; Q 17%; K 15%; F 2%");
+ "P 25%; W 23%; C 18%; Q 18%; K 15%; F 3%");
+ rc.add('Q');
+ /*
+ * 10/30 9/30 8/30 7/30 6/30 1/30
+ */
assertEquals(rc.getTooltip(30, 1),
- "P 33.3%; W 30.0%; C 23.3%; Q 23.3%; K 20.0%; F 3.3%");
+ "P 33.3%; W 30.0%; Q 26.7%; C 23.3%; K 20.0%; F 3.3%");
}
@Test(groups = "Functional")