-
Notifications
You must be signed in to change notification settings - Fork 49
Expand file tree
/
Copy pathstring-view-main.t.cpp
More file actions
135 lines (117 loc) · 4.3 KB
/
string-view-main.t.cpp
File metadata and controls
135 lines (117 loc) · 4.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
// Copyright 2017-2020 by Martin Moene
//
// https://github.com/martinmoene/string-view-lite
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#include "string-view-main.t.hpp"
#define nssv_PRESENT( x ) \
std::cout << #x << ": " << x << "\n"
#define nssv_ABSENT( x ) \
std::cout << #x << ": (undefined)\n"
lest::tests & specification()
{
static lest::tests tests;
return tests;
}
CASE( "string-view-lite version" "[.string-view][.version]" )
{
nssv_PRESENT( string_view_lite_MAJOR );
nssv_PRESENT( string_view_lite_MINOR );
nssv_PRESENT( string_view_lite_PATCH );
nssv_PRESENT( string_view_lite_VERSION );
}
CASE( "string-view-lite configuration" "[.string-view][.config]" )
{
nssv_PRESENT( nssv_HAVE_TWEAK_HEADER );
nssv_PRESENT( nssv_HAVE_STD_STRING_VIEW );
nssv_PRESENT( nssv_USES_STD_STRING_VIEW );
nssv_PRESENT( nssv_STRING_VIEW_DEFAULT );
nssv_PRESENT( nssv_STRING_VIEW_NONSTD );
nssv_PRESENT( nssv_STRING_VIEW_STD );
nssv_PRESENT( nssv_CONFIG_SELECT_STRING_VIEW );
nssv_PRESENT( nssv_CONFIG_STD_SV_OPERATOR );
nssv_PRESENT( nssv_CONFIG_USR_SV_OPERATOR );
// nssv_PRESENT( nssv_CONFIG_CONVERSION_STD_STRING );
nssv_PRESENT( nssv_CONFIG_CONVERSION_STD_STRING_CLASS_METHODS );
nssv_PRESENT( nssv_CONFIG_CONVERSION_STD_STRING_FREE_FUNCTIONS );
nssv_PRESENT( nssv_CONFIG_NO_STREAM_INSERTION );
nssv_PRESENT( nssv_CONFIG_NO_EXCEPTIONS );
nssv_PRESENT( nssv_CPLUSPLUS );
}
CASE( "__cplusplus" "[.stdc++]" )
{
nssv_PRESENT( __cplusplus );
#if _MSVC_LANG
nssv_PRESENT( _MSVC_LANG );
#else
nssv_ABSENT( _MSVC_LANG );
#endif
}
CASE( "Compiler version" "[.compiler]" )
{
#if nssv_USES_STD_STRING_VIEW
std::cout << "(Compiler version not available: using std::string_view)\n";
#else
nssv_PRESENT( nssv_COMPILER_CLANG_VERSION );
nssv_PRESENT( nssv_COMPILER_GNUC_VERSION );
nssv_PRESENT( nssv_COMPILER_MSVC_VERSION );
#endif
}
CASE( "presence of C++ language features" "[.stdlanguage]" )
{
#if nssv_USES_STD_STRING_VIEW
std::cout << "( C++ language features not available: using std::string_view)\n";
#else
nssv_PRESENT( nssv_HAVE_CONSTEXPR_11 );
nssv_PRESENT( nssv_HAVE_CONSTEXPR_14 );
nssv_PRESENT( nssv_HAVE_EXPLICIT_CONVERSION );
nssv_PRESENT( nssv_HAVE_NODISCARD );
nssv_PRESENT( nssv_HAVE_NOEXCEPT );
nssv_PRESENT( nssv_HAVE_NULLPTR );
nssv_PRESENT( nssv_HAVE_REF_QUALIFIER );
nssv_PRESENT( nssv_HAVE_UNICODE_LITERALS );
nssv_PRESENT( nssv_HAVE_USER_DEFINED_LITERALS );
nssv_PRESENT( nssv_HAVE_WCHAR16_T );
nssv_PRESENT( nssv_HAVE_WCHAR32_T );
#endif
}
CASE( "presence of C++ library features" "[.stdlibrary]" )
{
#if nssv_USES_STD_STRING_VIEW
std::cout << "(C++ library features not available: using std::string_view)\n";
#else
nssv_PRESENT( nssv_HAVE_STD_HASH );
#endif
#ifdef _HAS_CPP0X
nssv_PRESENT( _HAS_CPP0X );
#else
nssv_ABSENT( _HAS_CPP0X );
#endif
}
CASE( "usage of compiler intrinsics" "[.intrinsics]" )
{
#if nssv_USES_STD_STRING_VIEW
std::cout << "(Compiler intrinsics not available: using std::string_view)\n";
#else
nssv_PRESENT( nssv_HAVE_BUILTIN_VER );
nssv_PRESENT( nssv_HAVE_BUILTIN_CE );
nssv_PRESENT( nssv_HAVE_BUILTIN_MEMCMP );
nssv_PRESENT( nssv_HAVE_BUILTIN_STRLEN );
#endif
}
int main( int argc, char * argv[] )
{
return lest::run( specification(), argc, argv );
}
#if 0
g++ -I../include -o string_view-main.t.exe string_view-main.t.cpp && string_view-main.t.exe --pass
g++ -std=c++98 -I../include -o string_view-main.t.exe string_view-main.t.cpp && string_view-main.t.exe --pass
g++ -std=c++03 -I../include -o string_view-main.t.exe string_view-main.t.cpp && string_view-main.t.exe --pass
g++ -std=c++0x -I../include -o string_view-main.t.exe string_view-main.t.cpp && string_view-main.t.exe --pass
g++ -std=c++11 -I../include -o string_view-main.t.exe string_view-main.t.cpp && string_view-main.t.exe --pass
g++ -std=c++14 -I../include -o string_view-main.t.exe string_view-main.t.cpp && string_view-main.t.exe --pass
g++ -std=c++17 -I../include -o string_view-main.t.exe string_view-main.t.cpp && string_view-main.t.exe --pass
cl -EHsc -I../include string_view-main.t.cpp && string_view-main.t.exe --pass
#endif
// end of file