#include "testutil.h"
#include "internal/ctype.h"
-#include "../e_os.h"
+#include "internal/nelem.h"
#include <ctype.h>
#include <stdio.h>
/*
* Even though the VMS C RTL claims to be C99 compatible, it's not entirely
- * so far (C RTL version 8.4). For the sake of these tests, we therefore
- * define our own.
+ * so far (C RTL version 8.4). Same applies to OSF. For the sake of these
+ * tests, we therefore define our own.
*/
-#if defined(__VMS) && __CRTL_VER <= 80400000
+#if (defined(__VMS) && __CRTL_VER <= 80400000) || defined(__osf__)
static int isblank(int c)
{
return c == ' ' || c == '\t';
static int test_ctype_chars(int n)
{
- return TEST_int_eq(isalnum(n) != 0, ossl_isalnum(n) != 0)
- && TEST_int_eq(isalpha(n) != 0, ossl_isalpha(n) != 0)
- && TEST_int_eq(isascii(n) != 0, ossl_isascii(n) != 0)
+ if (!TEST_int_eq(isascii((unsigned char)n) != 0, ossl_isascii(n) != 0))
+ return 0;
+
+ if (!ossl_isascii(n))
+ return 1;
+
+ return TEST_int_eq(isalpha(n) != 0, ossl_isalpha(n) != 0)
+ && TEST_int_eq(isalnum(n) != 0, ossl_isalnum(n) != 0)
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
&& TEST_int_eq(isblank(n) != 0, ossl_isblank(n) != 0)
+#endif
&& TEST_int_eq(iscntrl(n) != 0, ossl_iscntrl(n) != 0)
&& TEST_int_eq(isdigit(n) != 0, ossl_isdigit(n) != 0)
&& TEST_int_eq(isgraph(n) != 0, ossl_isgraph(n) != 0)
&& TEST_int_eq(isxdigit(n) != 0, ossl_isxdigit(n) != 0);
}
-static int test_ctype_negative(int n)
-{
- return test_ctype_chars(-n);
-}
-
static struct {
int u;
int l;
{ '%', '%' },
{ '~', '~' },
{ 0, 0 },
- { EOF, EOF },
- { 333, 333 },
- { -333, -333 },
- { -128, -128 }
+ { EOF, EOF }
};
static int test_ctype_toupper(int n)
&& TEST_int_eq(ossl_tolower(case_change[n].l), case_change[n].l);
}
+static int test_ctype_eof(void)
+{
+ return test_ctype_chars(EOF);
+}
+
int setup_tests(void)
{
ADD_ALL_TESTS(test_ctype_chars, 256);
- ADD_ALL_TESTS(test_ctype_negative, 128);
ADD_ALL_TESTS(test_ctype_toupper, OSSL_NELEM(case_change));
ADD_ALL_TESTS(test_ctype_tolower, OSSL_NELEM(case_change));
+ ADD_TEST(test_ctype_eof);
return 1;
}