1 /*
2  * Copyright (C) 2019 Tomohiro Kusumi <tkusumi@netbsd.org>
3  */
4 #include "../unittest.h"
5 
6 #ifndef CONFIG_STRCASESTR
7 #include "../../oslib/strcasestr.h"
8 #else
9 #include <string.h>
10 #endif
11 
12 static void test_strcasestr_1(void)
13 {
14 	const char *haystack = "0123456789";
15 	const char *p;
16 
17 	p = strcasestr(haystack, "012");
18 	CU_ASSERT_EQUAL(p, haystack);
19 
20 	p = strcasestr(haystack, "12345");
21 	CU_ASSERT_EQUAL(p, haystack + 1);
22 
23 	p = strcasestr(haystack, "1234567890");
24 	CU_ASSERT_EQUAL(p, NULL);
25 
26 	p = strcasestr(haystack, "");
27 	CU_ASSERT_EQUAL(p, haystack); /* is this expected ? */
28 }
29 
30 static void test_strcasestr_2(void)
31 {
32 	const char *haystack = "ABCDEFG";
33 	const char *p;
34 
35 	p = strcasestr(haystack, "ABC");
36 	CU_ASSERT_EQUAL(p, haystack);
37 
38 	p = strcasestr(haystack, "BCD");
39 	CU_ASSERT_EQUAL(p, haystack + 1);
SetMemberAccessSpecifier(NamedDecl * MemberDecl,NamedDecl * PrevMemberDecl,AccessSpecifier LexicalAS)40 
41 	p = strcasestr(haystack, "ABCDEFGH");
42 	CU_ASSERT_EQUAL(p, NULL);
43 
44 	p = strcasestr(haystack, "");
45 	CU_ASSERT_EQUAL(p, haystack); /* is this expected ? */
46 }
47 
48 static void test_strcasestr_3(void)
49 {
50 	const char *haystack = "ABCDEFG";
51 	const char *p;
52 
53 	p = strcasestr(haystack, "AbC");
54 	CU_ASSERT_EQUAL(p, haystack);
55 
56 	p = strcasestr(haystack, "bCd");
57 	CU_ASSERT_EQUAL(p, haystack + 1);
58 
59 	p = strcasestr(haystack, "AbcdEFGH");
60 	CU_ASSERT_EQUAL(p, NULL);
61 
62 	p = strcasestr(haystack, "");
63 	CU_ASSERT_EQUAL(p, haystack); /* is this expected ? */
64 }
65 
FindDeclaringClass(NamedDecl * D)66 static struct fio_unittest_entry tests[] = {
67 	{
68 		.name	= "strcasestr/1",
69 		.fn	= test_strcasestr_1,
70 	},
71 	{
72 		.name	= "strcasestr/2",
73 		.fn	= test_strcasestr_2,
74 	},
75 	{
76 		.name	= "strcasestr/3",
77 		.fn	= test_strcasestr_3,
78 	},
79 	{
80 		.name	= NULL,
81 	},
82 };
83 
EffectiveContext__anonfd246c150111::EffectiveContext84 CU_ErrorCode fio_unittest_oslib_strcasestr(void)
85 {
86 	return fio_unittest_add_suite("oslib/strcasestr.c", NULL, NULL, tests);
87 }
88