X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=inline;f=tests%2Ftest-strcasestr.c;h=88798a5666d16699a8d07e366c866371a529686a;hb=ae75d79451c1b7ba6085e14b80f94681bec35b1c;hp=5ea0f4e792109e481a5ecc6b46e9ba856c107980;hpb=9e50ddc83c2aa9cccbe954d561eb2380e4d3bfe7;p=gnulib.git
diff --git a/tests/test-strcasestr.c b/tests/test-strcasestr.c
index 5ea0f4e79..88798a566 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,24 +12,43 @@
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. */
-#ifdef HAVE_CONFIG_H
-# include
-#endif
+#include
#include
+#include
+#include
#include
-
-#define ASSERT(expr) if (!(expr)) abort ();
+#include
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
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 memmem is known to not take too
+ long. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (50);
+#endif
+
{
const char input[] = "foo";
const char *result = strcasestr (input, "");
@@ -54,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. */
{
@@ -103,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);
@@ -123,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;
}