/* ==================================================================== | |
Licensed to the Apache Software Foundation (ASF) under one or more | |
contributor license agreements. See the NOTICE file distributed with | |
this work for additional information regarding copyright ownership. | |
The ASF licenses this file to You under the Apache License, Version 2.0 | |
(the "License"); you may not use this file except in compliance with | |
the License. You may obtain a copy of the License at | |
http://www.apache.org/licenses/LICENSE-2.0 | |
Unless required by applicable law or agreed to in writing, software | |
distributed under the License is distributed on an "AS IS" BASIS, | |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
See the License for the specific language governing permissions and | |
limitations under the License. | |
==================================================================== */ | |
package org.apache.poi.ss.formula.functions; | |
import junit.framework.TestCase; | |
import org.apache.poi.ss.formula.eval.ErrorEval; | |
import org.apache.poi.ss.formula.eval.NumberEval; | |
import org.apache.poi.ss.formula.eval.StringEval; | |
import org.apache.poi.ss.formula.eval.ValueEval; | |
/** | |
* Tests for {@link Quotient} | |
* | |
* @author cedric dot walter @ gmail dot com | |
*/ | |
public class TestQuotient extends TestCase { | |
private static ValueEval invokeValue(String numerator, String denominator) { | |
ValueEval[] args = new ValueEval[]{new StringEval(numerator), new StringEval(denominator)}; | |
return new Quotient().evaluate(args, -1, -1); | |
} | |
private static void confirmValue(String msg, String numerator, String denominator, String expected) { | |
ValueEval result = invokeValue(numerator, denominator); | |
assertEquals(NumberEval.class, result.getClass()); | |
assertEquals(msg, expected, ((NumberEval) result).getStringValue()); | |
} | |
private static void confirmValueError(String msg, String numerator, String denominator, ErrorEval numError) { | |
ValueEval result = invokeValue(numerator, denominator); | |
assertEquals(ErrorEval.class, result.getClass()); | |
assertEquals(msg, numError, result); | |
} | |
public void testBasic() { | |
confirmValue("Integer portion of 5/2 (2)", "5", "2", "2"); | |
confirmValue("Integer portion of 4.5/3.1 (1)", "4.5", "3.1", "1"); | |
confirmValue("Integer portion of -10/3 (-3)", "-10", "3", "-3"); | |
confirmValue("Integer portion of -5.5/2 (-2)", "-5.5", "2", "-2"); | |
confirmValue("Integer portion of Pi/Avogadro (0)", "3.14159", "6.02214179E+23", "0"); | |
} | |
public void testErrors() { | |
confirmValueError("numerator is nonnumeric", "ABCD", "", ErrorEval.VALUE_INVALID); | |
confirmValueError("denominator is nonnumeric", "", "ABCD", ErrorEval.VALUE_INVALID); | |
confirmValueError("dividing by zero", "3.14159", "0", ErrorEval.DIV_ZERO); | |
} | |
} |