Am Montag, 10. März 2014, 17:03:06 schrieb Andrew Johnson:
> epicsStringTest.c currently proves (amongst other things) that
>
> testOk1(epicsStrnCaseCmp(" ", "", 1) < 0);
> testOk1(epicsStrnCaseCmp("", " ", 1) > 0);
> testOk1(epicsStrnCaseCmp("abcd", "ABCDE", 1000) > 0);
> testOk1(epicsStrnCaseCmp("abcde", "ABCD", 1000) < 0);
>
> Unfortunately the first group are wrong, and glibc's str[n]casecmp()
> functions on RHEL6 agree with me. Longer strings should always compare
> greater than any initial subset of themselves.
Agreed. To my knowledge, this is how lexical order is defined, so I expect the
exact opposite of what the tests say (replace '<' with '>' and v.v.).
> testOk1(epicsStrCaseCmp("abcd", "ABCDE") != 0);
> testOk1(epicsStrCaseCmp("abcde", "ABCD") != 0);
> testOk1(epicsStrCaseCmp("abcde", "ABCDF") != 0);
>
> The second group probably
> uses != because the author didn't want to think about and fix the bug at
> the time...
Probably. My expectation here is
testOk1(epicsStrCaseCmp("abcd", "ABCD") == 0);
testOk1(epicsStrCaseCmp("abcd", "ABCDE") < 0);
testOk1(epicsStrCaseCmp("abcde", "ABCD") > 0);
testOk1(epicsStrCaseCmp("abcde", "ABCDF") < 0);
(First test added for clarity, this is case *in*sensitive comparison).
Cheers
Ben
--
Perl: There Is More Than One Way To Do It
Python: There Is One Way To Do It
Haskell: There Is One Way To Do It, Up To Isomorphism
________________________________
Helmholtz-Zentrum Berlin für Materialien und Energie GmbH
Mitglied der Hermann von Helmholtz-Gemeinschaft Deutscher Forschungszentren e.V.
Aufsichtsrat: Vorsitzender Prof. Dr. Dr. h.c. mult. Joachim Treusch, stv. Vorsitzende Dr. Beatrix Vierkorn-Rudolph
Geschäftsführung: Prof. Dr. Anke Rita Kaysser-Pyzalla, Thomas Frederking
Sitz Berlin, AG Charlottenburg, 89 HRB 5583
Postadresse:
Hahn-Meitner-Platz 1
D-14109 Berlin
http://www.helmholtz-berlin.de
- References:
- epicsStr[n]CaseCmp() Andrew Johnson
- Navigate by Date:
- Prev:
epicsStr[n]CaseCmp() Andrew Johnson
- Next:
Build failed in Jenkins: epics-base-3.15-win64s #1 APS Jenkins
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
<2014>
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
- Navigate by Thread:
- Prev:
epicsStr[n]CaseCmp() Andrew Johnson
- Next:
Build failed in Jenkins: epics-base-3.15-win64s #1 APS Jenkins
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
<2014>
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
|