/*
Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved.

Permission to use, copy, modify, and distribute this software
is freely granted, provided that this notice is preserved.
 */
#include <wctype.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <locale.h>
#include "check.h"

int
main()
{
#if !defined(__ELIX_LEVEL) || __ELIX_LEVEL > 1
    if (__MB_LEN_MAX == 1) {
        CHECK(iswalpha(L'a'));
        CHECK(!iswalpha(L'3'));
        CHECK(iswalnum(L'9'));
        CHECK(!iswalnum(L'$'));
        CHECK(iswcntrl(L'\n'));
        CHECK(!iswcntrl(L'#'));
        CHECK(iswdigit(L'2'));
        CHECK(!iswdigit(L'a'));
        CHECK(iswgraph(L'2'));
        CHECK(!iswgraph(L' '));
        CHECK(iswlower(L'g'));
        CHECK(!iswlower(L'G'));
        CHECK(iswprint(L'*'));
        CHECK(!iswprint(L'\n'));
        CHECK(iswpunct(L','));
        CHECK(!iswpunct(L'\n'));
        CHECK(iswspace(L'\t'));
        CHECK(!iswspace(L':'));
        CHECK(iswupper(L'G'));
        CHECK(!iswupper(L'g'));
        CHECK(iswxdigit(L'A'));
        CHECK(!iswxdigit(L'g'));
    } else {
        setlocale(LC_CTYPE, "C-UTF-8");
        CHECK(iswalpha(0x0967));
        CHECK(!iswalpha(0x128e));
        CHECK(iswalnum(0x1d7ce));
        CHECK(!iswalnum(0x1d800));
        CHECK(iswcntrl(0x007f));
        CHECK(!iswcntrl(0x2027));
        CHECK(iswdigit(L'2'));
        CHECK(!iswdigit(0x0009));
        CHECK(iswlower(0x03b3));
        CHECK(!iswlower(0x04aa));
        CHECK(iswprint(0x0b13));
        CHECK(!iswprint(0x0ce4));
        CHECK(iswpunct(0x002d));
        CHECK(!iswpunct(0x0a84));
        CHECK(iswspace(0x000a));
        CHECK(!iswspace(0x2060));
        CHECK(iswupper(0x01a4));
        CHECK(!iswupper(0x1e6d));
        CHECK(iswxdigit(L'A'));
        CHECK(!iswxdigit(0x1f48));
    }
#endif

    exit(0);
}
