Add light test of modify-in-place interface

This commit is contained in:
Beman
2013-05-12 11:31:32 -04:00
parent ec3aacd132
commit 6c00b65eb4
2 changed files with 28 additions and 4 deletions

View File

@@ -100,11 +100,10 @@ namespace endian
// reverse unless native endianness is big
template <class T>
inline void big_endianx(T& x) BOOST_NOEXCEPT;
inline void big_endian(T& x) BOOST_NOEXCEPT;
// Effects: none if native endian order is big, otherwise reverse(x)
// reverse unless native endianness is little
// possible names: reverse_unless_native_little, reverse_bytes_unless_little, reverse_unless_little
template <class T>
inline void little_endian(T& x) BOOST_NOEXCEPT;
// Effects: none if native endian order is little, otherwise reverse(x);
@@ -383,7 +382,7 @@ namespace endian
// reverse unless native endianness is big
template <class T>
inline void big_endianx(T& x) BOOST_NOEXCEPT
inline void big_endian(T& x) BOOST_NOEXCEPT
{
# ifndef BOOST_BIG_ENDIAN
reverse(x);

View File

@@ -170,7 +170,32 @@ namespace
BOOST_TEST_EQ((be::convert_value(little, be::order::little, be::order::native)), native);
BOOST_TEST_EQ((be::convert_value(native, be::order::native, be::order::big)), big);
BOOST_TEST_EQ((be::convert_value(native, be::order::native, be::order::little)), native);
}
// light test of modify-in-place functions
T x;
x = big; be::reverse(x); BOOST_TEST_EQ(x, little);
x = big; be::convert<be::order::big, be::order::little>(x); BOOST_TEST_EQ(x, little);
x = big; be::convert(x, be::order::big, be::order::little); BOOST_TEST_EQ(x, little);
# ifdef BOOST_BIG_ENDIAN
x = native; be::big_endian(x); BOOST_TEST_EQ(x, big);
x = big; be::big_endian(x); BOOST_TEST_EQ(x, big);
x = little; be::big_endian(x); BOOST_TEST_EQ(x, little);
x = native; be::little_endian(x); BOOST_TEST_EQ(x, little);
x = big; be::little_endian(x); BOOST_TEST_EQ(x, little);
x = little; be::little_endian(x); BOOST_TEST_EQ(x, big);
# else
x = native; be::big_endian(x); BOOST_TEST_EQ(x, big);
x = big; be::big_endian(x); BOOST_TEST_EQ(x, little);
x = little; be::big_endian(x); BOOST_TEST_EQ(x, big);
x = native; be::little_endian(x); BOOST_TEST_EQ(x, little);
x = big; be::little_endian(x); BOOST_TEST_EQ(x, big);
x = little; be::little_endian(x); BOOST_TEST_EQ(x, little);
# endif
}
} // unnamed namespace
int cpp_main(int, char * [])