@@ -33,6 +33,11 @@ void test() {
3333
3434 CharT arr[4 ];
3535
36+ std::span<CharT> sp{arr};
37+ assert (sp.data () == arr);
38+ assert (!sp.empty ());
39+ assert (sp.size () == 4 );
40+
3641 // Mode: default (`in` | `out`)
3742 {
3843 SpBuf spBuf;
@@ -52,11 +57,6 @@ void test() {
5257 assert (spBuf.span ().empty ());
5358 assert (spBuf.span ().size () == 0 );
5459
55- std::span<CharT> sp{arr};
56- assert (sp.data () == arr);
57- assert (!sp.empty ());
58- assert (sp.size () == 4 );
59-
6060 spBuf.span (sp);
6161 assert (spBuf.span ().data () == arr);
6262 // Mode `out` counts read characters
@@ -81,11 +81,6 @@ void test() {
8181 assert (spBuf.span ().empty ());
8282 assert (spBuf.span ().size () == 0 );
8383
84- std::span<CharT> sp{arr};
85- assert (sp.data () == arr);
86- assert (!sp.empty ());
87- assert (sp.size () == 4 );
88-
8984 spBuf.span (sp);
9085 assert (spBuf.span ().data () == arr);
9186 assert (!spBuf.span ().empty ());
@@ -110,17 +105,60 @@ void test() {
110105 assert (spBuf.span ().empty ());
111106 assert (spBuf.span ().size () == 0 );
112107
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 );
117132
118133 spBuf.span (sp);
119134 assert (spBuf.span ().data () == arr);
120135 // Mode `out` counts read characters
121136 assert (spBuf.span ().empty ());
122137 assert (spBuf.span ().size () == 0 );
123138 }
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+ }
124162}
125163
126164int main (int , char **) {
0 commit comments