X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-strcasestr.c;h=4abf49a0520eef7baa6f278649d72e20f5d65ba3;hb=b03b6bfb8daa20dceff4593229f0df2c68c37e6e;hp=6ecdb5287b08dec8380a06ca210fde1b403bf137;hpb=c0fea97ccf33a4e6b6f9116216b1634663f29474;p=gnulib.git
diff --git a/tests/test-strcasestr.c b/tests/test-strcasestr.c
index 6ecdb5287..4abf49a05 100644
--- a/tests/test-strcasestr.c
+++ b/tests/test-strcasestr.c
@@ -1,10 +1,10 @@
/* Test of case-insensitive searching in a string.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2008 Free Software Foundation, Inc.
- This program is free software; you can redistribute it and/or modify
+ 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
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -12,8 +12,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+ along with this program. If not, see . */
/* Written by Bruno Haible , 2007. */
@@ -21,8 +20,10 @@
#include
+#include
#include
#include
+#include
#define ASSERT(expr) \
do \
@@ -30,6 +31,7 @@
if (!(expr)) \
{ \
fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
abort (); \
} \
} \
@@ -38,6 +40,15 @@
int
main ()
{
+#if HAVE_DECL_ALARM
+ /* Declare failure if test takes too long, by using default abort
+ caused by SIGALRM. All known platforms that lack alarm also lack
+ strcasestr, and the replacement strcasestr is known to not take too
+ long. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (50);
+#endif
+
{
const char input[] = "foo";
const char *result = strcasestr (input, "");
@@ -62,6 +73,12 @@ main ()
ASSERT (result == NULL);
}
+ {
+ const char input[] = "ABC ABCDAB ABCDABCDABDE";
+ const char *result = strcasestr (input, "ABCDaBCD");
+ ASSERT (result == input + 11);
+ }
+
/* Check that a very long haystack is handled quickly if the needle is
short and occurs near the beginning. */
{
@@ -111,7 +128,6 @@ main ()
}
/* Check that the asymptotic worst-case complexity is not quadratic. */
-#if !HAVE_STRCASESTR /* The system's strcasestr() function fails this test. */
{
size_t m = 1000000;
char *haystack = (char *) malloc (2 * m + 2);
@@ -131,12 +147,9 @@ main ()
result = strcasestr (haystack, needle);
ASSERT (result == haystack + m);
}
- if (needle != NULL)
- free (needle);
- if (haystack != NULL)
- free (haystack);
+ free (needle);
+ free (haystack);
}
-#endif
return 0;
}