61 lines
2.4 KiB
C
61 lines
2.4 KiB
C
// RUN: %clang -std=c17 %s -o %t && %run %t
|
|
/// Test __isoc23_* for glibc 2.38+.
|
|
// RUN: %clang -std=c23 %s -o %t && %run %t
|
|
|
|
#include <assert.h>
|
|
#include <inttypes.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <wchar.h>
|
|
|
|
#define TESTL(func) \
|
|
{ \
|
|
char *end; \
|
|
long l = (long)func("42", &end, 0); \
|
|
assert(l == 42); \
|
|
assert(*end == '\0'); \
|
|
}
|
|
|
|
#define TESTF(func) \
|
|
{ \
|
|
char *end; \
|
|
long l = (long)func("42", &end); \
|
|
assert(l == 42); \
|
|
assert(*end == '\0'); \
|
|
}
|
|
|
|
#define WTESTL(func) \
|
|
{ \
|
|
wchar_t *end; \
|
|
long l = (long)func(L"42", &end, 0); \
|
|
assert(l == 42); \
|
|
assert(*end == L'\0'); \
|
|
}
|
|
|
|
#define WTESTF(func) \
|
|
{ \
|
|
wchar_t *end; \
|
|
long l = (long)func(L"42", &end); \
|
|
assert(l == 42); \
|
|
assert(*end == '\0'); \
|
|
}
|
|
|
|
int main() {
|
|
TESTL(strtol);
|
|
TESTL(strtoll);
|
|
TESTL(strtoimax);
|
|
TESTL(strtoul);
|
|
TESTL(strtoull);
|
|
TESTL(strtoumax);
|
|
TESTF(strtof);
|
|
TESTF(strtod);
|
|
TESTF(strtold);
|
|
|
|
WTESTL(wcstol);
|
|
WTESTL(wcstoll);
|
|
WTESTL(wcstoul);
|
|
WTESTL(wcstoull);
|
|
WTESTF(wcstof);
|
|
WTESTF(wcstod);
|
|
WTESTF(wcstold);
|
|
}
|