Commit Graph

9 Commits

Author SHA1 Message Date
Owen Leibman b19fcef51f Autofilter Part 1
Most of the remaining 32-bit-unsafe date handling that remains in PhpSpreadsheet is in AutoFilter. Cleaning this up demonstrated that there are a lot of problems with AutoFilter, and I will do it in (probably two) pieces.

In this PR:
- Dynamic date processing was really wrong. There were no tests nor samples to exercise this code. (If you need details, you can try running the new sample against old code.) It is completely re-written.
- ThisYear/Month/Week/Quarter had been omitted.
- Rules such as AUTOFILTER_RULETYPE_DYNAMIC_MONTH_2 were almost correct, but showed some off-by-1 errors. I suspect these were timezone-related, and therefore more obvious to those of us far away from Greenwich.
- All Autofilter tests are moved to a single directory.
- The documentation suggested using null with the Dynamic Date setup, but Phpstan did not like that in my new tests/samples. Rather than change the doc block, I changed the documentation to suggest null string.
- I created a new sample to generate sheets using all the dynamic filters.
- I have added some new unit tests for each of the dynamic filters. I would love to be able to add some "time travel" tests because the dynamic nature of the filter makes most of the results change from day to day, which presents significant challenges in writing comprehensive unit tests (the same is true for code coverage). I was not able to find a good way to simulate time within PhpUnit, but the Linux 'faketime' package was extraordinarily easy and helpful in allowing me to confirm some edge cases. I had less satisfactory results with some Windows equivalents, but was still able to run some tests.
- Code coverage increases from below 60% to above 80%.

To be done:
- Some 32-bit unsafe dates remain in filterTestInDateGroupSet.
- Also in some of the existing AutoFilter samples.
- Study existing unit tests for AutoFilter which use mocking to see if they can/should be replaced with 'real' tests.
- Improve code coverage in AutoFilter, AutoFilter/Column, and AutoFilter/Common/Rule.
2021-06-02 20:46:14 -07:00
Adrien Crivelli dcf3b9860d
Code highlight in docs for PhpStorm 2020-05-31 22:44:25 +09:00
Adrien Crivelli 57a0297011
HTML entities should not be escaped in Markdown 2018-07-24 10:13:58 +09:00
Paul Klimov eb612157dd array short syntax in documentaiton (#373) 2018-02-25 13:16:04 +01:00
Adrien Crivelli c46008b2be
Quote class names in docs 2017-12-30 19:44:32 +09:00
Adrien Crivelli 50a0ec58af
Merge all examples together
Closes #17
2017-10-01 17:48:59 +09:00
Adrien Crivelli 8e8d0e4a30
Improve doc formatting with backticks 2017-03-13 14:57:37 +09:00
Adrien Crivelli a06731fcc6
Wrap lines to 80
We wrapped lines to make easier the source easier to read, and to have more manageable diffs.

This was done with something like:

```sh
pandoc --wrap=auto --atx-headers -f markdown -t markdown-fenced_code_attributes+pipe_tables+raw_html+intraword_underscores`
```
2016-12-04 00:00:54 +09:00
Adrien Crivelli 90da50f3c7
Reorganise documentation
We aim for long pages instead of several small one, to make
`CTRL+F`ing easier and URL less prone to changes in the future.
There is still way to improve it though...
2016-12-03 22:16:45 +09:00