//===----------------------------------------------------------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

// <wctype.h>

#include <wctype.h>
#include <type_traits>

#ifndef WEOF
#error WEOF not defined
#endif

#ifdef iswalnum
#error iswalnum defined
#endif

#ifdef iswalpha
#error iswalpha defined
#endif

#ifdef iswblank
#error iswblank defined
#endif

#ifdef iswcntrl
#error iswcntrl defined
#endif

#ifdef iswdigit
#error iswdigit defined
#endif

#ifdef iswgraph
#error iswgraph defined
#endif

#ifdef iswlower
#error iswlower defined
#endif

#ifdef iswprint
#error iswprint defined
#endif

#ifdef iswpunct
#error iswpunct defined
#endif

#ifdef iswspace
#error iswspace defined
#endif

#ifdef iswupper
#error iswupper defined
#endif

#ifdef iswxdigit
#error iswxdigit defined
#endif

#ifdef iswctype
#error iswctype defined
#endif

#ifdef wctype
#error wctype defined
#endif

#ifdef towlower
#error towlower defined
#endif

#ifdef towupper
#error towupper defined
#endif

#ifdef towctrans
#error towctrans defined
#endif

#ifdef wctrans
#error wctrans defined
#endif

int main()
{
    wint_t w = 0;
    wctrans_t wctr = 0;
    wctype_t wct = (wctype_t)0;
    static_assert((std::is_same<decltype(iswalnum(w)), int>::value), "");
    static_assert((std::is_same<decltype(iswalpha(w)), int>::value), "");
    static_assert((std::is_same<decltype(iswblank(w)), int>::value), "");
    static_assert((std::is_same<decltype(iswcntrl(w)), int>::value), "");
    static_assert((std::is_same<decltype(iswdigit(w)), int>::value), "");
    static_assert((std::is_same<decltype(iswgraph(w)), int>::value), "");
    static_assert((std::is_same<decltype(iswlower(w)), int>::value), "");
    static_assert((std::is_same<decltype(iswprint(w)), int>::value), "");
    static_assert((std::is_same<decltype(iswpunct(w)), int>::value), "");
    static_assert((std::is_same<decltype(iswspace(w)), int>::value), "");
    static_assert((std::is_same<decltype(iswupper(w)), int>::value), "");
    static_assert((std::is_same<decltype(iswxdigit(w)), int>::value), "");
    static_assert((std::is_same<decltype(iswctype(w, wct)), int>::value), "");
    static_assert((std::is_same<decltype(wctype("")), wctype_t>::value), "");
    static_assert((std::is_same<decltype(towlower(w)), wint_t>::value), "");
    static_assert((std::is_same<decltype(towupper(w)), wint_t>::value), "");
    static_assert((std::is_same<decltype(towctrans(w, wctr)), wint_t>::value), "");
    static_assert((std::is_same<decltype(wctrans("")), wctrans_t>::value), "");
}
