#include <sys/cdefs.h>
__RCSID("$NetBSD: t_strerror.c,v 1.3 2011/05/10 06:55:27 jruoho Exp $");
#include <errno.h>
#include <limits.h>
#include <locale.h>
#include <string.h>
#include <stdio.h>
#include "darwintest.h"
T_DECL(netbsd_strerror_basic, "A basic test of strerror(3)")
{
int i;
for (i = 1; i < sys_nerr; i++)
T_EXPECT_NULL(strstr(strerror(i), "Unknown error:"), NULL);
for (; i < sys_nerr + 10; i++)
T_EXPECT_NOTNULL(strstr(strerror(i), "Unknown error:"), NULL);
}
T_DECL(netbsd_strerror_err, "Test errors from strerror(3)")
{
(void)setlocale(LC_ALL, "C");
errno = 0;
T_ASSERT_NOTNULL(strstr(strerror(INT_MAX), "Unknown error:"), NULL);
T_ASSERT_EQ(errno, EINVAL, NULL);
errno = 0;
T_ASSERT_NOTNULL(strstr(strerror(INT_MIN), "Unknown error:"), NULL);
T_ASSERT_EQ(errno, EINVAL, NULL);
}
T_DECL(netbsd_strerror_r_basic, "A basic test of strerror_r(3)")
{
char buf[512];
int i;
(void)setlocale(LC_ALL, "C");
for (i = 1; i < sys_nerr; i++) {
T_ASSERT_EQ(strerror_r(i, buf, sizeof(buf)), 0, NULL);
T_ASSERT_NULL(strstr(buf, "Unknown error:"), NULL);
}
for (; i < sys_nerr + 10; i++) {
T_ASSERT_EQ(strerror_r(i, buf, sizeof(buf)), EINVAL, NULL);
T_ASSERT_NOTNULL(strstr(buf, "Unknown error:"), NULL);
}
}
T_DECL(netbsd_strerror_r_err, "Test errors from strerror_r(3)")
{
char buf[512];
int rv;
(void)setlocale(LC_ALL, "C");
rv = strerror_r(EPERM, buf, 1);
T_ASSERT_EQ(rv, ERANGE, NULL);
rv = strerror_r(INT_MAX, buf, sizeof(buf));
T_ASSERT_EQ(rv, EINVAL, NULL);
T_ASSERT_NOTNULL(strstr(buf, "Unknown error:"), NULL);
rv = strerror_r(INT_MIN, buf, sizeof(buf));
T_ASSERT_EQ(rv, EINVAL, NULL);
T_ASSERT_NOTNULL(strstr(buf, "Unknown error:"), NULL);
}