19313Ssos#include "StringSearchTest.h"
29313Ssos#include "cppunit/TestCaller.h"
39313Ssos#include <String.h>
49313Ssos#include <stdio.h>
59313Ssos
69313SsosStringSearchTest::StringSearchTest(std::string name) :
79313Ssos		BTestCase(name)
89313Ssos{
99313Ssos}
109313Ssos
119313Ssos
129313Ssos
139313SsosStringSearchTest::~StringSearchTest()
149313Ssos{
159313Ssos}
169313Ssos
179313Ssos
189313Ssosvoid
199313SsosStringSearchTest::PerformTest(void)
209313Ssos{
219313Ssos	BString *string1, *string2;
229313Ssos	int32 i;
239313Ssos
249313Ssos	//FindFirst(BString&)
259313Ssos	NextSubTest();
269313Ssos	string1 = new BString("last but not least");
279313Ssos	string2 = new BString("st");
2850477Speter	i = string1->FindFirst(*string2);
299313Ssos	CPPUNIT_ASSERT(i == 2);
309313Ssos	delete string1;
319313Ssos	delete string2;
329313Ssos
339313Ssos	NextSubTest();
349313Ssos	string1 = new BString;
3514331Speter	string2 = new BString("some text");
3668583Smarcel	i = string1->FindFirst(*string2);
3783221Smarcel	CPPUNIT_ASSERT(i == B_ERROR);
3812458Sbde	delete string1;
3949850Smarcel	delete string2;
4049850Smarcel
4149850Smarcel	//FindFirst(char*)
4249850Smarcel	NextSubTest();
4349850Smarcel	string1 = new BString("last but not least");
4483221Smarcel	i = string1->FindFirst("st");
4549850Smarcel	CPPUNIT_ASSERT(i == 2);
4649850Smarcel	delete string1;
4750345Smarcel
4849850Smarcel	NextSubTest();
4949850Smarcel	string1 = new BString;
5049850Smarcel	i = string1->FindFirst("some text");
5149850Smarcel	CPPUNIT_ASSERT(i == B_ERROR);
5249850Smarcel	delete string1;
5349850Smarcel
5449850Smarcel#ifndef TEST_R5
5549850Smarcel//	Commented, since crashes R5
5650345Smarcel	NextSubTest();
5750345Smarcel	string1 = new BString("string");
5850345Smarcel	i = string1->FindFirst((char*)NULL);
5950345Smarcel	CPPUNIT_ASSERT(i == B_BAD_VALUE);
6050345Smarcel	delete string1;
6150345Smarcel#endif
6250345Smarcel
6350345Smarcel	//FindFirst(BString&, int32)
6450345Smarcel	NextSubTest();
6550345Smarcel	string1 = new BString("abc abc abc");
6650345Smarcel	string2 = new BString("abc");
6750345Smarcel	i = string1->FindFirst(*string2, 5);
6855784Smarcel	CPPUNIT_ASSERT(i == 8);
6955784Smarcel	delete string1;
7055784Smarcel	delete string2;
7183221Smarcel
7283221Smarcel	NextSubTest();
7383221Smarcel	string1 = new BString("abc abc abc");
7483221Smarcel	string2 = new BString("abc");
7583221Smarcel	i = string1->FindFirst(*string2, 200);
7683221Smarcel	CPPUNIT_ASSERT(i == B_ERROR);
7783221Smarcel	delete string1;
7883221Smarcel	delete string2;
79
80	NextSubTest();
81	string1 = new BString("abc abc abc");
82	string2 = new BString("abc");
83	i = string1->FindFirst(*string2, -10);
84	CPPUNIT_ASSERT(i == B_ERROR);
85	delete string1;
86	delete string2;
87
88	//FindFirst(const char*, int32)
89	NextSubTest();
90	string1 = new BString("abc abc abc");
91	i = string1->FindFirst("abc", 2);
92	CPPUNIT_ASSERT(i == 4);
93	delete string1;
94
95	NextSubTest();
96	string1 = new BString("abc abc abc");
97	i = string1->FindFirst("abc", 200);
98	CPPUNIT_ASSERT(i == B_ERROR);
99	delete string1;
100
101	NextSubTest();
102	string1 = new BString("abc abc abc");
103	i = string1->FindFirst("abc", -10);
104	CPPUNIT_ASSERT(i == B_ERROR);
105	delete string1;
106
107#ifndef TEST_R5
108	//Commented since crashes R5
109	NextSubTest();
110	string1 = new BString("abc abc abc");
111	i = string1->FindFirst((char*)NULL, 3);
112	CPPUNIT_ASSERT(i == B_BAD_VALUE);
113	delete string1;
114#endif
115
116	//FindFirst(char)
117	NextSubTest();
118	string1 = new BString("abcd abcd");
119	i = string1->FindFirst('c');
120	CPPUNIT_ASSERT(i == 2);
121	delete string1;
122
123	NextSubTest();
124	string1 = new BString("abcd abcd");
125	i = string1->FindFirst('e');
126	CPPUNIT_ASSERT(i == B_ERROR);
127	delete string1;
128
129	//FindFirst(char, int32)
130	NextSubTest();
131	string1 = new BString("abc abc abc");
132	i = string1->FindFirst("b", 3);
133	CPPUNIT_ASSERT(i == 5);
134	delete string1;
135
136	NextSubTest();
137	string1 = new BString("abcd abcd");
138	i = string1->FindFirst('e', 3);
139	CPPUNIT_ASSERT(i == B_ERROR);
140	delete string1;
141
142	NextSubTest();
143	string1 = new BString("abc abc abc");
144	i = string1->FindFirst("a", 9);
145	CPPUNIT_ASSERT(i == B_ERROR);
146	delete string1;
147
148	//FindLast(BString&)
149	NextSubTest();
150	string1 = new BString("last but not least");
151	string2 = new BString("st");
152	i = string1->FindLast(*string2);
153	CPPUNIT_ASSERT(i == 16);
154	delete string1;
155	delete string2;
156
157	NextSubTest();
158	string1 = new BString;
159	string2 = new BString("some text");
160	i = string1->FindLast(*string2);
161	CPPUNIT_ASSERT(i == B_ERROR);
162	delete string1;
163	delete string2;
164
165	//FindLast(char*)
166	NextSubTest();
167	string1 = new BString("last but not least");
168	i = string1->FindLast("st");
169	CPPUNIT_ASSERT(i == 16);
170	delete string1;
171
172	NextSubTest();
173	string1 = new BString;
174	i = string1->FindLast("some text");
175	CPPUNIT_ASSERT(i == B_ERROR);
176	delete string1;
177
178#ifndef TEST_R5
179	//Commented since crashes R5
180	NextSubTest();
181	string1 = new BString("string");
182	i = string1->FindLast((char*)NULL);
183	CPPUNIT_ASSERT(i == B_BAD_VALUE);
184	delete string1;
185#endif
186
187	//FindLast(BString&, int32)
188	NextSubTest();
189	string1 = new BString("abcabcabc");
190	string2 = new BString("abc");
191	i = string1->FindLast(*string2, 7);
192	CPPUNIT_ASSERT(i == 3);
193	delete string1;
194	delete string2;
195
196	NextSubTest();
197	string1 = new BString("abc abc abc");
198	string2 = new BString("abc");
199	i = string1->FindLast(*string2, -10);
200	CPPUNIT_ASSERT(i == B_ERROR);
201	delete string1;
202	delete string2;
203
204	//FindLast(const char*, int32)
205	NextSubTest();
206	string1 = new BString("abc abc abc");
207	i = string1->FindLast("abc", 9);
208	CPPUNIT_ASSERT(i == 4);
209	delete string1;
210
211	NextSubTest();
212	string1 = new BString("abc abc abc");
213	i = string1->FindLast("abc", -10);
214	CPPUNIT_ASSERT(i == B_ERROR);
215	delete string1;
216
217#ifndef TEST_R5
218	//Commented since crashes r5
219	NextSubTest();
220	string1 = new BString("abc abc abc");
221	i = string1->FindLast((char*)NULL, 3);
222	CPPUNIT_ASSERT(i == B_BAD_VALUE);
223	delete string1;
224#endif
225
226	//FindLast(char)
227	NextSubTest();
228	string1 = new BString("abcd abcd");
229	i = string1->FindLast('c');
230	CPPUNIT_ASSERT(i == 7);
231	delete string1;
232
233	NextSubTest();
234	string1 = new BString("abcd abcd");
235	i = string1->FindLast('e');
236	CPPUNIT_ASSERT(i == B_ERROR);
237	delete string1;
238
239	//FindLast(char, int32)
240	NextSubTest();
241	string1 = new BString("abc abc abc");
242	i = string1->FindLast("b", 5);
243	CPPUNIT_ASSERT(i == 1);
244	delete string1;
245
246	NextSubTest();
247	string1 = new BString("abcd abcd");
248	i = string1->FindLast('e', 3);
249	CPPUNIT_ASSERT(i == B_ERROR);
250	delete string1;
251
252	NextSubTest();
253	string1 = new BString("abcd abcd");
254	i = string1->FindLast('b', 6);
255	CPPUNIT_ASSERT(i == 6);
256	delete string1;
257
258	NextSubTest();
259	string1 = new BString("abcd abcd");
260	i = string1->FindLast('b', 5);
261	CPPUNIT_ASSERT(i == 1);
262	delete string1;
263
264	NextSubTest();
265	string1 = new BString("abc abc abc");
266	i = string1->FindLast("a", 0);
267	CPPUNIT_ASSERT(i == B_ERROR);
268	delete string1;
269
270	//IFindFirst(BString&)
271	NextSubTest();
272	string1 = new BString("last but not least");
273	string2 = new BString("st");
274	i = string1->IFindFirst(*string2);
275	CPPUNIT_ASSERT(i == 2);
276	delete string1;
277	delete string2;
278
279	NextSubTest();
280	string1 = new BString("last but not least");
281	string2 = new BString("ST");
282	i = string1->IFindFirst(*string2);
283	CPPUNIT_ASSERT(i == 2);
284	delete string1;
285	delete string2;
286
287	NextSubTest();
288	string1 = new BString;
289	string2 = new BString("some text");
290	i = string1->IFindFirst(*string2);
291	CPPUNIT_ASSERT(i == B_ERROR);
292	delete string1;
293	delete string2;
294
295	NextSubTest();
296	string1 = new BString("string");
297	string2 = new BString;
298	i = string1->IFindFirst(*string2);
299	CPPUNIT_ASSERT(i == 0);
300	delete string1;
301	delete string2;
302
303	//IFindFirst(const char*)
304	NextSubTest();
305	string1 = new BString("last but not least");
306	i = string1->IFindFirst("st");
307	CPPUNIT_ASSERT(i == 2);
308	delete string1;
309
310	NextSubTest();
311	string1 = new BString("LAST BUT NOT least");
312	i = string1->IFindFirst("st");
313	CPPUNIT_ASSERT(i == 2);
314	delete string1;
315
316	NextSubTest();
317	string1 = new BString;
318	i = string1->IFindFirst("some text");
319	CPPUNIT_ASSERT(i == B_ERROR);
320	delete string1;
321
322#ifndef TEST_R5
323	//Commented, since crashes R5
324	NextSubTest();
325	string1 = new BString("string");
326	i = string1->IFindFirst((char*)NULL);
327	CPPUNIT_ASSERT(i == B_BAD_VALUE);
328	delete string1;
329#endif
330
331	//IFindFirst(BString&, int32)
332	NextSubTest();
333	string1 = new BString("abc abc abc");
334	string2 = new BString("abc");
335	i = string1->IFindFirst(*string2, 5);
336	CPPUNIT_ASSERT(i == 8);
337	delete string1;
338	delete string2;
339
340	NextSubTest();
341	string1 = new BString("abc abc abc");
342	string2 = new BString("AbC");
343	i = string1->IFindFirst(*string2, 5);
344	CPPUNIT_ASSERT(i == 8);
345	delete string1;
346	delete string2;
347
348	NextSubTest();
349	string1 = new BString("abc abc abc");
350	string2 = new BString("abc");
351	i = string1->IFindFirst(*string2, 200);
352	CPPUNIT_ASSERT(i == B_ERROR);
353	delete string1;
354	delete string2;
355
356	NextSubTest();
357	string1 = new BString("abc abc abc");
358	string2 = new BString("abc");
359	i = string1->IFindFirst(*string2, -10);
360	CPPUNIT_ASSERT(i == B_ERROR);
361	delete string1;
362	delete string2;
363
364	//IFindFirst(const char*, int32)
365	NextSubTest();
366	string1 = new BString("abc abc abc");
367	i = string1->IFindFirst("abc", 2);
368	CPPUNIT_ASSERT(i == 4);
369	delete string1;
370
371	NextSubTest();
372	string1 = new BString("AbC ABC abC");
373	i = string1->IFindFirst("abc", 2);
374	CPPUNIT_ASSERT(i == 4);
375	delete string1;
376
377	NextSubTest();
378	string1 = new BString("abc abc abc");
379	i = string1->IFindFirst("abc", 200);
380	CPPUNIT_ASSERT(i == B_ERROR);
381	delete string1;
382
383	NextSubTest();
384	string1 = new BString("abc abc abc");
385	i = string1->IFindFirst("abc", -10);
386	CPPUNIT_ASSERT(i == B_ERROR);
387	delete string1;
388
389#ifndef TEST_R5
390	//IFindLast(BString&)
391	NextSubTest();
392	string1 = new BString("last but not least");
393	string2 = new BString("st");
394	i = string1->IFindLast(*string2);
395	CPPUNIT_ASSERT(i == 16);
396	delete string1;
397	delete string2;
398
399	NextSubTest();
400	string1 = new BString("laSt but NOT leaSt");
401	string2 = new BString("sT");
402	i = string1->IFindLast(*string2);
403	CPPUNIT_ASSERT(i == 16);
404	delete string1;
405	delete string2;
406#endif
407
408	NextSubTest();
409	string1 = new BString;
410	string2 = new BString("some text");
411	i = string1->IFindLast(*string2);
412	CPPUNIT_ASSERT(i == B_ERROR);
413	delete string1;
414	delete string2;
415
416	//IFindLast(const char*)
417	NextSubTest();
418	string1 = new BString("last but not least");
419	i = string1->IFindLast("st");
420	CPPUNIT_ASSERT(i == 16);
421	delete string1;
422
423#ifndef TEST_R5
424	NextSubTest();
425	string1 = new BString("laSt but NOT leaSt");
426	i = string1->IFindLast("ST");
427	CPPUNIT_ASSERT(i == 16);
428	delete string1;
429#endif
430
431	NextSubTest();
432	string1 = new BString;
433	i = string1->IFindLast("some text");
434	CPPUNIT_ASSERT(i == B_ERROR);
435	delete string1;
436
437#ifndef TEST_R5
438	//Commented since crashes R5
439	NextSubTest();
440	string1 = new BString("string");
441	i = string1->IFindLast((char*)NULL);
442	CPPUNIT_ASSERT(i == B_BAD_VALUE);
443	delete string1;
444#endif
445
446	//FindLast(BString&, int32)
447	NextSubTest();
448	string1 = new BString("abcabcabc");
449	string2 = new BString("abc");
450	i = string1->IFindLast(*string2, 7);
451	CPPUNIT_ASSERT(i == 3);
452	delete string1;
453	delete string2;
454
455	NextSubTest();
456	string1 = new BString("abcabcabc");
457	string2 = new BString("AbC");
458	i = string1->IFindLast(*string2, 7);
459	CPPUNIT_ASSERT(i == 3);
460	delete string1;
461	delete string2;
462
463	NextSubTest();
464	string1 = new BString("abc abc abc");
465	string2 = new BString("abc");
466	i = string1->IFindLast(*string2, -10);
467	CPPUNIT_ASSERT(i == B_ERROR);
468	delete string1;
469	delete string2;
470
471	//IFindLast(const char*, int32)
472//#ifndef TEST_R5
473	NextSubTest();
474	string1 = new BString("abc abc abc");
475	i = string1->IFindLast("abc", 9);
476	CPPUNIT_ASSERT(i == 4);
477	delete string1;
478//#endif
479#ifndef TEST_R5
480	NextSubTest();
481	string1 = new BString("ABc abC aBC");
482	i = string1->IFindLast("aBc", 9);
483	CPPUNIT_ASSERT(i == 4);
484	delete string1;
485#endif
486	NextSubTest();
487	string1 = new BString("abc abc abc");
488	i = string1->IFindLast("abc", -10);
489	CPPUNIT_ASSERT(i == B_ERROR);
490	delete string1;
491
492	NextSubTest();
493	string1 = new BString("abc def ghi");
494	i = string1->IFindLast("abc",4);
495	CPPUNIT_ASSERT(i == 0);
496	delete string1;
497}
498
499
500CppUnit::Test *StringSearchTest::suite(void)
501{
502	typedef CppUnit::TestCaller<StringSearchTest>
503		StringSearchTestCaller;
504
505	return(new StringSearchTestCaller("BString::Search Test", &StringSearchTest::PerformTest));
506}
507