mirror of
https://github.com/boostorg/process.git
synced 2026-01-27 07:02:13 +00:00
fix move assignment operators for basic_[io]pstream
This commit is contained in:
@@ -340,8 +340,9 @@ public:
|
||||
basic_ipstream& operator=(basic_ipstream && lhs)
|
||||
{
|
||||
std::basic_istream<CharT, Traits>::operator=(std::move(lhs));
|
||||
_buf = std::move(lhs);
|
||||
_buf = std::move(lhs._buf);
|
||||
std::basic_istream<CharT, Traits>::rdbuf(&_buf);
|
||||
return *this;
|
||||
};
|
||||
///Move assignment of a pipe.
|
||||
basic_ipstream& operator=(pipe_type && p)
|
||||
@@ -448,8 +449,9 @@ public:
|
||||
basic_opstream& operator=(basic_opstream && lhs)
|
||||
{
|
||||
std::basic_ostream<CharT, Traits>::operator=(std::move(lhs));
|
||||
_buf = std::move(lhs);
|
||||
_buf = std::move(lhs._buf);
|
||||
std::basic_ostream<CharT, Traits>::rdbuf(&_buf);
|
||||
return *this;
|
||||
};
|
||||
|
||||
///Move assignment of a pipe.
|
||||
@@ -556,8 +558,9 @@ public:
|
||||
basic_pstream& operator=(basic_pstream && lhs)
|
||||
{
|
||||
std::basic_istream<CharT, Traits>::operator=(std::move(lhs));
|
||||
_buf = std::move(lhs);
|
||||
_buf = std::move(lhs._buf);
|
||||
std::basic_iostream<CharT, Traits>::rdbuf(&_buf);
|
||||
return *this;
|
||||
};
|
||||
///Move assignment of a pipe.
|
||||
basic_pstream& operator=(pipe_type && p)
|
||||
|
||||
106
test/pipe.cpp
106
test/pipe.cpp
@@ -102,6 +102,110 @@ BOOST_AUTO_TEST_CASE(stream, *boost::unit_test::timeout(2))
|
||||
BOOST_CHECK_EQUAL(i, j);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(stream_move, *boost::unit_test::timeout(2))
|
||||
{
|
||||
|
||||
bp::pipe pipe;
|
||||
|
||||
bp::pstream os(pipe);
|
||||
bp::ipstream is(pipe);
|
||||
|
||||
int i = 42, j = 0, k = 0;
|
||||
|
||||
os << i << std::endl;
|
||||
os << std::endl;
|
||||
is >> j;
|
||||
|
||||
BOOST_CHECK_EQUAL(i, j);
|
||||
|
||||
bp::pstream os2 = std::move(os);
|
||||
bp::ipstream is2 = std::move(is);
|
||||
os2 << i << std::endl;
|
||||
os2 << std::endl;
|
||||
is2 >> k;
|
||||
|
||||
BOOST_CHECK_EQUAL(i, k);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(ostream_move, *boost::unit_test::timeout(2))
|
||||
{
|
||||
|
||||
bp::pipe pipe;
|
||||
|
||||
bp::opstream os(pipe);
|
||||
bp::ipstream is(pipe);
|
||||
|
||||
int i = 42, j = 0, k = 0;
|
||||
|
||||
os << i << std::endl;
|
||||
os << std::endl;
|
||||
is >> j;
|
||||
|
||||
BOOST_CHECK_EQUAL(i, j);
|
||||
|
||||
bp::opstream os2 = std::move(os);
|
||||
bp::ipstream is2 = std::move(is);
|
||||
os2 << i << std::endl;
|
||||
os2 << std::endl;
|
||||
is2 >> k;
|
||||
|
||||
BOOST_CHECK_EQUAL(i, k);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(stream_move_assignment, *boost::unit_test::timeout(2))
|
||||
{
|
||||
|
||||
bp::pipe pipe;
|
||||
|
||||
bp::pstream os(pipe);
|
||||
bp::ipstream is(pipe);
|
||||
|
||||
int i = 42, j = 0, k = 0;
|
||||
|
||||
os << i << std::endl;
|
||||
os << std::endl;
|
||||
is >> j;
|
||||
|
||||
BOOST_CHECK_EQUAL(i, j);
|
||||
|
||||
bp::pstream os2;
|
||||
os2 = std::move(os);
|
||||
bp::ipstream is2;
|
||||
is2 = std::move(is);
|
||||
os2 << i << std::endl;
|
||||
os2 << std::endl;
|
||||
is2 >> k;
|
||||
|
||||
BOOST_CHECK_EQUAL(i, k);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(ostream_move_assignment, *boost::unit_test::timeout(2))
|
||||
{
|
||||
|
||||
bp::pipe pipe;
|
||||
|
||||
bp::opstream os(pipe);
|
||||
bp::ipstream is(pipe);
|
||||
|
||||
int i = 42, j = 0, k = 0;
|
||||
|
||||
os << i << std::endl;
|
||||
os << std::endl;
|
||||
is >> j;
|
||||
|
||||
BOOST_CHECK_EQUAL(i, j);
|
||||
|
||||
bp::opstream os2;
|
||||
os2 = std::move(os);
|
||||
bp::ipstream is2;
|
||||
is2 = std::move(is);
|
||||
os2 << i << std::endl;
|
||||
os2 << std::endl;
|
||||
is2 >> k;
|
||||
|
||||
BOOST_CHECK_EQUAL(i, k);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(stream_line, *boost::unit_test::timeout(2))
|
||||
{
|
||||
|
||||
@@ -268,4 +372,4 @@ BOOST_AUTO_TEST_CASE(stream_close_scope, *boost::unit_test::timeout(5))
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END();
|
||||
BOOST_AUTO_TEST_SUITE_END();
|
||||
|
||||
Reference in New Issue
Block a user