@@ -51,6 +51,11 @@ void test() {
51
51
// Mode: default (`in` | `out`)
52
52
{
53
53
SpStream spSt (sp);
54
+
55
+ assert (spSt);
56
+ assert (!spSt.bad ());
57
+ assert (!spSt.fail ());
58
+ assert (spSt.good ());
54
59
assert (spSt.span ().size () == 0 );
55
60
56
61
// Read from stream
@@ -67,19 +72,26 @@ void test() {
67
72
int i3;
68
73
spSt >> i3;
69
74
70
- assert (spSt.good ());
71
75
assert (str1 == CS (" zmt" ));
72
76
assert (i1 == 94 );
73
77
assert (str2 == CS (" hkt" ));
74
78
assert (i2 == 82 );
75
79
assert (str3 == CS (" pir" ));
76
80
assert (i3 == 43 );
77
81
82
+ assert (spSt);
83
+ assert (!spSt.bad ());
84
+ assert (!spSt.fail ());
85
+ assert (spSt.good ());
86
+
78
87
// Write to stream
79
88
constexpr std::basic_string_view<CharT, TraitsT> sv1{SV (" year 2024" )};
80
89
spSt << sv1;
81
90
82
91
assert (spSt.span ().size () == sv1.size ());
92
+ assert (spSt);
93
+ assert (!spSt.bad ());
94
+ assert (!spSt.fail ());
83
95
assert (spSt.good ());
84
96
85
97
// Read from stream
@@ -93,15 +105,28 @@ void test() {
93
105
assert (i4 == 2024 );
94
106
95
107
spSt >> i4;
108
+
109
+ assert (!spSt);
110
+ assert (!spSt.bad ());
96
111
assert (spSt.fail ());
112
+ assert (!spSt.good ());
113
+
97
114
spSt.clear ();
115
+
116
+ assert (spSt);
117
+ assert (!spSt.bad ());
118
+ assert (!spSt.fail ());
98
119
assert (spSt.good ());
99
120
100
121
// Write to stream
101
122
spSt << CS (" 94" );
102
123
spSt << 84 ;
103
124
125
+ assert (spSt);
126
+ assert (!spSt.bad ());
127
+ assert (!spSt.fail ());
104
128
assert (spSt.good ());
129
+
105
130
assert (spSt.span ().size () == sv1.size () + 4 );
106
131
std::basic_string<CharT, TraitsT> expectedStr1{spSt.span ().data (), std::size_t {spSt.span ().size ()}};
107
132
assert (expectedStr1 == CS (" year 20249484" ));
@@ -113,20 +138,164 @@ void test() {
113
138
assert (spSt.span ().size () == arrSize);
114
139
std::basic_string<CharT, TraitsT> expectedStr2{spSt.span ().data (), std::size_t {spSt.span ().size ()}};
115
140
assert (expectedStr2 == CS (" year 20249484This string shoul" ));
141
+
142
+ assert (!spSt);
143
+ assert (spSt.bad ());
116
144
assert (spSt.fail ());
145
+ assert (!spSt.good ());
117
146
}
147
+ #if 0
118
148
// Mode: `in`
119
149
{
120
150
SpStream spSt{sp, std::ios_base::in};
121
- // TODO
122
- (void )spSt;
123
- }
151
+ assert(spSt);
152
+ assert(spSt.good());
153
+ assert(spSt.span().size() == arrSize);
154
+
155
+ std::basic_string<CharT, TraitsT> expectedStr0{spSt.span().data(), std::size_t{spSt.span().size()}};
156
+ std::cout << expectedStr0 << std::endl;
157
+
158
+ // // Read from stream
159
+ // std::basic_string<CharT, TraitsT> str1;
160
+ // spSt >> str1;
161
+ // int i1;
162
+ // spSt >> i1;
163
+ // std::basic_string<CharT, TraitsT> str2;
164
+ // spSt >> str2;
165
+ // int i2;
166
+ // spSt >> i2;
167
+ // std::basic_string<CharT, TraitsT> str3;
168
+ // spSt >> str3;
169
+ // int i3;
170
+ // spSt >> i3;
171
+
172
+ // assert(spSt.good());
173
+ // assert(str1 == CS("zmt"));
174
+ // assert(i1 == 94);
175
+ // assert(str2 == CS("hkt"));
176
+ // assert(i2 == 82);
177
+ // assert(str3 == CS("pir"));
178
+ // assert(i3 == 43);
179
+
180
+ // Write to stream
181
+ constexpr std::basic_string_view<CharT, TraitsT> sv1{SV("year 2024")};
182
+ spSt << sv1;
183
+
184
+ std::cout << spSt.span().size() << std::endl;
185
+ assert(spSt.span().size() == sv1.size());
186
+ assert(spSt.good());
187
+
188
+ // Read from stream
189
+ spSt.seekg(0);
190
+ std::basic_string<CharT, TraitsT> str4;
191
+ spSt >> str4;
192
+ int i4;
193
+ spSt >> i4;
194
+
195
+ assert(str4 == CS("year"));
196
+ assert(i4 == 2024);
197
+
198
+ spSt >> i4;
199
+ assert(spSt);
200
+ assert(!spSt.bad());
201
+ assert(spSt.fail());
202
+ assert(!spSt.good());
203
+
204
+ spSt.clear();
205
+ assert(spSt);
206
+ assert(!spSt.bad());
207
+ assert(!spSt.fail());
208
+ assert(spSt.good());
209
+ // Write to stream
210
+ spSt << CS("94");
211
+ spSt << 84;
212
+
213
+ assert(spSt);
214
+ assert(!spSt.bad());
215
+ assert(!spSt.fail());
216
+ assert(spSt.good()); assert(spSt.span().size() == sv1.size() + 4);
217
+ std::basic_string<CharT, TraitsT> expectedStr1{spSt.span().data(), std::size_t{spSt.span().size()}};
218
+ assert(expectedStr1 == CS("year 20249484"));
219
+
220
+ // Write to stream with overflow
221
+ constexpr std::basic_string_view<CharT, TraitsT> sv2{
222
+ SV("This string should overflow! This string should overflow!")};
223
+ spSt << sv2;
224
+ assert(spSt.span().size() == arrSize);
225
+ std::basic_string<CharT, TraitsT> expectedStr2{spSt.span().data(), std::size_t{spSt.span().size()}};
226
+ assert(expectedStr2 == CS("year 20249484This string shoul"));
227
+ assert(spSt);
228
+ assert(!spSt.bad());
229
+ assert(spSt.fail());
230
+ assert(!spSt.good()); }
124
231
// Mode `out`
125
232
{
126
233
SpStream spSt{sp, std::ios_base::out};
127
- // TODO
128
- (void )spSt;
234
+ assert(spSt.span().size() == 0);
235
+
236
+ // Read from stream
237
+ std::basic_string<CharT, TraitsT> str1;
238
+ spSt >> str1;
239
+ int i1;
240
+ spSt >> i1;
241
+ std::basic_string<CharT, TraitsT> str2;
242
+ spSt >> str2;
243
+ int i2;
244
+ spSt >> i2;
245
+ std::basic_string<CharT, TraitsT> str3;
246
+ spSt >> str3;
247
+ int i3;
248
+ spSt >> i3;
249
+
250
+ assert(spSt.good());
251
+ assert(str1 == CS("zmt"));
252
+ assert(i1 == 94);
253
+ assert(str2 == CS("hkt"));
254
+ assert(i2 == 82);
255
+ assert(str3 == CS("pir"));
256
+ assert(i3 == 43);
257
+
258
+ // Write to stream
259
+ constexpr std::basic_string_view<CharT, TraitsT> sv1{SV("year 2024")};
260
+ spSt << sv1;
261
+
262
+ assert(spSt.span().size() == sv1.size());
263
+ assert(spSt.good());
264
+
265
+ // Read from stream
266
+ spSt.seekg(0);
267
+ std::basic_string<CharT, TraitsT> str4;
268
+ spSt >> str4;
269
+ int i4;
270
+ spSt >> i4;
271
+
272
+ assert(str4 == CS("year"));
273
+ assert(i4 == 2024);
274
+
275
+ spSt >> i4;
276
+ assert(spSt.fail());
277
+ spSt.clear();
278
+ assert(spSt.good());
279
+
280
+ // Write to stream
281
+ spSt << CS("94");
282
+ spSt << 84;
283
+
284
+ assert(spSt.good());
285
+ assert(spSt.span().size() == sv1.size() + 4);
286
+ std::basic_string<CharT, TraitsT> expectedStr1{spSt.span().data(), std::size_t{spSt.span().size()}};
287
+ assert(expectedStr1 == CS("year 20249484"));
288
+
289
+ // Write to stream with overflow
290
+ constexpr std::basic_string_view<CharT, TraitsT> sv2{
291
+ SV("This string should overflow! This string should overflow!")};
292
+ spSt << sv2;
293
+ assert(spSt.span().size() == arrSize);
294
+ std::basic_string<CharT, TraitsT> expectedStr2{spSt.span().data(), std::size_t{spSt.span().size()}};
295
+ assert(expectedStr2 == CS("year 20249484This string shoul"));
296
+ assert(spSt.fail());
129
297
}
298
+ #endif
130
299
}
131
300
132
301
int main (int , char **) {
0 commit comments