1 //===----------------------------------------------------------------------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10
11 // <string_view>
12
13 // constexpr basic_string_view(const _CharT* _s, size_type _len)
14 // : __data (_s), __size(_len) {}
15
16
17 #include <string_view>
18 #include <string>
19 #include <cassert>
20
21 #include "test_macros.h"
22
23 template<typename CharT>
test(const CharT * s,size_t sz)24 void test ( const CharT *s, size_t sz ) {
25 {
26 typedef std::basic_string_view<CharT> SV;
27 LIBCPP_ASSERT_NOEXCEPT(SV(s, sz));
28
29 SV sv1 ( s, sz );
30 assert ( sv1.size() == sz );
31 assert ( sv1.data() == s );
32 }
33 }
34
main()35 int main () {
36
37 test ( "QBCDE", 5 );
38 test ( "QBCDE", 2 );
39 test ( "", 0 );
40 #if TEST_STD_VER > 11
41 {
42 constexpr const char *s = "QBCDE";
43 constexpr std::basic_string_view<char> sv1 ( s, 2 );
44 static_assert ( sv1.size() == 2, "" );
45 static_assert ( sv1.data() == s, "" );
46 }
47 #endif
48
49 test ( L"QBCDE", 5 );
50 test ( L"QBCDE", 2 );
51 test ( L"", 0 );
52 #if TEST_STD_VER > 11
53 {
54 constexpr const wchar_t *s = L"QBCDE";
55 constexpr std::basic_string_view<wchar_t> sv1 ( s, 2 );
56 static_assert ( sv1.size() == 2, "" );
57 static_assert ( sv1.data() == s, "" );
58 }
59 #endif
60
61 #if TEST_STD_VER >= 11
62 test ( u"QBCDE", 5 );
63 test ( u"QBCDE", 2 );
64 test ( u"", 0 );
65 #if TEST_STD_VER > 11
66 {
67 constexpr const char16_t *s = u"QBCDE";
68 constexpr std::basic_string_view<char16_t> sv1 ( s, 2 );
69 static_assert ( sv1.size() == 2, "" );
70 static_assert ( sv1.data() == s, "" );
71 }
72 #endif
73
74 test ( U"QBCDE", 5 );
75 test ( U"QBCDE", 2 );
76 test ( U"", 0 );
77 #if TEST_STD_VER > 11
78 {
79 constexpr const char32_t *s = U"QBCDE";
80 constexpr std::basic_string_view<char32_t> sv1 ( s, 2 );
81 static_assert ( sv1.size() == 2, "" );
82 static_assert ( sv1.data() == s, "" );
83 }
84 #endif
85 #endif
86 }
87