load_convenience_test.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // Copyright 2019 Peter Dimov
  2. //
  3. // Distributed under the Boost Software License, Version 1.0.
  4. // http://www.boost.org/LICENSE_1_0.txt
  5. #include <boost/endian/conversion.hpp>
  6. #include <boost/core/lightweight_test.hpp>
  7. #include <boost/config.hpp>
  8. #include <boost/cstdint.hpp>
  9. #include <cstddef>
  10. int main()
  11. {
  12. using namespace boost::endian;
  13. unsigned char v[] = { 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8 };
  14. // 16
  15. BOOST_TEST_EQ( load_little_s16( v ), -3343 );
  16. BOOST_TEST_EQ( load_little_u16( v ), 0xF2F1 );
  17. BOOST_TEST_EQ( load_big_s16( v ), -3598 );
  18. BOOST_TEST_EQ( load_big_u16( v ), 0xF1F2 );
  19. // 24
  20. BOOST_TEST_EQ( load_little_s24( v ), -789775 );
  21. BOOST_TEST_EQ( load_little_u24( v ), 0xF3F2F1 );
  22. BOOST_TEST_EQ( load_big_s24( v ), -920845 );
  23. BOOST_TEST_EQ( load_big_u24( v ), 0xF1F2F3 );
  24. // 32
  25. BOOST_TEST_EQ( load_little_s32( v ), 0xF4F3F2F1 );
  26. BOOST_TEST_EQ( load_little_u32( v ), 0xF4F3F2F1 );
  27. BOOST_TEST_EQ( load_big_s32( v ), 0xF1F2F3F4 );
  28. BOOST_TEST_EQ( load_big_u32( v ), 0xF1F2F3F4 );
  29. // 40
  30. BOOST_TEST_EQ( load_little_s40( v ), -43135012111 );
  31. BOOST_TEST_EQ( load_little_u40( v ), 0xF5F4F3F2F1 );
  32. BOOST_TEST_EQ( load_big_s40( v ), -60348435211 );
  33. BOOST_TEST_EQ( load_big_u40( v ), 0xF1F2F3F4F5 );
  34. // 48
  35. BOOST_TEST_EQ( load_little_s48( v ), -9938739662095 );
  36. BOOST_TEST_EQ( load_little_u48( v ), 0xF6F5F4F3F2F1 );
  37. BOOST_TEST_EQ( load_big_s48( v ), -15449199413770 );
  38. BOOST_TEST_EQ( load_big_u48( v ), 0xF1F2F3F4F5F6 );
  39. // 56
  40. BOOST_TEST_EQ( load_little_s56( v ), -2261738553347343 );
  41. BOOST_TEST_EQ( load_little_u56( v ), 0xF7F6F5F4F3F2F1 );
  42. BOOST_TEST_EQ( load_big_s56( v ), -3954995049924873 );
  43. BOOST_TEST_EQ( load_big_u56( v ), 0xF1F2F3F4F5F6F7 );
  44. // 64
  45. BOOST_TEST_EQ( load_little_s64( v ), 0xF8F7F6F5F4F3F2F1 );
  46. BOOST_TEST_EQ( load_little_u64( v ), 0xF8F7F6F5F4F3F2F1 );
  47. BOOST_TEST_EQ( load_big_s64( v ), 0xF1F2F3F4F5F6F7F8 );
  48. BOOST_TEST_EQ( load_big_u64( v ), 0xF1F2F3F4F5F6F7F8 );
  49. return boost::report_errors();
  50. }