2016-01-06 10:09 GMT+01:00 Sven Van Caekenberghe <sven@stfx.eu>:
Hallo Nicolai,

> On 06 Jan 2016, at 09:58, Nicolai Hess <nicolaihess@gmail.com> wrote:
>
>
> see issues 17302/17242/17227
> String>>findString:startindAt:caseSensitive appears to be failing for extended charsets
> String>>compare:caseSensitive seems to be failing for extended charset comparisons
> String>>beginsWithEmpty:caseSensitive: has test failure for some cases
>
> the problem is, the standard character set used for building the CaseInsensitiveOrder map
> only maps characters from the set of ascii characters but it is used in the findString/compare/beginsWith-methods for all byte characters.
>
> Any objections if we fill this map like it is suggested in case 17242 ?
>
> CaseInsensitiveOrder := AsciiOrder copy.
>�� �� ��(0 to: 255) do:[ :v |
>�� �� �� �� �� �� ��| char upper |
>�� �� �� �� �� �� ��char := v asCharacter.
>�� �� �� �� �� �� ��upper := char asUppercase.
>�� �� �� �� �� �� ��upper isOctetCharacter
>�� �� �� �� �� �� �� �� ��ifFalse: [ upper := char ].
>�� �� �� �� �� �� ��CaseInsensitiveOrder at: char asciiValue + 1 put: (CaseInsensitiveOrder at: upper asciiValue + 1) ].
>
> (the check for #isOctectCharacter is needed because for some entries the correspondending
> uppercase character is not within this character set).
>
> This would solve all three issues.
>
>
> nicolai

That looks like a beautiful fix that makes perfect sense.
If all tests are green, I see no reason not to do it.

Thanks for you feedback.
��
��
Thanks and well done (again),

:)
��

Sven