Mercurial > hg > octave-nkf > gnulib-hg
annotate tests/test-c-strcasestr.c @ 14079:97fc9a21a8fb
maint: update almost all copyright ranges to include 2011
Run the new "make update-copyright" rule.
author | Jim Meyering <meyering@redhat.com> |
---|---|
date | Sat, 01 Jan 2011 20:17:23 +0100 |
parents | 1d8a613275c6 |
children | bf7bdef206dd |
rev | line source |
---|---|
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
1 /* Test of case-insensitive searching in a string. |
14079
97fc9a21a8fb
maint: update almost all copyright ranges to include 2011
Jim Meyering <meyering@redhat.com>
parents:
13772
diff
changeset
|
2 Copyright (C) 2007-2011 Free Software Foundation, Inc. |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
3 |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
8891
diff
changeset
|
4 This program is free software: you can redistribute it and/or modify |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
5 it under the terms of the GNU General Public License as published by |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
8891
diff
changeset
|
6 the Free Software Foundation; either version 3 of the License, or |
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
8891
diff
changeset
|
7 (at your option) any later version. |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
8 |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
9 This program is distributed in the hope that it will be useful, |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
10 but WITHOUT ANY WARRANTY; without even the implied warranty of |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
12 GNU General Public License for more details. |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
13 |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
14 You should have received a copy of the GNU General Public License |
9309
bbbbbf4cd1c5
Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents:
8891
diff
changeset
|
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
16 |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
17 /* Written by Bruno Haible <bruno@clisp.org>, 2007. */ |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
18 |
8891
633babea5f62
Unconditionally include <config.h> in unit tests.
Eric Blake <ebb9@byu.net>
parents:
8754
diff
changeset
|
19 #include <config.h> |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
20 |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
21 #include "c-strcasestr.h" |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
22 |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
23 #include <stdlib.h> |
8144 | 24 #include <string.h> |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
25 |
12496
a48d3d749ca5
Refactor common macros used in tests.
Bruno Haible <bruno@clisp.org>
parents:
12421
diff
changeset
|
26 #include "macros.h" |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
27 |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
28 int |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
29 main () |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
30 { |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
31 { |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
32 const char input[] = "foo"; |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
33 const char *result = c_strcasestr (input, ""); |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
34 ASSERT (result == input); |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
35 } |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
36 |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
37 { |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
38 const char input[] = "foo"; |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
39 const char *result = c_strcasestr (input, "O"); |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
40 ASSERT (result == input + 1); |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
41 } |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
42 |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
43 { |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
44 const char input[] = "ABC ABCDAB ABCDABCDABDE"; |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
45 const char *result = c_strcasestr (input, "ABCDaBD"); |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
46 ASSERT (result == input + 15); |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
47 } |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
48 |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
49 { |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
50 const char input[] = "ABC ABCDAB ABCDABCDABDE"; |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
51 const char *result = c_strcasestr (input, "ABCDaBE"); |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
52 ASSERT (result == NULL); |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
53 } |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
54 |
9630
729b6d4ffac1
Convert c-strcasestr to be more efficient.
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
55 { |
729b6d4ffac1
Convert c-strcasestr to be more efficient.
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
56 const char input[] = "ABC ABCDAB ABCDABCDABDE"; |
729b6d4ffac1
Convert c-strcasestr to be more efficient.
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
57 const char *result = c_strcasestr (input, "ABCDaBCD"); |
729b6d4ffac1
Convert c-strcasestr to be more efficient.
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
58 ASSERT (result == input + 11); |
729b6d4ffac1
Convert c-strcasestr to be more efficient.
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
59 } |
729b6d4ffac1
Convert c-strcasestr to be more efficient.
Eric Blake <ebb9@byu.net>
parents:
9309
diff
changeset
|
60 |
13772
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
61 /* Check that a long periodic needle does not cause false positives. */ |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
62 { |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
63 const char input[] = ("F_BD_CE_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD" |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
64 "_C3_88_20_EF_BF_BD_EF_BF_BD_EF_BF_BD" |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
65 "_C3_A7_20_EF_BF_BD"); |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
66 const char need[] = "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD"; |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
67 const char *result = c_strcasestr (input, need); |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
68 ASSERT (result == NULL); |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
69 } |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
70 { |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
71 const char input[] = ("F_BD_CE_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD" |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
72 "_C3_88_20_EF_BF_BD_EF_BF_BD_EF_BF_BD" |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
73 "_C3_A7_20_EF_BF_BD_DA_B5_C2_A6_20" |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
74 "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD"); |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
75 const char need[] = "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD"; |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
76 const char *result = c_strcasestr (input, need); |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
77 ASSERT (result == input + 115); |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
78 } |
1d8a613275c6
memmem, strstr, strcasestr: fix bug with long periodic needle
Eric Blake <eblake@redhat.com>
parents:
13415
diff
changeset
|
79 |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
80 /* Check that a very long haystack is handled quickly if the needle is |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
81 short and occurs near the beginning. */ |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
82 { |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
83 size_t repeat = 10000; |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
84 size_t m = 1000000; |
13415
a884db63982b
Avoid some more warnings from "gcc -Wwrite-strings".
Bruno Haible <bruno@clisp.org>
parents:
12559
diff
changeset
|
85 const char *needle = |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
86 "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
87 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaAAAAaaaaaaa" |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
88 "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
89 char *haystack = (char *) malloc (m + 1); |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
90 if (haystack != NULL) |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
91 { |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
92 memset (haystack, 'A', m); |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
93 haystack[0] = 'B'; |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
94 haystack[m] = '\0'; |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
95 |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
96 for (; repeat > 0; repeat--) |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
97 { |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
98 ASSERT (c_strcasestr (haystack, needle) == haystack + 1); |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
99 } |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
100 |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
101 free (haystack); |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
102 } |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
103 } |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
104 |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
105 /* Check that a very long needle is discarded quickly if the haystack is |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
106 short. */ |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
107 { |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
108 size_t repeat = 10000; |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
109 size_t m = 1000000; |
13415
a884db63982b
Avoid some more warnings from "gcc -Wwrite-strings".
Bruno Haible <bruno@clisp.org>
parents:
12559
diff
changeset
|
110 const char *haystack = |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
111 "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
112 "ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB"; |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
113 char *needle = (char *) malloc (m + 1); |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
114 if (needle != NULL) |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
115 { |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
116 memset (needle, 'A', m); |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
117 needle[m] = '\0'; |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
118 |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
119 for (; repeat > 0; repeat--) |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
120 { |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
121 ASSERT (c_strcasestr (haystack, needle) == NULL); |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
122 } |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
123 |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
124 free (needle); |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
125 } |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
126 } |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
127 |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
128 /* Check that the asymptotic worst-case complexity is not quadratic. */ |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
129 { |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
130 size_t m = 1000000; |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
131 char *haystack = (char *) malloc (2 * m + 2); |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
132 char *needle = (char *) malloc (m + 2); |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
133 if (haystack != NULL && needle != NULL) |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
134 { |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
135 const char *result; |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
136 |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
137 memset (haystack, 'A', 2 * m); |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
138 haystack[2 * m] = 'B'; |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
139 haystack[2 * m + 1] = '\0'; |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
140 |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
141 memset (needle, 'a', m); |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
142 needle[m] = 'B'; |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
143 needle[m + 1] = '\0'; |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
144 |
12421
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
145 result = c_strcasestr (haystack, needle); |
e8d2c6fc33ad
Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents:
9889
diff
changeset
|
146 ASSERT (result == haystack + m); |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
147 } |
9749
daf5ba9fe2d9
Remove useless "if" tests before free. Deprecate "free" module.
Jim Meyering <meyering@redhat.com>
parents:
9630
diff
changeset
|
148 free (needle); |
daf5ba9fe2d9
Remove useless "if" tests before free. Deprecate "free" module.
Jim Meyering <meyering@redhat.com>
parents:
9630
diff
changeset
|
149 free (haystack); |
8121
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
150 } |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
151 |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
152 return 0; |
81d42903aca5
Tests for module 'c-strcasestr'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
153 } |