@@ -51,6 +51,11 @@ void test() {
5151 // Mode: default (`in` | `out`)
5252 {
5353 SpStream spSt (sp);
54+
55+ assert (spSt);
56+ assert (!spSt.bad ());
57+ assert (!spSt.fail ());
58+ assert (spSt.good ());
5459 assert (spSt.span ().size () == 0 );
5560
5661 // Read from stream
@@ -67,19 +72,26 @@ void test() {
6772 int i3;
6873 spSt >> i3;
6974
70- assert (spSt.good ());
7175 assert (str1 == CS (" zmt" ));
7276 assert (i1 == 94 );
7377 assert (str2 == CS (" hkt" ));
7478 assert (i2 == 82 );
7579 assert (str3 == CS (" pir" ));
7680 assert (i3 == 43 );
7781
82+ assert (spSt);
83+ assert (!spSt.bad ());
84+ assert (!spSt.fail ());
85+ assert (spSt.good ());
86+
7887 // Write to stream
7988 constexpr std::basic_string_view<CharT, TraitsT> sv1{SV (" year 2024" )};
8089 spSt << sv1;
8190
8291 assert (spSt.span ().size () == sv1.size ());
92+ assert (spSt);
93+ assert (!spSt.bad ());
94+ assert (!spSt.fail ());
8395 assert (spSt.good ());
8496
8597 // Read from stream
@@ -93,15 +105,28 @@ void test() {
93105 assert (i4 == 2024 );
94106
95107 spSt >> i4;
108+
109+ assert (!spSt);
110+ assert (!spSt.bad ());
96111 assert (spSt.fail ());
112+ assert (!spSt.good ());
113+
97114 spSt.clear ();
115+
116+ assert (spSt);
117+ assert (!spSt.bad ());
118+ assert (!spSt.fail ());
98119 assert (spSt.good ());
99120
100121 // Write to stream
101122 spSt << CS (" 94" );
102123 spSt << 84 ;
103124
125+ assert (spSt);
126+ assert (!spSt.bad ());
127+ assert (!spSt.fail ());
104128 assert (spSt.good ());
129+
105130 assert (spSt.span ().size () == sv1.size () + 4 );
106131 std::basic_string<CharT, TraitsT> expectedStr1{spSt.span ().data (), std::size_t {spSt.span ().size ()}};
107132 assert (expectedStr1 == CS (" year 20249484" ));
@@ -113,20 +138,164 @@ void test() {
113138 assert (spSt.span ().size () == arrSize);
114139 std::basic_string<CharT, TraitsT> expectedStr2{spSt.span ().data (), std::size_t {spSt.span ().size ()}};
115140 assert (expectedStr2 == CS (" year 20249484This string shoul" ));
141+
142+ assert (!spSt);
143+ assert (spSt.bad ());
116144 assert (spSt.fail ());
145+ assert (!spSt.good ());
117146 }
147+ #if 0
118148 // Mode: `in`
119149 {
120150 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()); }
124231 // Mode `out`
125232 {
126233 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());
129297 }
298+ #endif
130299}
131300
132301int main (int , char **) {
0 commit comments