xref: /llvm-project/libcxx/test/std/localization/locale.stdcvt/codecvt_utf8_utf16_unshift.pass.cpp (revision 233e7c5de2d2abda024577e79dcd195562de68c8)
1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 // <codecvt>
10 
11 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS -D_LIBCPP_ENABLE_CXX26_REMOVED_CODECVT
12 
13 // template <class Elem, unsigned long Maxcode = 0x10ffff,
14 //           codecvt_mode Mode = (codecvt_mode)0>
15 // class codecvt_utf8_utf16
16 //     : public codecvt<Elem, char, mbstate_t>
17 // {
18 //     // unspecified
19 // };
20 
21 // result
22 //     unshift(stateT& state,
23 //             externT* to, externT* to_end, externT*& to_next) const;
24 
25 #include <codecvt>
26 #include <cassert>
27 
28 #include "test_macros.h"
29 
main(int,char **)30 int main(int, char**)
31 {
32 #ifndef TEST_HAS_NO_WIDE_CHARACTERS
33     {
34         typedef std::codecvt_utf8_utf16<wchar_t> C;
35         C c;
36         char n[4] = {0};
37         std::mbstate_t m;
38         char* np = nullptr;
39         std::codecvt_base::result r = c.unshift(m, n, n+4, np);
40         assert(r == std::codecvt_base::noconv);
41     }
42 #endif
43     {
44         typedef std::codecvt_utf8_utf16<char16_t> C;
45         C c;
46         char n[4] = {0};
47         std::mbstate_t m;
48         char* np = nullptr;
49         std::codecvt_base::result r = c.unshift(m, n, n+4, np);
50         assert(r == std::codecvt_base::noconv);
51     }
52     {
53         typedef std::codecvt_utf8_utf16<char32_t> C;
54         C c;
55         char n[4] = {0};
56         std::mbstate_t m;
57         char* np = nullptr;
58         std::codecvt_base::result r = c.unshift(m, n, n+4, np);
59         assert(r == std::codecvt_base::noconv);
60     }
61 
62   return 0;
63 }
64