Skip to content

Commit b743d31

Browse files
committed
Tests: tweaks
1 parent 2fb8e8c commit b743d31

File tree

7 files changed

+83
-41
lines changed

7 files changed

+83
-41
lines changed

libcxx/test/std/input.output/span.streams/ospanstream/types.compile.pass.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,17 @@
2828
#include <type_traits>
2929

3030
#include "constexpr_char_traits.h"
31+
#include "nasty_string.h"
3132
#include "test_macros.h"
3233

3334
template <typename CharT, typename TraitsT = std::char_traits<CharT>>
3435
void test() {
3536
using SpStream = std::basic_ospanstream<CharT, TraitsT>;
3637

38+
// Constructors
39+
40+
static_assert(!std::is_default_constructible_v<SpStream>);
41+
3742
// Types
3843

3944
static_assert(std::is_base_of_v<std::basic_ostream<CharT, TraitsT>, SpStream>);
@@ -50,18 +55,14 @@ void test() {
5055

5156
// Move properties
5257

53-
static_assert(!std::is_copy_constructible_v<SpStream>);
54-
static_assert(!std::is_copy_assignable_v<SpStream>);
55-
56-
// Move properties
57-
5858
static_assert(std::is_move_constructible_v<SpStream>);
5959
static_assert(std::is_move_assignable_v<SpStream>);
6060
}
6161

6262
void test() {
6363
test<char>();
6464
test<char, constexpr_char_traits<char>>();
65+
test<nasty_char, nasty_char_traits>();
6566
#ifndef TEST_HAS_NO_WIDE_CHARACTERS
6667
test<wchar_t>();
6768
test<wchar_t, constexpr_char_traits<wchar_t>>();

libcxx/test/std/input.output/span.streams/spanbuf/spanbuf.cons/default.pass.cpp

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,33 +24,17 @@
2424
#include "nasty_string.h"
2525
#include "test_macros.h"
2626

27-
void test_sfinae_with_nasty_char() {
28-
using SpBuf = std::basic_spanbuf<nasty_char, nasty_char_traits>;
29-
30-
static_assert(std::default_initializable<SpBuf>);
31-
}
32-
33-
template <typename CharT, typename TraitsT = std::char_traits<CharT>>
34-
void test_sfinae() {
35-
using SpBuf = std::basic_spanbuf<CharT, TraitsT>;
36-
37-
static_assert(std::default_initializable<SpBuf>);
38-
}
39-
4027
template <typename CharT, typename TraitsT = std::char_traits<CharT>>
4128
void test() {
42-
using SpanBuf = std::basic_spanbuf<CharT, TraitsT>;
29+
using SpBuf = std::basic_spanbuf<CharT, TraitsT>;
4330

44-
SpanBuf spBuf;
31+
SpBuf spBuf;
4532
assert(spBuf.span().data() == nullptr);
4633
assert(spBuf.span().empty());
4734
assert(spBuf.span().size() == 0);
4835
}
4936

5037
int main(int, char**) {
51-
test_sfinae_with_nasty_char();
52-
test_sfinae<char>();
53-
test_sfinae<char, constexpr_char_traits<char>>();
5438
test<char>();
5539
test<char, constexpr_char_traits<char>>();
5640
#ifndef TEST_HAS_NO_WIDE_CHARACTERS

libcxx/test/std/input.output/span.streams/spanbuf/spanbuf.cons/mode.pass.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,20 @@
3333
void test_sfinae_with_nasty_char() {
3434
using SpBuf = std::basic_spanbuf<nasty_char, nasty_char_traits>;
3535

36+
// Mode
3637
static_assert(std::constructible_from<SpBuf, std::ios_base::openmode>);
3738
static_assert(!test_convertible<SpBuf, std::ios_base::openmode>());
39+
40+
// Non-mode
41+
static_assert(!std::constructible_from<SpBuf, const NonMode>);
42+
static_assert(!test_convertible<SpBuf, const NonMode>());
3843
}
3944

4045
template <typename CharT, typename TraitsT = std::char_traits<CharT>>
4146
void test_sfinae() {
4247
using SpBuf = std::basic_spanbuf<CharT, TraitsT>;
4348

44-
// `Mode`
49+
// Mode
4550
static_assert(std::constructible_from<SpBuf, std::ios_base::openmode>);
4651
static_assert(!test_convertible<SpBuf, std::ios_base::openmode>());
4752

@@ -72,7 +77,7 @@ void test() {
7277
}
7378
// Mode: multiple
7479
{
75-
SpBuf spBuf(std::ios_base::out | std::ios_base::in | std::ios_base::binary);
80+
SpBuf spBuf(std::ios_base::in | std::ios_base::out | std::ios_base::binary);
7681
assert(spBuf.span().data() == nullptr);
7782
assert(spBuf.span().empty());
7883
assert(spBuf.span().size() == 0);

libcxx/test/std/input.output/span.streams/spanbuf/spanbuf.cons/move.pass.cpp

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ template <typename CharT, typename TraitsT>
3232
struct TestSpanBuf : std::basic_spanbuf<CharT, TraitsT> {
3333
using std::basic_spanbuf<CharT, TraitsT>::basic_spanbuf;
3434

35-
TestSpanBuf(std::basic_spanbuf<CharT, TraitsT>&& rhs) : std::basic_spanbuf<CharT, TraitsT>(std::move(rhs)) {}
35+
TestSpanBuf(std::basic_spanbuf<CharT, TraitsT>&& rhs_p) : std::basic_spanbuf<CharT, TraitsT>(std::move(rhs_p)) {}
3636

3737
void check_postconditions(TestSpanBuf<CharT, TraitsT> const& rhs_p) const {
3838
assert(this->span().data() == rhs_p.span().data());
@@ -67,6 +67,14 @@ void test() {
6767
{
6868
// Empty `span`
6969
{
70+
// Mode: default
71+
{
72+
SpBuf rhsSpBuf;
73+
SpBuf spBuf(std::move(rhsSpBuf));
74+
assert(spBuf.span().data() == nullptr);
75+
assert(spBuf.span().empty());
76+
assert(spBuf.span().size() == 0);
77+
}
7078
// Mode: `ios_base::in`
7179
{
7280
SpBuf rhsSpBuf{std::ios_base::in};
@@ -98,6 +106,14 @@ void test() {
98106
CharT arr[4];
99107
std::span<CharT> sp{arr};
100108

109+
// Mode: default
110+
{
111+
SpBuf rhsSpBuf{sp};
112+
SpBuf spBuf(std::move(rhsSpBuf));
113+
assert(spBuf.span().data() == arr);
114+
assert(spBuf.span().empty());
115+
assert(spBuf.span().size() == 0);
116+
}
101117
// Mode: `ios_base::in`
102118
{
103119
SpBuf rhsSpBuf{sp, std::ios_base::in};
@@ -129,6 +145,7 @@ void test() {
129145
{
130146
// Empty `span`
131147
{
148+
// Mode: default
132149
{
133150
std::span<CharT> sp;
134151
TestSpanBuf<CharT, TraitsT> rhsSpBuf(sp);
@@ -158,7 +175,7 @@ void test() {
158175
// Mode: multiple
159176
{
160177
std::span<CharT> sp;
161-
TestSpanBuf<CharT, TraitsT> rhsSpBuf(sp, std::ios_base::out | std::ios_base::in | std::ios_base::binary);
178+
TestSpanBuf<CharT, TraitsT> rhsSpBuf(sp, std::ios_base::in | std::ios_base::out | std::ios_base::binary);
162179
TestSpanBuf<CharT, TraitsT> spBuf(std::move(static_cast<SpBuf&>(rhsSpBuf)));
163180
assert(rhsSpBuf.span().empty());
164181
assert(spBuf.span().data() == nullptr);
@@ -170,6 +187,7 @@ void test() {
170187
{
171188
CharT arr[4];
172189

190+
// Mode: default
173191
{
174192
std::span<CharT> sp{arr};
175193
TestSpanBuf<CharT, TraitsT> rhsSpBuf(sp);
@@ -199,7 +217,7 @@ void test() {
199217
// Mode: multiple
200218
{
201219
std::span<CharT> sp{arr};
202-
TestSpanBuf<CharT, TraitsT> rhsSpBuf(sp, std::ios_base::out | std::ios_base::in | std::ios_base::binary);
220+
TestSpanBuf<CharT, TraitsT> rhsSpBuf(sp, std::ios_base::in | std::ios_base::out | std::ios_base::binary);
203221
TestSpanBuf<CharT, TraitsT> spBuf(std::move(static_cast<SpBuf&>(rhsSpBuf)));
204222
assert(rhsSpBuf.span().empty());
205223
assert(spBuf.span().data() == arr);

libcxx/test/std/input.output/span.streams/spanbuf/spanbuf.cons/span.mode.pass.cpp

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,20 @@
3636
void test_sfinae_with_nasty_char() {
3737
using SpBuf = std::basic_spanbuf<nasty_char, nasty_char_traits>;
3838

39+
// Mode
3940
static_assert(std::constructible_from<SpBuf, const std::span<nasty_char>, std::ios_base::openmode>);
4041
static_assert(!test_convertible<SpBuf, std::ios_base::openmode>());
42+
43+
// Non-mode
44+
static_assert(!std::constructible_from<SpBuf, const std::span<nasty_char>, const NonMode>);
45+
static_assert(!test_convertible<SpBuf, const NonMode>());
4146
}
4247

4348
template <typename CharT, typename TraitsT = std::char_traits<CharT>>
4449
void test_sfinae() {
4550
using SpBuf = std::basic_spanbuf<CharT, TraitsT>;
4651

47-
// `Mode`
52+
// Mode
4853
static_assert(std::constructible_from<SpBuf, const std::span<CharT>, std::ios_base::openmode>);
4954
static_assert(!test_convertible<SpBuf, const std::span<CharT>, std::ios_base::openmode>());
5055

@@ -63,6 +68,13 @@ void test() {
6368
{
6469
std::span<CharT> sp{};
6570

71+
// Mode: default
72+
{
73+
SpBuf spBuf(sp);
74+
assert(spBuf.span().data() == nullptr);
75+
assert(spBuf.span().empty());
76+
assert(spBuf.span().size() == 0);
77+
}
6678
// Mode: `ios_base::in`
6779
{
6880
SpBuf spBuf(sp, std::ios_base::in);
@@ -89,13 +101,33 @@ void test() {
89101
assert(spBuf.span().empty());
90102
assert(spBuf.span().size() == 0);
91103
}
104+
// Mode: multiple
105+
{
106+
SpBuf spBuf(sp, std::ios_base::in | std::ios_base::out | std::ios_base::binary);
107+
assert(spBuf.span().data() == nullptr);
108+
assert(spBuf.span().empty());
109+
assert(spBuf.span().size() == 0);
110+
}
111+
{
112+
SpBuf spBuf(std::as_const(sp), std::ios_base::in | std::ios_base::out | std::ios_base::binary);
113+
assert(spBuf.span().data() == nullptr);
114+
assert(spBuf.span().empty());
115+
assert(spBuf.span().size() == 0);
116+
}
92117
}
93118

94119
// Non-empty `span`
95120
{
96121
CharT arr[4];
97122
std::span<CharT> sp{arr};
98123

124+
// Mode: default
125+
{
126+
SpBuf spBuf(sp);
127+
assert(spBuf.span().data() == arr);
128+
assert(spBuf.span().empty());
129+
assert(spBuf.span().size() == 0);
130+
}
99131
// Mode: `ios_base::in`
100132
{
101133
SpBuf spBuf(sp, std::ios_base::in);
@@ -124,13 +156,13 @@ void test() {
124156
}
125157
// Mode: multiple
126158
{
127-
SpBuf spBuf(sp, std::ios_base::out | std::ios_base::in);
159+
SpBuf spBuf(sp, std::ios_base::in | std::ios_base::out | std::ios_base::binary);
128160
assert(spBuf.span().data() == arr);
129161
assert(spBuf.span().empty());
130162
assert(spBuf.span().size() == 0);
131163
}
132164
{
133-
SpBuf spBuf(std::as_const(sp), std::ios_base::out | std::ios_base::in | std::ios_base::binary);
165+
SpBuf spBuf(std::as_const(sp), std::ios_base::in | std::ios_base::out | std::ios_base::binary);
134166
assert(spBuf.span().data() == arr);
135167
assert(spBuf.span().empty());
136168
assert(spBuf.span().size() == 0);

libcxx/test/std/input.output/span.streams/spanbuf/types.compile.pass.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,17 @@
2828
#include <type_traits>
2929

3030
#include "constexpr_char_traits.h"
31+
#include "nasty_string.h"
3132
#include "test_macros.h"
3233

3334
template <typename CharT, typename TraitsT = std::char_traits<CharT>>
3435
void test() {
3536
using SpBuf = std::basic_spanbuf<CharT, TraitsT>;
3637

38+
// Constructors
39+
40+
static_assert(std::is_default_constructible_v<SpBuf>);
41+
3742
// Types
3843

3944
static_assert(std::is_base_of_v<std::basic_streambuf<CharT, TraitsT>, SpBuf>);
@@ -50,18 +55,14 @@ void test() {
5055

5156
// Move properties
5257

53-
static_assert(!std::is_copy_constructible_v<SpBuf>);
54-
static_assert(!std::is_copy_assignable_v<SpBuf>);
55-
56-
// Move properties
57-
5858
static_assert(std::is_move_constructible_v<SpBuf>);
5959
static_assert(std::is_move_assignable_v<SpBuf>);
6060
}
6161

6262
void test() {
6363
test<char>();
6464
test<char, constexpr_char_traits<char>>();
65+
test<nasty_char, nasty_char_traits>();
6566
#ifndef TEST_HAS_NO_WIDE_CHARACTERS
6667
test<wchar_t>();
6768
test<wchar_t, constexpr_char_traits<wchar_t>>();

libcxx/test/std/input.output/span.streams/spanstream/types.compile.pass.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,17 @@
2828
#include <type_traits>
2929

3030
#include "constexpr_char_traits.h"
31+
#include "nasty_string.h"
3132
#include "test_macros.h"
3233

3334
template <typename CharT, typename TraitsT = std::char_traits<CharT>>
3435
void test() {
3536
using SpStream = std::basic_spanstream<CharT, TraitsT>;
3637

38+
// Constructors
39+
40+
static_assert(!std::is_default_constructible_v<SpStream>);
41+
3742
// Types
3843

3944
static_assert(std::is_base_of_v<std::basic_iostream<CharT, TraitsT>, SpStream>);
@@ -50,18 +55,14 @@ void test() {
5055

5156
// Move properties
5257

53-
static_assert(!std::is_copy_constructible_v<SpStream>);
54-
static_assert(!std::is_copy_assignable_v<SpStream>);
55-
56-
// Move properties
57-
5858
static_assert(std::is_move_constructible_v<SpStream>);
5959
static_assert(std::is_move_assignable_v<SpStream>);
6060
}
6161

6262
void test() {
6363
test<char>();
6464
test<char, constexpr_char_traits<char>>();
65+
test<nasty_char, nasty_char_traits>();
6566
#ifndef TEST_HAS_NO_WIDE_CHARACTERS
6667
test<wchar_t>();
6768
test<wchar_t, constexpr_char_traits<wchar_t>>();

0 commit comments

Comments
 (0)