On 07/08/2018 03:21 AM, Mark Davis ☕️ wrote:
I'm surprised that the tests for 11.0 passed for a 10.0 implementation, because the following should have triggered a difference for WB. Can you check on this particular case?

÷ 0020 × 0020 ÷#÷ [0.2] SPACE (WSegSpace) × [3.4] SPACE (WSegSpace) ÷ [0.3]

I'm one of the people who advocated for this change, and I had already tailored our implementation of 10.0 to not break between horizontal white space, so it's actually not surprising that this rule didn't break


About the testing:

The tests are generated so that they go all the combinations of pairs, and some combinations of triples. The generated test cases use a sample from each partition of characters, to cut down on the file size to a reasonable level. That also means that some changes in the rules don't cause changes in the test results. Because it is not possible to test every combination, so there is also provision for additional test cases, such as those at the end of the files, eg:

https://unicode.org/Public/11.0.0/ucd/auxiliary/WordBreakTest.html
https://unicode.org/Public/10.0.0/ucd/auxiliary/WordBreakTest.html

We should extend those each time to make sure we cover combinations that aren't covered by pairs. There were some additions to that end; if they didn't cover enough cases, then we can look at your experience to add more.

I can suggest two strategies for further testing:

1. To do a full test, for each row check every combinations obtained by replacing each sample character by every other character in its partition. Eg for the above line that would mean testing every <WSegSpace, WSegSpace> sequence.

2. Use a monkey test against ICU. That is, generate random combinations of characters from different partitions and check that ICU and your implementation are in sync.

3. During the beta period, test your previous-version with the new test files. If there are no failures, yet there are changes in the rules, then raise that issue during the beta period so we can add tests.

I actually did this, and as I recall, did find some test failures. In retrospect, I must have screwed up somehow back then. I was under tight deadline pressure, and as a result, did more cursory beta testing than normal.

4. If possible, during the beta period upgrade your implementation and test against the new and old test files.


Anyone else have other suggestions for testing?

Mark


As an aside, a release or two ago, I implemented SB, and someone immediately found a bug, and accused me of releasing software that had not been tested at all. He had looked through the test suite and not found anything that looked like it was testing that. But he failed to find the test file which bundled up all your tests, in a manner he was not accustomed to, so it was easy for him to overlook. The bug only manifested itself in longer runs of characters than your pairs and triples tested. I looked at it, and your SB tests still seemed reasonable, and I should not expect a more complete series than you furnished.


Mark
//////

On Sun, Jul 8, 2018 at 6:52 AM, Karl Williamson via Unicode <unicode@unicode.org <mailto:unicode@unicode.org>> wrote:

    I am working on upgrading from Unicode 10 to Unicode 11.

    I used all the new files.

    The algorithms for some of the boundaries, like GCB and WB, have
    changed so that some of the property values no longer have code
    points associated with them.

    I ran the tests furnished in 11.0 for these boundaries, without
    having changed the algorithms from earlier releases.  All passed 100%.

    Unless I'm missing something, that indicates that the tests
    furnished in 11.0 do not contain instances that exercise these
    changes.  My guess is that the 10.0 tests were also deficient.

    I have been relying on the UCD to furnish tests that have enough
    coverage to sufficiently exercise the algorithms that are specified
    in UAX 31, but that appears to have been naive on my part




Reply via email to