• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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