2121#include < spanstream>
2222#include < string>
2323#include < string_view>
24+ #include < vector>
25+
26+ #include < print>
2427
2528#include " constexpr_char_traits.h"
2629#include " test_macros.h"
@@ -40,11 +43,11 @@ void test() {
4043 // Create a std::span test value
4144 CharT arr[arrSize]{};
4245 initialize_array_from_string_view (arr, sv);
43-
44- std::span<CharT> sp{arr};
46+ std::vector<CharT> vec (arr, arr + arrSize);
4547
4648 // `std::span` + Mode: default (`out`)
4749 {
50+ std::span<CharT> sp{arr};
4851 SpStream spSt (sp);
4952
5053 assert (spSt);
@@ -59,13 +62,65 @@ void test() {
5962 assert (!spSt.bad ());
6063 assert (!spSt.fail ());
6164 assert (spSt.good ());
65+ assert (spSt.span ().size () == 0 );
66+ }
67+ {
68+ std::span<CharT> sp{arr};
69+ SpStream spSt (sp);
70+
71+ assert (spSt);
72+ assert (!spSt.bad ());
73+ assert (!spSt.fail ());
74+ assert (spSt.good ());
75+ assert (spSt.span ().size () == 0 );
76+
77+ spSt << 10 ;
78+
79+ assert (spSt.span ().size () == 2 );
80+
81+ spSt.clear ();
82+
83+ // assert(spSt);
84+ // assert(!spSt.bad());
85+ // assert(!spSt.fail());
86+ // assert(spSt.good());
87+ // assert(spSt.span().size() == 0);
88+
89+ spSt << SV (" gh" );
90+ assert (spSt.span ().size () == 4 );
91+ std::println (stderr, " {}" , spSt.span ()[0 ]);
92+ std::println (stderr, " {}" , arr[0 ]);
93+ assert (spSt.span ()[0 ] == ' 1' );
94+ assert (arr[0 ] == ' 1' );
95+ assert (spSt.span ()[1 ] == ' 0' );
96+ assert (arr[1 ] == ' 0' );
97+ assert (spSt.span ()[2 ] == ' g' );
98+ assert (arr[2 ] == ' g' );
99+
100+ CharT output_buffer[30 ];
101+ std::basic_ospanstream<CharT, TraitsT> os{std::span<CharT>{output_buffer}};
102+
103+ assert (os.good ());
104+ assert (!os.fail ());
105+ assert (!os.bad ());
106+ os << 10 << 20 << 30 ;
107+ os << SV (" GH" );
108+ assert (os.good ());
109+ assert (!os.fail ());
110+ assert (!os.bad ());
111+ std::println (stderr, " {}" , os.span ()[0 ]);
112+ std::println (stderr, " {}" , output_buffer[0 ]);
113+ std::println (stderr, " {}" , os.span ().size ());
114+ std::println (stderr, " {}" , os.span ()[6 ]);
115+ std::println (stderr, " {}" , output_buffer[7 ]);
116+ assert (false );
62117 }
63118}
64119
65120int main (int , char **) {
66121 test<char >();
67122#ifndef TEST_HAS_NO_WIDE_CHARACTERS
68- test<wchar_t >();
123+ // test<wchar_t>();
69124#endif
70125
71126 return 0 ;
0 commit comments