package test.beast.core.util; import org.junit.Test; import beast.core.parameter.BooleanParameter; import beast.core.parameter.IntegerParameter; import beast.core.parameter.RealParameter; import beast.core.util.Sum; import junit.framework.TestCase; public class SumTest extends TestCase { @Test public void testSum() { RealParameter p1 = new RealParameter("1.0 2.0"); Sum sum = new Sum(); // single argument sum sum.initByName("arg", p1); double v = sum.getArrayValue(); assertEquals(3.0, v, 1e-10); // multiple argument sum sum = new Sum(); RealParameter p2 = new RealParameter("2.0 2.5"); sum.initByName("arg", p1, "arg", p2); v = sum.getArrayValue(); assertEquals(7.5, v, 1e-10); // multiple same argument sum sum = new Sum(); sum.initByName("arg", p1, "arg", p1); v = sum.getArrayValue(); assertEquals(6.0, v, 1e-10); // sum of integers IntegerParameter p3 = new IntegerParameter("1 2 5"); sum = new Sum(); sum.initByName("arg", p3); v = sum.getArrayValue(); assertEquals(8.0, v, 1e-10); // sum of boolean BooleanParameter p4 = new BooleanParameter("true false false true true"); sum = new Sum(); sum.initByName("arg", p4); v = sum.getArrayValue(); assertEquals(3.0, v, 1e-10); // sum of booleans and integer sum = new Sum(); sum.initByName("arg", p4, "arg", p3); v = sum.getArrayValue(); assertEquals(11.0, v, 1e-10); // sum of booleans and real sum = new Sum(); sum.initByName("arg", p1, "arg", p4); v = sum.getArrayValue(); assertEquals(6.0, v, 1e-10); } }