//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

// <cwctype>

// XFAIL: libcpp-has-no-wide-characters

#include <cwctype>
#include <type_traits>

#include "test_macros.h"


#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(int, char**)
{
    std::wint_t w = 0;
    ASSERT_SAME_TYPE(int, decltype(std::iswalnum(w)));
    ASSERT_SAME_TYPE(int, decltype(std::iswalpha(w)));
    ASSERT_SAME_TYPE(int, decltype(std::iswblank(w)));
    ASSERT_SAME_TYPE(int, decltype(std::iswcntrl(w)));
    ASSERT_SAME_TYPE(int, decltype(std::iswdigit(w)));
    ASSERT_SAME_TYPE(int, decltype(std::iswgraph(w)));
    ASSERT_SAME_TYPE(int, decltype(std::iswlower(w)));
    ASSERT_SAME_TYPE(int, decltype(std::iswprint(w)));
    ASSERT_SAME_TYPE(int, decltype(std::iswpunct(w)));
    ASSERT_SAME_TYPE(int, decltype(std::iswspace(w)));
    ASSERT_SAME_TYPE(int, decltype(std::iswupper(w)));
    ASSERT_SAME_TYPE(int, decltype(std::iswxdigit(w)));

    ASSERT_SAME_TYPE(int, decltype(std::iswctype(w, std::wctype_t())));

    ASSERT_SAME_TYPE(std::wctype_t,  decltype(std::wctype("")));
    ASSERT_SAME_TYPE(std::wint_t,    decltype(std::towlower(w)));
    ASSERT_SAME_TYPE(std::wint_t,    decltype(std::towupper(w)));
    ASSERT_SAME_TYPE(std::wint_t,    decltype(std::towctrans(w, std::wctrans_t())));
    ASSERT_SAME_TYPE(std::wctrans_t, decltype(std::wctrans("")));

  return 0;
}
