PhpSpreadsheet/tests/data/Calculation/MathTrig
oleibman cabcfaa522
ROUND Accepts null, false, and true as First Parameter (#1837)
* ROUND Accepts null, false, and true as First Parameter

Issue #1789 was addressed by PR #1799. In a follow-up discussion,
it came to light that ROUND was not handling the unexpected case where the
first parameter is an empty cell in the same manner that Excel does.
Subsequent investigation showed that a boolean first parameter is permitted.
I broadened my investigation to include the following related functions.
- ROUNDUP
- ROUNDDOWN
- MROUND
- TRUNC
- INT
- FLOOR
- FLOOR.MATH
- FLOOR.PRECISE
- CEILING
- CEILING.MATH
- CEILING.PRECISE

All of these allow a NULL first parameter, and all except MROUND allow boolean.
For completeness, I will note that all treat null string as invalid.
I suspect there are other functions which permit
similarly unexpected parameters, but I consider them out of scope for this PR.

CEILING.MATH and CEILING.PRECISE were unimplemented, and are now supported
as part of this PR.

The tests for each of these functions have been re-coded, though all the original
test data is still included in the test cases, plus several new cases for each.
The new tests now take place as a user would invoke the functions,
through a spreadsheet cell rather than a
direct call to the appropriate function within Calculation/MathTrig.
Aside from being more realistic, the new tests are also more complete.
For example, FLOOR.MATH can take from 1-3 arguments, and the existing tests
confirmed that the function in Calculation could handle a single argument.
However, the function list in Calculation.php erroneously set the number of
arguments for FLOOR.MATH to exactly 3, so, if a user tried to get the calculated
result of a cell containing FLOOR.MATH(1.2), the result would be an Exception.

Aside from the parameter support, there are a few minor code changes.
Ods, as well as Gnumeric, allows the omission of the second parameter for
FLOAT and CEILING; Excel does not. A potential divide-by-zero error is
avoided in CEILING, FLOOR, and FLOORMATH.

I will note that it would probably be beneficial in terms of maintainability
to break MathTrig up into many individual modules. The same would hold for the
other Calculation modules. I would be willing to look into this if you agree
that it would be worthwhile.
2021-02-13 21:00:08 +01:00
..
ABS.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
ACOS.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
ACOSH.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
ACOT.php Add further new Functions introduced in MS Excel 2013 and 2016 (#608) 2018-07-22 19:17:04 +01:00
ACOTH.php Add further new Functions introduced in MS Excel 2013 and 2016 (#608) 2018-07-22 19:17:04 +01:00
ARABIC.php Update PHP-CS-Fixer rules 2020-05-18 13:49:57 +09:00
ASIN.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
ASINH.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
ATAN.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
ATAN2.php Refactoring of math trig tests (#1102) 2019-07-23 00:50:30 +02:00
ATANH.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
BASE.php Added support for the base function (#1344) 2020-02-19 20:12:30 +01:00
CEILING.php ROUND Accepts null, false, and true as First Parameter (#1837) 2021-02-13 21:00:08 +01:00
CEILINGMATH.php ROUND Accepts null, false, and true as First Parameter (#1837) 2021-02-13 21:00:08 +01:00
CEILINGPRECISE.php ROUND Accepts null, false, and true as First Parameter (#1837) 2021-02-13 21:00:08 +01:00
COMBIN.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
COS.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
COSH.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
COT.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
COTH.php Add further new Functions introduced in MS Excel 2013 and 2016 (#608) 2018-07-22 19:17:04 +01:00
CSC.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
CSCH.php Add further new Functions introduced in MS Excel 2013 and 2016 (#608) 2018-07-22 19:17:04 +01:00
DEGREES.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
EVEN.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
EXP.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
FACT.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
FACTDOUBLE.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
FLOOR.php ROUND Accepts null, false, and true as First Parameter (#1837) 2021-02-13 21:00:08 +01:00
FLOORMATH.php ROUND Accepts null, false, and true as First Parameter (#1837) 2021-02-13 21:00:08 +01:00
FLOORPRECISE.php ROUND Accepts null, false, and true as First Parameter (#1837) 2021-02-13 21:00:08 +01:00
GCD.php style fixes 2017-11-26 23:18:11 +00:00
INT.php ROUND Accepts null, false, and true as First Parameter (#1837) 2021-02-13 21:00:08 +01:00
LCM.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
LN.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
LOG.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
LOG10.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
MDETERM.php Update PHP-CS-Fixer rules 2020-05-18 13:49:57 +09:00
MINVERSE.php Update PHP-CS-Fixer rules 2020-05-18 13:49:57 +09:00
MMULT.php Update PHP-CS-Fixer rules 2020-05-18 13:49:57 +09:00
MOD.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
MROUND.php ROUND Accepts null, false, and true as First Parameter (#1837) 2021-02-13 21:00:08 +01:00
MULTINOMIAL.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
ODD.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
POWER.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
PRODUCT.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
QUOTIENT.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
RADIANS.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
ROMAN.php Add further new Functions introduced in MS Excel 2013 and 2016 (#608) 2018-07-22 19:17:04 +01:00
ROUND.php ROUND Accepts null, false, and true as First Parameter (#1837) 2021-02-13 21:00:08 +01:00
ROUNDDOWN.php ROUND Accepts null, false, and true as First Parameter (#1837) 2021-02-13 21:00:08 +01:00
ROUNDUP.php ROUND Accepts null, false, and true as First Parameter (#1837) 2021-02-13 21:00:08 +01:00
SEC.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
SECH.php Add further new Functions introduced in MS Excel 2013 and 2016 (#608) 2018-07-22 19:17:04 +01:00
SERIESSUM.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
SIGN.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
SIN.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
SINH.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
SQRT.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
SQRTPI.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
SUBTOTAL.php Fix unit tests for PHP 5.6 2018-05-07 11:53:55 +09:00
SUBTOTALHIDDEN.php Fix unit tests for PHP 5.6 2018-05-07 11:53:55 +09:00
SUBTOTALNESTED.php Add further new Functions introduced in MS Excel 2013 and 2016 (#608) 2018-07-22 19:17:04 +01:00
SUMIF.php Update PHP-CS-Fixer rules 2020-05-18 13:49:57 +09:00
SUMIFS.php SUMIFS sum values only once 2018-10-28 13:09:08 +11:00
SUMPRODUCT.php Add further new Functions introduced in MS Excel 2013 and 2016 (#608) 2018-07-22 19:17:04 +01:00
SUMSQ.php Use proper syntax for variadic functions 2017-01-23 15:01:20 +09:00
SUMX2MY2.php Add further new Functions introduced in MS Excel 2013 and 2016 (#608) 2018-07-22 19:17:04 +01:00
SUMX2PY2.php Add further new Functions introduced in MS Excel 2013 and 2016 (#608) 2018-07-22 19:17:04 +01:00
SUMXMY2.php Add further new Functions introduced in MS Excel 2013 and 2016 (#608) 2018-07-22 19:17:04 +01:00
TAN.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
TANH.php Problems Using Builtin PHP Functions Directly As Excel Functions (#1799) 2021-01-26 22:55:06 +01:00
TRUNC.php ROUND Accepts null, false, and true as First Parameter (#1837) 2021-02-13 21:00:08 +01:00