deprecated_test.cpp 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. // deprecated_test.cpp ---------------------------------------------------------------//
  2. // Copyright Beman Dawes 2014, 2015
  3. // Distributed under the Boost Software License, Version 1.0.
  4. // See http://www.boost.org/LICENSE_1_0.txt
  5. // See library home page at http://www.boost.org/libs/endian
  6. //--------------------------------------------------------------------------------------//
  7. #include <boost/endian/detail/disable_warnings.hpp>
  8. #define BOOST_ENDIAN_DEPRECATED_NAMES
  9. #include <boost/endian/endian.hpp>
  10. #include <boost/detail/lightweight_main.hpp>
  11. #include <boost/core/lightweight_test.hpp>
  12. #include <boost/cstdint.hpp>
  13. #include <iostream>
  14. #include <sstream>
  15. using namespace boost::endian;
  16. using std::cout;
  17. using std::endl;
  18. namespace
  19. {
  20. // check_size ----------------------------------------------------------------------//
  21. void check_size()
  22. {
  23. BOOST_TEST_EQ(sizeof(big8_t), 1);
  24. BOOST_TEST_EQ(sizeof(big16_t), 2);
  25. BOOST_TEST_EQ(sizeof(big24_t), 3);
  26. BOOST_TEST_EQ(sizeof(big32_t), 4);
  27. BOOST_TEST_EQ(sizeof(big40_t), 5);
  28. BOOST_TEST_EQ(sizeof(big48_t), 6);
  29. BOOST_TEST_EQ(sizeof(big56_t), 7);
  30. BOOST_TEST_EQ(sizeof(big64_t), 8);
  31. BOOST_TEST_EQ(sizeof(ubig8_t), 1);
  32. BOOST_TEST_EQ(sizeof(ubig16_t), 2);
  33. BOOST_TEST_EQ(sizeof(ubig24_t), 3);
  34. BOOST_TEST_EQ(sizeof(ubig32_t), 4);
  35. BOOST_TEST_EQ(sizeof(ubig40_t), 5);
  36. BOOST_TEST_EQ(sizeof(ubig48_t), 6);
  37. BOOST_TEST_EQ(sizeof(ubig56_t), 7);
  38. BOOST_TEST_EQ(sizeof(ubig64_t), 8);
  39. BOOST_TEST_EQ(sizeof(little8_t), 1);
  40. BOOST_TEST_EQ(sizeof(little16_t), 2);
  41. BOOST_TEST_EQ(sizeof(little24_t), 3);
  42. BOOST_TEST_EQ(sizeof(little32_t), 4);
  43. BOOST_TEST_EQ(sizeof(little40_t), 5);
  44. BOOST_TEST_EQ(sizeof(little48_t), 6);
  45. BOOST_TEST_EQ(sizeof(little56_t), 7);
  46. BOOST_TEST_EQ(sizeof(little64_t), 8);
  47. BOOST_TEST_EQ(sizeof(ulittle8_t), 1);
  48. BOOST_TEST_EQ(sizeof(ulittle16_t), 2);
  49. BOOST_TEST_EQ(sizeof(ulittle24_t), 3);
  50. BOOST_TEST_EQ(sizeof(ulittle32_t), 4);
  51. BOOST_TEST_EQ(sizeof(ulittle40_t), 5);
  52. BOOST_TEST_EQ(sizeof(ulittle48_t), 6);
  53. BOOST_TEST_EQ(sizeof(ulittle56_t), 7);
  54. BOOST_TEST_EQ(sizeof(ulittle64_t), 8);
  55. BOOST_TEST_EQ(sizeof(native8_t), 1);
  56. BOOST_TEST_EQ(sizeof(native16_t), 2);
  57. BOOST_TEST_EQ(sizeof(native24_t), 3);
  58. BOOST_TEST_EQ(sizeof(native32_t), 4);
  59. BOOST_TEST_EQ(sizeof(native40_t), 5);
  60. BOOST_TEST_EQ(sizeof(native48_t), 6);
  61. BOOST_TEST_EQ(sizeof(native56_t), 7);
  62. BOOST_TEST_EQ(sizeof(native64_t), 8);
  63. BOOST_TEST_EQ(sizeof(unative8_t), 1);
  64. BOOST_TEST_EQ(sizeof(unative16_t), 2);
  65. BOOST_TEST_EQ(sizeof(unative24_t), 3);
  66. BOOST_TEST_EQ(sizeof(unative32_t), 4);
  67. BOOST_TEST_EQ(sizeof(unative40_t), 5);
  68. BOOST_TEST_EQ(sizeof(unative48_t), 6);
  69. BOOST_TEST_EQ(sizeof(unative56_t), 7);
  70. BOOST_TEST_EQ(sizeof(unative64_t), 8);
  71. BOOST_TEST_EQ(sizeof(aligned_big16_t), 2);
  72. BOOST_TEST_EQ(sizeof(aligned_big32_t), 4);
  73. BOOST_TEST_EQ(sizeof(aligned_big64_t), 8);
  74. BOOST_TEST_EQ(sizeof(aligned_ubig16_t), 2);
  75. BOOST_TEST_EQ(sizeof(aligned_ubig32_t), 4);
  76. BOOST_TEST_EQ(sizeof(aligned_ubig64_t), 8);
  77. BOOST_TEST_EQ(sizeof(aligned_little16_t), 2);
  78. BOOST_TEST_EQ(sizeof(aligned_little32_t), 4);
  79. BOOST_TEST_EQ(sizeof(aligned_little64_t), 8);
  80. BOOST_TEST_EQ(sizeof(aligned_ulittle16_t), 2);
  81. BOOST_TEST_EQ(sizeof(aligned_ulittle32_t), 4);
  82. BOOST_TEST_EQ(sizeof(aligned_ulittle64_t), 8);
  83. # ifndef BOOST_NO_CXX11_TEMPLATE_ALIASES
  84. BOOST_TEST_EQ(sizeof(endian<endianness::big, int_least16_t, 16>), 2);
  85. BOOST_TEST_EQ(sizeof(endian<endianness::big,
  86. int_least16_t, 16, alignment::unaligned>), 2);
  87. # endif
  88. } // check_size
  89. // test_inserter_and_extractor -----------------------------------------------------//
  90. void test_inserter_and_extractor()
  91. {
  92. std::cout << "test inserter and extractor..." << std::endl;
  93. ubig64_t bu64(0x010203040506070ULL);
  94. ulittle64_t lu64(0x010203040506070ULL);
  95. boost::uint64_t x;
  96. std::stringstream ss;
  97. ss << bu64;
  98. ss >> x;
  99. BOOST_TEST_EQ(x, 0x010203040506070ULL);
  100. ss.clear();
  101. ss << lu64;
  102. ss >> x;
  103. BOOST_TEST_EQ(x, 0x010203040506070ULL);
  104. ss.clear();
  105. ss << 0x010203040506070ULL;
  106. ubig64_t bu64z(0);
  107. ss >> bu64z;
  108. BOOST_TEST_EQ(bu64z, bu64);
  109. ss.clear();
  110. ss << 0x010203040506070ULL;
  111. ulittle64_t lu64z(0);
  112. ss >> lu64z;
  113. BOOST_TEST_EQ(lu64z, lu64);
  114. std::cout << "test inserter and extractor complete" << std::endl;
  115. }
  116. } // unnamed namespace
  117. //--------------------------------------------------------------------------------------//
  118. int cpp_main(int, char *[])
  119. {
  120. cout << "byte swap intrinsics: " BOOST_ENDIAN_INTRINSIC_MSG << endl;
  121. cout << " construct big endian aligned" << endl;
  122. big32_t x(1122334455);
  123. cout << " assign to buffer from built-in integer" << endl;
  124. x = 1234567890;
  125. cout << " operator==(buffer.value(), built-in)" << endl;
  126. bool b1(x == 1234567890);
  127. BOOST_TEST(b1);
  128. cout << " construct little endian unaligned" << endl;
  129. little32_t x2(1122334455);
  130. cout << " assign to buffer from built-in integer" << endl;
  131. x2 = 1234567890;
  132. cout << " operator==(buffer.value(), built-in)" << endl;
  133. bool b2(x2 == 1234567890);
  134. BOOST_TEST(b2);
  135. check_size();
  136. test_inserter_and_extractor();
  137. cout << " done" << endl;
  138. return ::boost::report_errors();
  139. }
  140. #include <boost/endian/detail/disable_warnings_pop.hpp>