Package org.apache.poi.hssf.record.formula.functions

Source Code of org.apache.poi.hssf.record.formula.functions.TestPoisson

package org.apache.poi.hssf.record.formula.functions;

import junit.framework.TestCase;

import org.apache.poi.hssf.record.formula.eval.BoolEval;
import org.apache.poi.hssf.record.formula.eval.ErrorEval;
import org.apache.poi.hssf.record.formula.eval.NumberEval;
import org.apache.poi.hssf.record.formula.eval.ValueEval;


/**
* Tests for Excel function POISSON(x,mean,cumulative)
* @author Kalpesh Parmar
*/
public class TestPoisson extends TestCase {

    private static final double DELTA = 1E-15;

    private static ValueEval invokePoisson(double x, double mean, boolean cumulative)
    {

        ValueEval[] valueEvals = new ValueEval[3];
        valueEvals[0] = new NumberEval(x);
        valueEvals[1] = new NumberEval(mean);
        valueEvals[2] = BoolEval.valueOf(cumulative);

        return NumericFunction.POISSON.evaluate(valueEvals,-1,-1);
  }

    public void testCumulativeProbability()
    {
        double x = 1;
        double mean = 0.2;
        double result = 0.9824769036935787; // known result

        NumberEval myResult = (NumberEval)invokePoisson(x,mean,true);

        assertEquals(myResult.getNumberValue(), result, DELTA);
    }

    public void testNonCumulativeProbability()
    {
        double x = 0;
        double mean = 0.2;
        double result = 0.8187307530779818; // known result
       
        NumberEval myResult = (NumberEval)invokePoisson(x,mean,false);

        assertEquals(myResult.getNumberValue(), result, DELTA);
    }

    public void testNegativeMean()
    {
        double x = 0;
        double mean = -0.2;

        ErrorEval myResult = (ErrorEval)invokePoisson(x,mean,false);

        assertEquals(ErrorEval.NUM_ERROR.getErrorCode(), myResult.getErrorCode());
    }

    public void testNegativeX()
    {
        double x = -1;
        double mean = 0.2;

        ErrorEval myResult = (ErrorEval)invokePoisson(x,mean,false);

        assertEquals(ErrorEval.NUM_ERROR.getErrorCode(), myResult.getErrorCode());   
    }



    public void testXAsDecimalNumber()
    {
        double x = 1.1;
        double mean = 0.2;
        double result = 0.9824769036935787; // known result

        NumberEval myResult = (NumberEval)invokePoisson(x,mean,true);

        assertEquals(myResult.getNumberValue(), result, DELTA);
    }

    public void testXZeroMeanZero()
    {
        double x = 0;
        double mean = 0;
        double result = 1; // known result in excel

        NumberEval myResult = (NumberEval)invokePoisson(x,mean,true);

        assertEquals(myResult.getNumberValue(), result, DELTA);
    }
}
TOP

Related Classes of org.apache.poi.hssf.record.formula.functions.TestPoisson

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.