Support stream width and fill and write directly to stream buffer

This commit is contained in:
Glen Fernandes
2020-04-09 01:26:14 -04:00
parent 9f8765e752
commit c8ce84089b
5 changed files with 249 additions and 34 deletions

View File

@ -13,6 +13,7 @@ project : requirements <warnings>pedantic <warnings-as-errors>on ;
run ios_state_unit_test.cpp ;
run ios_state_test.cpp ;
run quoted_test.cpp ;
run quoted_fill_test.cpp ;
run ostream_joiner_test.cpp ;
run make_ostream_joiner_test.cpp ;
run ostream_put_test.cpp ;

View File

@ -25,7 +25,7 @@ int main()
{
std::wostringstream os;
os.width(1);
os.fill('.');
os.fill(L'.');
os.setf(std::ios_base::left, std::ios_base::adjustfield);
boost::io::ostream_put(os, L"xy", 2);
BOOST_TEST(os.good());
@ -45,7 +45,7 @@ int main()
{
std::wostringstream os;
os.width(1);
os.fill('.');
os.fill(L'.');
os.setf(std::ios_base::right, std::ios_base::adjustfield);
boost::io::ostream_put(os, L"xy", 2);
BOOST_TEST(os.good());

136
test/quoted_fill_test.cpp Normal file
View File

@ -0,0 +1,136 @@
/*
Copyright 2019-2020 Glen Joseph Fernandes
(glenjofe@gmail.com)
Distributed under the Boost Software License, Version 1.0.
(http://www.boost.org/LICENSE_1_0.txt)
*/
#include <boost/io/quoted.hpp>
#include <boost/core/lightweight_test.hpp>
#include <sstream>
#include <string>
int main()
{
{
std::ostringstream os;
os.width(2);
os.fill('.');
os.setf(std::ios_base::left, std::ios_base::adjustfield);
os << boost::io::quoted("xy");
BOOST_TEST(os.good());
BOOST_TEST(os.width() == 0);
BOOST_TEST(os.str() == "\"xy\"");
}
{
std::wostringstream os;
os.width(2);
os.fill(L'.');
os.setf(std::ios_base::left, std::ios_base::adjustfield);
os << boost::io::quoted(L"xy");
BOOST_TEST(os.good());
BOOST_TEST(os.width() == 0);
BOOST_TEST(os.str() == L"\"xy\"");
}
{
std::ostringstream os;
os.width(2);
os.fill('.');
os.setf(std::ios_base::right, std::ios_base::adjustfield);
os << boost::io::quoted("xy");
BOOST_TEST(os.good());
BOOST_TEST(os.width() == 0);
BOOST_TEST(os.str() == "\"xy\"");
}
{
std::wostringstream os;
os.width(2);
os.fill(L'.');
os.setf(std::ios_base::right, std::ios_base::adjustfield);
os << boost::io::quoted(L"xy");
BOOST_TEST(os.good());
BOOST_TEST(os.width() == 0);
BOOST_TEST(os.str() == L"\"xy\"");
}
{
std::ostringstream os;
os.width(6);
os.fill('.');
os.setf(std::ios_base::left, std::ios_base::adjustfield);
os << boost::io::quoted("xy");
BOOST_TEST(os.good());
BOOST_TEST(os.width() == 0);
BOOST_TEST(os.str() == "\"xy\"..");
}
{
std::wostringstream os;
os.width(6);
os.fill(L'.');
os.setf(std::ios_base::left, std::ios_base::adjustfield);
os << boost::io::quoted(L"xy");
BOOST_TEST(os.good());
BOOST_TEST(os.width() == 0);
BOOST_TEST(os.str() == L"\"xy\"..");
}
{
std::ostringstream os;
os.width(6);
os.fill('.');
os.setf(std::ios_base::right, std::ios_base::adjustfield);
os << boost::io::quoted("xy");
BOOST_TEST(os.good());
BOOST_TEST(os.width() == 0);
BOOST_TEST(os.str() == "..\"xy\"");
}
{
std::wostringstream os;
os.width(6);
os.fill(L'.');
os.setf(std::ios_base::right, std::ios_base::adjustfield);
os << boost::io::quoted(L"xy");
BOOST_TEST(os.good());
BOOST_TEST(os.width() == 0);
BOOST_TEST(os.str() == L"..\"xy\"");
}
{
std::ostringstream os;
os.width(14);
os.fill('.');
os.setf(std::ios_base::left, std::ios_base::adjustfield);
os << boost::io::quoted("xy");
BOOST_TEST(os.good());
BOOST_TEST(os.width() == 0);
BOOST_TEST(os.str() == "\"xy\"..........");
}
{
std::wostringstream os;
os.width(14);
os.fill(L'.');
os.setf(std::ios_base::left, std::ios_base::adjustfield);
os << boost::io::quoted(L"xy");
BOOST_TEST(os.good());
BOOST_TEST(os.width() == 0);
BOOST_TEST(os.str() == L"\"xy\"..........");
}
{
std::ostringstream os;
os.width(14);
os.fill('.');
os.setf(std::ios_base::right, std::ios_base::adjustfield);
os << boost::io::quoted("xy");
BOOST_TEST(os.good());
BOOST_TEST(os.width() == 0);
BOOST_TEST(os.str() == "..........\"xy\"");
}
{
std::wostringstream os;
os.width(14);
os.fill(L'.');
os.setf(std::ios_base::right, std::ios_base::adjustfield);
os << boost::io::quoted(L"xy");
BOOST_TEST(os.good());
BOOST_TEST(os.width() == 0);
BOOST_TEST(os.str() == L"..........\"xy\"");
}
return boost::report_errors();
}