PhpSpreadsheet/tests/PhpSpreadsheetTests
oleibman 95d9cc965d
Refinement for XIRR (#2487)
* Refinement for XIRR

Fix #2469. The algorithm used for XIRR is known not to converge in some cases, some of which are because the value is legitimately unsolvable; for others, using a different guess might help.

The algorithm uses continual guesses at a rate to hopefully converge on the solution. The code in Python package xirr (https://github.com/tarioch/xirr/) suggests a refinement when this rate falls below -1. Adopting this refinement solves the problem for the data in issue 2469 without any adverse effect on the existing tests. My thanks to @tarioch for that refinement.

The data from 2469 is, of course, added to the test cases. The user also mentions that an initial guess equal to the actual result doesn't converge either. A test is also added to confirm that that case now works.

The test cases are changed to run in the context of a spreadsheet rather than by direct calls to XIRR calculation routine. This revealed some data validation errors which are also cleaned up with this PR. This suggests that other financial tests might benefit from the same change; I will look into that.

* More Unit Tests

From https://github.com/RayDeCampo/java-xirr/blob/master/src/test/java/org/decampo/xirr/XirrTest.java
https://github.com/tarioch/xirr/blob/master/tests/test_math.py

Note that there are some cases where the PHP tests do not converge, but the non-PHP tests do. I have confirmed in each of those cases that Excel does not converge, so the PhpSpreadsheet results are good, at least for now. The discrepancies are noted in comments in the test member.
2022-01-13 19:31:46 -08:00
..
Calculation Refinement for XIRR (#2487) 2022-01-13 19:31:46 -08:00
Cell Update Some Doc Block Annotations (#2351) 2021-11-11 23:38:05 -08:00
Chart DocBlock Changes for Chart/Title 2021-07-02 14:33:43 -07:00
Collection Resolve Deprecated setMethods() call when Mocking for tests (#1925) 2021-03-15 14:50:05 +01:00
Custom Reduce PHPStan error in tests 2021-04-12 11:10:23 +09:00
Document Correct Some Problems Which Will Show Up for PHP8.1 (#2191) 2021-06-29 19:54:08 +02:00
Features/AutoFilter/Xlsx Issue 2216 resolve office365 auto filter structure move (#2218) 2021-07-12 03:19:40 +02:00
Functional Replace Tests With Unneeded Mocking (#2465) 2021-12-31 13:24:43 -08:00
Helper PhpUnit and Jpgraph (#2307) 2021-09-26 09:39:15 -07:00
Reader Handle Explicit "Date" Type for Cell (#2485) 2022-01-13 18:40:18 -08:00
Shared Tweaks to Input File Validation (#2217) 2021-07-24 20:44:04 -07:00
Style Fill Pattern Start and End Colors (#2444) 2021-12-18 08:53:23 -08:00
Worksheet Recalibrate Row/Column Dimensions After removeRow/Col (#2486) 2022-01-13 19:06:22 -08:00
Writer Xlsx image background in comments #1547 (#2422) 2021-12-17 06:10:59 -08:00
CommentTest.php Size validator for comment dimensions and margins 2020-11-02 21:24:27 +01:00
DefinedNameFormulaTest.php Reduce PHPStan error in tests 2021-04-12 11:10:23 +09:00
DefinedNameTest.php Reduce PHPStan error in tests 2021-04-12 11:10:23 +09:00
DocumentGeneratorTest.php Move documentation builder to infra so that it isn't included in non `--dev` composer downloads 2021-05-28 22:35:37 +02:00
HashTableTest.php Improve Coverage for HashTable, Fix Clone 2021-05-30 13:03:37 +02:00
IOFactoryTest.php Tweaks to Input File Validation (#2217) 2021-07-24 20:44:04 -07:00
LocaleGeneratorTest.php Fix phpcs, phpstan and scrutinizer issues 2021-05-28 22:35:37 +02:00
NamedFormulaTest.php Named formula implementation, and improved handling of Defined Names generally (#1535) 2020-07-26 12:00:06 +02:00
NamedRange2Test.php Validate Input to SetSelectedCells (#2280) 2021-09-11 06:55:00 -07:00
NamedRangeTest.php Named formula implementation, and improved handling of Defined Names generally (#1535) 2020-07-26 12:00:06 +02:00
ReferenceHelperTest.php Respect DataType in insertNewBefore (#2433) 2021-12-04 08:31:38 -08:00
SettingsTest.php Fix SettingsTest 2021-06-30 11:33:35 -07:00
SpreadsheetTest.php Reduce PHPStan error in tests 2021-04-12 11:10:23 +09:00