Blame src/functional/string_strchr.c

nsz 49b23c
#include <string.h>
nsz 49b23c
#include "test.h"
nsz 49b23c
nsz 49b23c
#define N(s, c) { \
nsz 49b23c
	char *p = s; \
nsz 49b23c
	char *q = strchr(p, c); \
nsz 49b23c
	if (q) \
Szabolcs Nagy cfa23c
		t_error("strchr(%s,%s) returned str+%d, wanted 0\n", #s, #c, q-p); \
nsz 49b23c
}
nsz 49b23c
nsz 49b23c
#define T(s, c, n) { \
nsz 49b23c
	char *p = s; \
nsz 49b23c
	char *q = strchr(p, c); \
nsz 49b23c
	if (q == 0) \
Szabolcs Nagy cfa23c
		t_error("strchr(%s,%s) returned 0, wanted str+%d\n", #s, #c, n); \
nsz 49b23c
	else if (q - p != n) \
Szabolcs Nagy cfa23c
		t_error("strchr(%s,%s) returned str+%d, wanted str+%d\n", #s, #c, q-p, n); \
nsz 49b23c
}
nsz 49b23c
nsz 49b23c
int main(void)
nsz 49b23c
{
nsz 49b23c
	int i;
nsz 49b23c
	char a[128];
nsz 49b23c
	char s[256];
nsz 49b23c
nsz 49b23c
	for (i = 0; i < 128; i++)
nsz 49b23c
		a[i] = (i+1) & 127;
nsz 49b23c
	for (i = 0; i < 256; i++)
nsz 49b23c
		*((unsigned char*)s+i) = i+1;
nsz 49b23c
nsz 49b23c
	N("", 'a')
nsz 49b23c
	N("a", 'b')
nsz 49b23c
	N("abc abc", 'x')
nsz 49b23c
	N(a, 128)
nsz 49b23c
	N(a, 255)
nsz 49b23c
nsz 49b23c
	T("", 0, 0)
nsz 49b23c
	T("a", 'a', 0)
nsz 49b23c
	T("a", 'a'+256, 0)
nsz 49b23c
	T("a", 0, 1)
nsz 90956e
	T("ab", 'b', 1)
nsz 90956e
	T("aab", 'b', 2)
nsz 90956e
	T("aaab", 'b', 3)
nsz 90956e
	T("aaaab", 'b', 4)
nsz 90956e
	T("aaaaab", 'b', 5)
nsz 90956e
	T("aaaaaab", 'b', 6)
nsz 49b23c
	T("abc abc", 'c', 2)
nsz 49b23c
	T(s, 1, 0)
nsz 49b23c
	T(s, 2, 1)
nsz 49b23c
	T(s, 10, 9)
nsz 49b23c
	T(s, 11, 10)
nsz 49b23c
	T(s, 127, 126)
nsz 49b23c
	T(s, 128, 127)
nsz 49b23c
	T(s, 255, 254)
nsz 49b23c
	T(s, 0, 255)
nsz 49b23c
Szabolcs Nagy cfa23c
	return t_status;
nsz 49b23c
}