From 00893e79fc62966067af1a106567db96bd170338 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sun, 3 Mar 2024 19:11:32 +0100 Subject: New upstream version 1.2 --- tests/unistr/test-u-strstr.h | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) (limited to 'tests/unistr/test-u-strstr.h') diff --git a/tests/unistr/test-u-strstr.h b/tests/unistr/test-u-strstr.h index d53183e1..36783cdf 100644 --- a/tests/unistr/test-u-strstr.h +++ b/tests/unistr/test-u-strstr.h @@ -1,5 +1,5 @@ /* Test of uN_strstr() functions. - Copyright (C) 2004, 2007-2022 Free Software Foundation, Inc. + Copyright (C) 2004, 2007-2024 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -207,4 +207,42 @@ test_u_strstr (void) free (needle); free (haystack); } + + /* Test case from Yves Bastide. + */ + { + const UNIT input[] = + { 'p', 'l', 'a', 'y', 'i', 'n', 'g', ' ', 'p', 'l', 'a', 'y', ' ', 'p', + 'l', 'a', 'y', ' ', 'p', 'l', 'a', 'y', ' ', 'a', 'l', 'w', 'a', 'y', + 's', 0 + }; + const UNIT needle[] = + { 'p', 'l', 'a', 'y', ' ', 'p', 'l', 'a', 'y', ' ', 'p', 'l', 'a', 'y', + 0 + }; + const UNIT *result = U_STRSTR (input, needle); + ASSERT (result == input + 8); + } + + /* Test long needles. */ + { + size_t m = 1024; + UNIT *haystack = (UNIT *) malloc ((2 * m + 1) * sizeof (UNIT)); + UNIT *needle = (UNIT *) malloc ((m + 1) * sizeof (UNIT)); + if (haystack != NULL && needle != NULL) + { + const UNIT *p; + haystack[0] = 'x'; + U_SET (haystack + 1, ' ', m - 1); + U_SET (haystack + m, 'x', m); + haystack[2 * m] = '\0'; + U_SET (needle, 'x', m); + needle[m] = '\0'; + p = U_STRSTR (haystack, needle); + ASSERT (p); + ASSERT (p - haystack == m); + } + free (needle); + free (haystack); + } } -- cgit v1.2.3