Skip to content

Commit 4ab4f34

Browse files
committed
Added all tests
1 parent 7d83afc commit 4ab4f34

File tree

16 files changed

+1220
-271
lines changed

16 files changed

+1220
-271
lines changed

libcxx/test/std/input.output/string.streams/istringstream/istringstream.cons/string_view.alloc.pass.cpp

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
// basic_istringstream(const T& t, const Allocator& a);
1818

1919
#include <cassert>
20+
#include <concepts>
2021
#include <sstream>
2122
#include <string>
2223
#include <string_view>
@@ -26,43 +27,50 @@
2627
#include "test_convertible.h"
2728
#include "test_macros.h"
2829

29-
struct SomeObject {};
30-
struct NonAllocator {};
31-
3230
template <typename CharT>
33-
void test_constraints() {
31+
void test_sfinae() {
32+
struct SomeObject {};
33+
struct NonAllocator {};
34+
3435
// `const CharT*`
36+
static_assert(std::constructible_from<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
37+
const CharT*,
38+
const test_allocator<CharT>>);
3539
static_assert(test_convertible<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
3640
const CharT*,
37-
test_allocator<CharT>>());
41+
const test_allocator<CharT>>());
3842
// `std::basic_string_view<CharT>`
43+
static_assert(std::constructible_from<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
44+
const std::basic_string_view<CharT>,
45+
const test_allocator<CharT>>);
3946
static_assert(test_convertible<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
4047
std::basic_string_view<CharT>,
4148
test_allocator<CharT>>());
4249
// `std::basic_string<CharT>`
50+
static_assert(std::constructible_from<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
51+
const std::basic_string<CharT>,
52+
const test_allocator<CharT>>);
4353
static_assert(test_convertible<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
44-
std::basic_string<CharT>,
45-
test_allocator<CharT>>());
46-
47-
// Non-convertible to std::`basic_string_view<CharT>`
48-
static_assert(!test_convertible<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
49-
int,
50-
test_allocator<CharT>>());
51-
static_assert(!test_convertible<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
52-
const int&,
53-
test_allocator<CharT>>());
54-
static_assert(!test_convertible<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
55-
SomeObject,
54+
const std::basic_string<CharT>,
55+
const test_allocator<CharT>>());
5656

57-
test_allocator<CharT>>());
57+
// String-view-like
58+
static_assert(
59+
!std::constructible_from<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
60+
const SomeObject,
61+
const test_allocator<CharT>>);
5862
static_assert(!test_convertible<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
59-
const SomeObject&,
60-
test_allocator<CharT>>());
63+
const SomeObject,
64+
const test_allocator<CharT>>());
6165

6266
// Allocator
67+
static_assert(
68+
!std::constructible_from<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
69+
const std::basic_string_view<CharT>,
70+
const NonAllocator>);
6371
static_assert(!test_convertible<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
64-
std::basic_string<CharT>,
65-
NonAllocator>());
72+
const std::basic_string_view<CharT>,
73+
const NonAllocator>());
6674
}
6775

6876
#define CS(S) MAKE_CSTRING(CharT, S)
@@ -75,31 +83,31 @@ static void test() {
7583

7684
// const CharT*
7785
{
78-
const std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>> ss(CS("zmt"), ca);
86+
std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>> ss(CS("zmt"), ca);
7987
assert(ss.str() == CS("zmt"));
8088
assert(ss.rdbuf()->get_allocator() == ca);
8189
}
8290
// std::basic_string_view<CharT>
8391
{
8492
const auto csv = SV("zmt");
85-
const std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>> ss(csv, ca);
93+
std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>> ss(csv, ca);
8694
assert(ss.str() == CS("zmt"));
8795
assert(ss.rdbuf()->get_allocator() == ca);
8896
}
8997
// std::basic_string<CharT>
9098
{
9199
const auto cs = ST("zmt");
92-
const std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>> ss(cs, ca);
100+
std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>> ss(cs, ca);
93101
assert(ss.str() == CS("zmt"));
94102
assert(ss.rdbuf()->get_allocator() == ca);
95103
}
96104
}
97105

98106
int main(int, char**) {
99-
test_constraints<char>();
107+
test_sfinae<char>();
100108
test<char>();
101109
#ifndef TEST_HAS_NO_WIDE_CHARACTERS
102-
test_constraints<wchar_t>();
110+
test_sfinae<wchar_t>();
103111
test<wchar_t>();
104112
#endif
105113
return 0;

libcxx/test/std/input.output/string.streams/istringstream/istringstream.cons/string_view.mode.alloc.pass.cpp

Lines changed: 54 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
// template<class T>
1717
// basic_istringstream(const T& t, ios_base::openmode which, const Allocator& a);
1818

19-
#include <array>
2019
#include <cassert>
20+
#include <concepts>
2121
#include <sstream>
2222
#include <string>
2323
#include <string_view>
@@ -27,125 +27,82 @@
2727
#include "test_convertible.h"
2828
#include "test_macros.h"
2929

30-
template <typename S, typename T, typename A>
31-
concept HasMember = requires(const T& sv, std::ios_base::openmode w, const A& a) {
32-
{ S(sv, w, a) };
33-
};
34-
3530
template <typename CharT>
36-
void test_constraints() {
31+
void test_sfinae() {
3732
struct SomeObject {};
3833
struct NonAllocator {};
3934

4035
// `const CharT*`
41-
static_assert(HasMember<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
42-
const CharT*,
43-
test_allocator<CharT>>);
36+
static_assert(std::constructible_from<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
37+
const CharT*,
38+
test_allocator<CharT>>);
4439
static_assert(test_convertible<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
4540
const CharT*,
4641
std::ios_base::openmode,
47-
test_allocator<CharT>>());
42+
const test_allocator<CharT>>());
4843
// `std::basic_string_view<CharT>`
49-
static_assert(HasMember<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
50-
std::basic_string_view<CharT>,
51-
test_allocator<CharT>>);
44+
static_assert(std::constructible_from<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
45+
std::basic_string_view<CharT>,
46+
std::ios_base::openmode,
47+
test_allocator<CharT>>);
5248
static_assert(test_convertible<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
53-
std::basic_string_view<CharT>,
49+
const std::basic_string_view<CharT>,
5450
std::ios_base::openmode,
55-
test_allocator<CharT>>());
51+
const test_allocator<CharT>>());
5652
// `std::basic_string<CharT>`
57-
static_assert(HasMember<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
58-
std::basic_string<CharT>,
59-
std::ios_base::openmode,
60-
test_allocator<CharT>>);
53+
static_assert(std::constructible_from<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
54+
const std::basic_string<CharT>,
55+
std::ios_base::openmode,
56+
const test_allocator<CharT>>);
6157
static_assert(test_convertible<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
62-
std::basic_string<CharT>,
58+
const std::basic_string<CharT>,
6359
std::ios_base::openmode,
64-
test_allocator<CharT>>());
65-
66-
// Non-convertible to std::`basic_string_view<CharT>`
60+
const test_allocator<CharT>>());
61+
62+
// String-view-like
63+
static_assert(
64+
!std::constructible_from<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
65+
const int,
66+
std::ios_base::openmode,
67+
const test_allocator<CharT>>);
6768
static_assert(!test_convertible<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
68-
int,
69+
const int,
6970
std::ios_base::openmode,
70-
test_allocator<CharT>>());
71-
static_assert(!test_convertible<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
72-
const int&,
73-
std::ios_base::openmode,
74-
test_allocator<CharT>>());
75-
static_assert(!test_convertible<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
76-
SomeObject,
77-
std::ios_base::openmode,
78-
test_allocator<CharT>>());
71+
const test_allocator<CharT>>());
72+
73+
static_assert(
74+
!std::constructible_from<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
75+
const SomeObject,
76+
std::ios_base::openmode,
77+
const test_allocator<CharT>>);
7978
static_assert(!test_convertible<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
80-
const SomeObject&,
79+
const SomeObject,
8180
std::ios_base::openmode,
82-
test_allocator<CharT>>());
81+
const test_allocator<CharT>>());
8382

8483
// Mode
84+
static_assert(
85+
!std::constructible_from<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
86+
const std::basic_string_view<CharT>,
87+
SomeObject,
88+
const NonAllocator>);
8589
static_assert(!test_convertible<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
86-
std::basic_string<CharT>,
90+
const std::basic_string_view<CharT>,
8791
SomeObject,
88-
NonAllocator>());
92+
const NonAllocator>());
8993

9094
// Allocator
95+
static_assert(
96+
!std::constructible_from<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
97+
const std::basic_string_view<CharT>,
98+
std::ios_base::openmode,
99+
const NonAllocator>);
91100
static_assert(!test_convertible<std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>,
92-
std::basic_string<CharT>,
101+
const std::basic_string_view<CharT>,
93102
std::ios_base::openmode,
94-
NonAllocator>());
103+
const NonAllocator>());
95104
}
96105

97-
// #include <concepts>
98-
// #include <type_traits>
99-
100-
// static_assert(std::is_constructible_v<std::istringstream, std::string_view>);
101-
// static_assert(test_convertible<std::basic_istringstream<char, std::char_traits<char>>,
102-
// const char*,
103-
// std::ios_base::openmode>());
104-
// static_assert(std::is_constructible_v<std::istringstream, int, test_allocator<int>>);
105-
106-
// static_assert(HasMember<std::istringstream, std::string_view, test_allocator<char>>);
107-
108-
// std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>>
109-
// static_assert(HasMember<std::basic_istringstream<char, std::char_traits<char>, test_allocator<char>>,
110-
// const char*,
111-
// test_allocator<char>>);
112-
113-
// // std::istringstream
114-
// static_assert(HasMember<std::istringstream, std::string_view>);
115-
// # ifndef TEST_HAS_NO_WIDE_CHARACTERS
116-
// static_assert(!HasMember<std::istringstream, std::wstring_view>);
117-
// # endif
118-
// static_assert(HasMember<std::istringstream, const char*>);
119-
// # ifndef TEST_HAS_NO_WIDE_CHARACTERS
120-
// static_assert(!HasMember<std::istringstream, const wchar_t*>);
121-
// # endif
122-
// static_assert(HasMember<std::istringstream, std::string>);
123-
// # ifndef TEST_HAS_NO_WIDE_CHARACTERS
124-
// static_assert(!HasMember<std::istringstream, std::wstring>);
125-
// # endif
126-
// static_assert(!HasMember<std::istringstream, std::array<char, 1>>);
127-
// static_assert(!HasMember<std::istringstream, std::array<char, 0>>);
128-
// // static_assert(!HasMember<std::istringstream, char>);
129-
// // static_assert(!HasMember<std::istringstream, int>);
130-
// static_assert(!HasMember<std::istringstream, SomeObject>);
131-
// static_assert(!HasMember<std::istringstream, std::nullptr_t>);
132-
133-
// // std::wistringstream
134-
135-
// # ifndef TEST_HAS_NO_WIDE_CHARACTERS
136-
// static_assert(HasMember<std::wistringstream, std::wstring_view>);
137-
// static_assert(!HasMember<std::wistringstream, std::string_view>);
138-
// static_assert(HasMember<std::wistringstream, const wchar_t*>);
139-
// static_assert(!HasMember<std::wistringstream, const char*>);
140-
// static_assert(HasMember<std::wistringstream, std::wstring>);
141-
// static_assert(!HasMember<std::wistringstream, std::string>);
142-
// static_assert(!HasMember<std::istringstream, std::array<wchar_t, 0>>);
143-
// // static_assert(!HasMember<std::wistringstream, wchar_t>);
144-
// // static_assert(!HasMember<std::wistringstream, int>);
145-
// static_assert(!HasMember<std::wistringstream, SomeObject>);
146-
// static_assert(!HasMember<std::wistringstream, std::nullptr_t>);
147-
// # endif
148-
149106
#define CS(S) MAKE_CSTRING(CharT, S)
150107
#define ST(S) MAKE_STRING(CharT, S)
151108
#define SV(S) MAKE_STRING_VIEW(CharT, S)
@@ -156,34 +113,32 @@ static void test() {
156113

157114
// const CharT*
158115
{
159-
const std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>> ss(
116+
std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>> ss(
160117
CS("zmt"), std::ios_base::binary, ca);
161118
assert(ss.str() == CS("zmt"));
162119
assert(ss.rdbuf()->get_allocator() == ca);
163120
}
164121
// std::basic_string_view<CharT>
165122
{
166123
const auto csv = SV("zmt");
167-
const std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>> ss(
168-
csv, std::ios_base::binary, ca);
124+
std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>> ss(csv, std::ios_base::binary, ca);
169125
assert(ss.str() == CS("zmt"));
170126
assert(ss.rdbuf()->get_allocator() == ca);
171127
}
172128
// std::basic_string<CharT>
173129
{
174130
const auto cs = ST("zmt");
175-
const std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>> ss(
176-
cs, std::ios_base::binary, ca);
131+
std::basic_istringstream<CharT, std::char_traits<CharT>, test_allocator<CharT>> ss(cs, std::ios_base::binary, ca);
177132
assert(ss.str() == CS("zmt"));
178133
assert(ss.rdbuf()->get_allocator() == ca);
179134
}
180135
}
181136

182137
int main(int, char**) {
183-
test_constraints<char>();
138+
test_sfinae<char>();
184139
test<char>();
185140
#ifndef TEST_HAS_NO_WIDE_CHARACTERS
186-
test_constraints<wchar_t>();
141+
test_sfinae<wchar_t>();
187142
test<wchar_t>();
188143
#endif
189144
return 0;

0 commit comments

Comments
 (0)