@@ -33,6 +33,11 @@ void test() {
33
33
34
34
CharT arr[4 ];
35
35
36
+ std::span<CharT> sp{arr};
37
+ assert (sp.data () == arr);
38
+ assert (!sp.empty ());
39
+ assert (sp.size () == 4 );
40
+
36
41
// Mode: default (`in` | `out`)
37
42
{
38
43
SpBuf spBuf;
@@ -52,11 +57,6 @@ void test() {
52
57
assert (spBuf.span ().empty ());
53
58
assert (spBuf.span ().size () == 0 );
54
59
55
- std::span<CharT> sp{arr};
56
- assert (sp.data () == arr);
57
- assert (!sp.empty ());
58
- assert (sp.size () == 4 );
59
-
60
60
spBuf.span (sp);
61
61
assert (spBuf.span ().data () == arr);
62
62
// Mode `out` counts read characters
@@ -81,11 +81,6 @@ void test() {
81
81
assert (spBuf.span ().empty ());
82
82
assert (spBuf.span ().size () == 0 );
83
83
84
- std::span<CharT> sp{arr};
85
- assert (sp.data () == arr);
86
- assert (!sp.empty ());
87
- assert (sp.size () == 4 );
88
-
89
84
spBuf.span (sp);
90
85
assert (spBuf.span ().data () == arr);
91
86
assert (!spBuf.span ().empty ());
@@ -110,17 +105,60 @@ void test() {
110
105
assert (spBuf.span ().empty ());
111
106
assert (spBuf.span ().size () == 0 );
112
107
113
- std::span<CharT> sp{arr};
114
- assert (sp.data () == arr);
115
- assert (!sp.empty ());
116
- assert (sp.size () == 4 );
108
+ spBuf.span (sp);
109
+ assert (spBuf.span ().data () == arr);
110
+ // Mode `out` counts read characters
111
+ assert (spBuf.span ().empty ());
112
+ assert (spBuf.span ().size () == 0 );
113
+ }
114
+ // Mode: multiple
115
+ {
116
+ SpBuf spBuf (std::ios_base::in | std::ios_base::out | std::ios_base::binary);
117
+ assert (spBuf.span ().data () == nullptr );
118
+ assert (spBuf.span ().empty ());
119
+ assert (spBuf.span ().size () == 0 );
120
+
121
+ spBuf.span (arr);
122
+ assert (spBuf.span ().data () == arr);
123
+ // Mode `out` counts read characters
124
+ assert (spBuf.span ().empty ());
125
+ assert (spBuf.span ().size () == 0 );
126
+ }
127
+ {
128
+ SpBuf spBuf (std::ios_base::in | std::ios_base::out | std::ios_base::binary);
129
+ assert (spBuf.span ().data () == nullptr );
130
+ assert (spBuf.span ().empty ());
131
+ assert (spBuf.span ().size () == 0 );
117
132
118
133
spBuf.span (sp);
119
134
assert (spBuf.span ().data () == arr);
120
135
// Mode `out` counts read characters
121
136
assert (spBuf.span ().empty ());
122
137
assert (spBuf.span ().size () == 0 );
123
138
}
139
+ // Mode: `ate`
140
+ {
141
+ SpBuf spBuf (std::ios_base::out | std::ios_base::ate);
142
+ assert (spBuf.span ().data () == nullptr );
143
+ assert (spBuf.span ().empty ());
144
+ assert (spBuf.span ().size () == 0 );
145
+
146
+ spBuf.span (arr);
147
+ assert (spBuf.span ().data () == arr);
148
+ assert (!spBuf.span ().empty ());
149
+ assert (spBuf.span ().size () == 4 );
150
+ }
151
+ {
152
+ SpBuf spBuf (std::ios_base::out | std::ios_base::ate);
153
+ assert (spBuf.span ().data () == nullptr );
154
+ assert (spBuf.span ().empty ());
155
+ assert (spBuf.span ().size () == 0 );
156
+
157
+ spBuf.span (sp);
158
+ assert (spBuf.span ().data () == arr);
159
+ assert (!spBuf.span ().empty ());
160
+ assert (spBuf.span ().size () == 4 );
161
+ }
124
162
}
125
163
126
164
int main (int , char **) {
0 commit comments