forked from boostorg/endian
git-svn-id: http://svn.boost.org/svn/boost/sandbox/endian@72089 b8fc166d-592f-0410-95f2-cb63ce0dd405
74 lines
2.2 KiB
C++
74 lines
2.2 KiB
C++
// endian_flip_test.cpp --------------------------------------------------------------//
|
|
|
|
// Copyright Beman Dawes 2010
|
|
|
|
// Distributed under the Boost Software License, Version 1.0.
|
|
// See http://www.boost.org/LICENSE_1_0.txt
|
|
|
|
//--------------------------------------------------------------------------------------//
|
|
|
|
#include <boost/integer/endian_flip.hpp>
|
|
#include <boost/detail/lightweight_test.hpp>
|
|
|
|
namespace bi = boost::integer;
|
|
|
|
int main()
|
|
{
|
|
boost::int64_t i64 = 0x0102030405060708;
|
|
bi::endian_flip(i64);
|
|
BOOST_TEST_EQ(i64, 0x0807060504030201);
|
|
bi::endian_flip(i64);
|
|
BOOST_TEST_EQ(i64, 0x0102030405060708);
|
|
|
|
i64 = 0xfefdfcfbfaf9f8f7;
|
|
bi::endian_flip(i64);
|
|
BOOST_TEST_EQ(i64, static_cast<boost::int64_t>(0xf7f8f9fafbfcfdfe));
|
|
bi::endian_flip(i64);
|
|
BOOST_TEST_EQ(i64, static_cast<boost::int64_t>(0xfefdfcfbfaf9f8f7));
|
|
|
|
boost::int32_t i32 = 0x01020304;
|
|
bi::endian_flip(i32);
|
|
BOOST_TEST_EQ(i32, 0x04030201);
|
|
bi::endian_flip(i32);
|
|
BOOST_TEST_EQ(i32, 0x01020304);
|
|
|
|
i32 = 0xfefdfcfb;
|
|
bi::endian_flip(i32);
|
|
BOOST_TEST_EQ(i32, static_cast<boost::int32_t>(0xfbfcfdfe));
|
|
bi::endian_flip(i32);
|
|
BOOST_TEST_EQ(i32, static_cast<boost::int32_t>(0xfefdfcfb));
|
|
|
|
boost::int16_t i16 = 0x0102;
|
|
bi::endian_flip(i16);
|
|
BOOST_TEST_EQ(i16, 0x0201);
|
|
bi::endian_flip(i16);
|
|
BOOST_TEST_EQ(i16, 0x0102);
|
|
|
|
i16 = static_cast<boost::int16_t>(static_cast<boost::uint16_t>(0xfefd));
|
|
bi::endian_flip(i16);
|
|
BOOST_TEST_EQ(i16, static_cast<boost::int16_t>(static_cast<boost::uint16_t>(0xfdfe)));
|
|
bi::endian_flip(i16);
|
|
BOOST_TEST_EQ(i16, static_cast<boost::int16_t>(static_cast<boost::uint16_t>(0xfefd)));
|
|
|
|
boost::uint64_t ui64 = 0x0102030405060708;
|
|
bi::endian_flip(ui64);
|
|
BOOST_TEST_EQ(ui64, static_cast<boost::uint64_t>(0x0807060504030201));
|
|
bi::endian_flip(ui64);
|
|
BOOST_TEST_EQ(ui64, static_cast<boost::uint64_t>(0x0102030405060708));
|
|
|
|
boost::uint32_t ui32 = 0x01020304;
|
|
bi::endian_flip(ui32);
|
|
BOOST_TEST_EQ(ui32, static_cast<boost::uint32_t>(0x04030201));
|
|
bi::endian_flip(ui32);
|
|
BOOST_TEST_EQ(ui32, static_cast<boost::uint32_t>(0x01020304));
|
|
|
|
boost::uint16_t ui16 = 0x0102;
|
|
bi::endian_flip(ui16);
|
|
BOOST_TEST_EQ(ui16, 0x0201);
|
|
bi::endian_flip(ui16);
|
|
BOOST_TEST_EQ(ui16, 0x0102);
|
|
|
|
|
|
return ::boost::report_errors();
|
|
}
|