1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-03 01:18:10 +03:00

torture:charset: use < and > assertions for strcasecmp_m

strcasecmp_m is supposed to return a negative, zero, or positive
number, depending on whether the first argument is less than, equal to,
or greater than the second argument (respectively).

We have been asserting that it returns exactly the difference between
the codepoints in the first character that differs.

This fixes a knownfail on 32 bit.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15625

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
Douglas Bagnall 2024-04-05 13:14:38 +13:00 committed by Andrew Bartlett
parent 09c98ff126
commit ac0a8cd92c
2 changed files with 7 additions and 11 deletions

View File

@ -72,16 +72,16 @@ static bool test_strcasecmp_m(struct torture_context *tctx)
const char file_iso8859_1[7] = { 0x66, 0x69, 0x6c, 0x65, 0x2d, 0xe9, 0 }; const char file_iso8859_1[7] = { 0x66, 0x69, 0x6c, 0x65, 0x2d, 0xe9, 0 };
/* file.{accented e} in utf8 */ /* file.{accented e} in utf8 */
const char file_utf8[8] = { 0x66, 0x69, 0x6c, 0x65, 0x2d, 0xc3, 0xa9, 0 }; const char file_utf8[8] = { 0x66, 0x69, 0x6c, 0x65, 0x2d, 0xc3, 0xa9, 0 };
torture_assert_int_equal(tctx, strcasecmp_m("foo", "bar"), 4, "different strings both lower"); torture_assert_int_greater(tctx, strcasecmp_m("foo", "bar"), 0, "different strings both lower");
torture_assert_int_equal(tctx, strcasecmp_m("foo", "Bar"), 4, "different strings lower/upper"); torture_assert_int_greater(tctx, strcasecmp_m("foo", "Bar"), 0, "different strings lower/upper");
torture_assert_int_equal(tctx, strcasecmp_m("Foo", "bar"), 4, "different strings upper/lower"); torture_assert_int_greater(tctx, strcasecmp_m("Foo", "bar"), 0, "different strings upper/lower");
torture_assert_int_equal(tctx, strcasecmp_m("AFoo", "_bar"), 2, "different strings upper/lower"); torture_assert_int_greater(tctx, strcasecmp_m("AFoo", "_bar"), 0, "different strings upper/lower");
torture_assert_int_equal(tctx, strcasecmp_m("foo", "foo"), 0, "same case strings"); torture_assert_int_equal(tctx, strcasecmp_m("foo", "foo"), 0, "same case strings");
torture_assert_int_equal(tctx, strcasecmp_m("foo", "Foo"), 0, "different case strings"); torture_assert_int_equal(tctx, strcasecmp_m("foo", "Foo"), 0, "different case strings");
torture_assert_int_equal(tctx, strcasecmp_m(NULL, "Foo"), -1, "one NULL"); torture_assert_int_less(tctx, strcasecmp_m(NULL, "Foo"), 0, "one NULL");
torture_assert_int_equal(tctx, strcasecmp_m("foo", NULL), 1, "other NULL"); torture_assert_int_greater(tctx, strcasecmp_m("foo", NULL), 0, "other NULL");
torture_assert_int_equal(tctx, strcasecmp_m(NULL, NULL), 0, "both NULL"); torture_assert_int_equal(tctx, strcasecmp_m(NULL, NULL), 0, "both NULL");
torture_assert_int_equal(tctx, strcasecmp_m(file_iso8859_1, file_utf8), 38, torture_assert_int_greater(tctx, strcasecmp_m(file_iso8859_1, file_utf8), 0,
"file.{accented e} should differ"); "file.{accented e} should differ");
return true; return true;
} }

View File

@ -65,9 +65,6 @@
# [171(1386)/261 at 6m24s, 4 errors] samba4.local.charset # [171(1386)/261 at 6m24s, 4 errors] samba4.local.charset
# UNEXPECTED(failure): samba4.local.charset.strcasecmp(none) # UNEXPECTED(failure): samba4.local.charset.strcasecmp(none)
# REASON: Exception: Exception: ../../lib/util/charset/tests/charset.c:56: strcasecmp("foo", "bar") was 1 (0x1), expected 4 (0x4): different strings both lower # REASON: Exception: Exception: ../../lib/util/charset/tests/charset.c:56: strcasecmp("foo", "bar") was 1 (0x1), expected 4 (0x4): different strings both lower
# UNEXPECTED(failure): samba4.local.charset.strcasecmp_m(none)
# REASON: Exception: Exception: ../../lib/util/charset/tests/charset.c:85: strcasecmp_m(file_iso8859_1, file_utf8) was 1 (0x1), expected 38 (0x26): file.{accented e}
# should differ
# UNEXPECTED(failure): samba4.local.charset.strncasecmp(none) # UNEXPECTED(failure): samba4.local.charset.strncasecmp(none)
# REASON: Exception: Exception: ../../lib/util/charset/tests/charset.c:132: strncasecmp("foo", "bar", 3) was 1 (0x1), expected 4 (0x4): different strings both lower # REASON: Exception: Exception: ../../lib/util/charset/tests/charset.c:132: strncasecmp("foo", "bar", 3) was 1 (0x1), expected 4 (0x4): different strings both lower
# UNEXPECTED(failure): samba4.local.charset.strncasecmp_m(none) # UNEXPECTED(failure): samba4.local.charset.strncasecmp_m(none)
@ -82,7 +79,6 @@
# ERROR: Testsuite[samba4.local.charset] # ERROR: Testsuite[samba4.local.charset]
# REASON: Exit code was 1 # REASON: Exit code was 1
^samba4.local.charset.strcasecmp.none ^samba4.local.charset.strcasecmp.none
^samba4.local.charset.strcasecmp_m.none
^samba4.local.charset.strncasecmp.none ^samba4.local.charset.strncasecmp.none
^samba4.local.charset.strncasecmp_m.none ^samba4.local.charset.strncasecmp_m.none
# #