static_log2_test.cpp 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. // Boost static_log2.hpp test program --------------------------------------//
  2. // (C) Copyright Daryle Walker 2001.
  3. // Distributed under the Boost Software License, Version 1.0. (See
  4. // accompanying file LICENSE_1_0.txt or copy at
  5. // http://www.boost.org/LICENSE_1_0.txt)
  6. // See http://www.boost.org for most recent version including documentation.
  7. // Revision History
  8. // 01 Oct 2001 Initial version (Daryle Walker)
  9. #include <boost/detail/lightweight_test.hpp> // for main
  10. #include <boost/cstdlib.hpp> // for boost::exit_success
  11. #include <boost/integer/static_log2.hpp> // for boost::static_log2
  12. #include <iostream> // for std::cout (std::endl indirectly)
  13. // Macros to compact code
  14. #define PRIVATE_LB_TEST( v, e ) BOOST_TEST( ::boost::static_log2<v>::value == e )
  15. #define PRIVATE_PRINT_LB( v ) ::std::cout << "boost::static_log2<" << (v) \
  16. << "> = " << ::boost::static_log2< (v) >::value << '.' << ::std::endl
  17. // Control to check for a compile-time error
  18. #ifndef CONTROL_LB_0_TEST
  19. #define PRIVATE_LB_0_TEST
  20. #else
  21. #define PRIVATE_LB_0_TEST PRIVATE_PRINT_LB( 0 )
  22. #endif
  23. // Main testing function
  24. int
  25. main
  26. (
  27. int , // "argc" is unused
  28. char * [] // "argv" is unused
  29. )
  30. {
  31. std::cout << "Doing tests on static_log2." << std::endl;
  32. PRIVATE_LB_0_TEST;
  33. PRIVATE_LB_TEST( 1, 0 );
  34. PRIVATE_LB_TEST( 2, 1 );
  35. PRIVATE_LB_TEST( 3, 1 );
  36. PRIVATE_LB_TEST( 4, 2 );
  37. PRIVATE_LB_TEST( 5, 2 );
  38. PRIVATE_LB_TEST( 6, 2 );
  39. PRIVATE_LB_TEST( 7, 2 );
  40. PRIVATE_LB_TEST( 8, 3 );
  41. PRIVATE_LB_TEST( 9, 3 );
  42. PRIVATE_LB_TEST( 10, 3 );
  43. PRIVATE_LB_TEST( 11, 3 );
  44. PRIVATE_LB_TEST( 12, 3 );
  45. PRIVATE_LB_TEST( 13, 3 );
  46. PRIVATE_LB_TEST( 14, 3 );
  47. PRIVATE_LB_TEST( 15, 3 );
  48. PRIVATE_LB_TEST( 16, 4 );
  49. PRIVATE_LB_TEST( 17, 4 );
  50. PRIVATE_LB_TEST( 18, 4 );
  51. PRIVATE_LB_TEST( 19, 4 );
  52. PRIVATE_LB_TEST( 20, 4 );
  53. PRIVATE_LB_TEST( 21, 4 );
  54. PRIVATE_LB_TEST( 22, 4 );
  55. PRIVATE_LB_TEST( 23, 4 );
  56. PRIVATE_LB_TEST( 24, 4 );
  57. PRIVATE_LB_TEST( 25, 4 );
  58. PRIVATE_LB_TEST( 26, 4 );
  59. PRIVATE_LB_TEST( 27, 4 );
  60. PRIVATE_LB_TEST( 28, 4 );
  61. PRIVATE_LB_TEST( 29, 4 );
  62. PRIVATE_LB_TEST( 30, 4 );
  63. PRIVATE_LB_TEST( 31, 4 );
  64. PRIVATE_LB_TEST( 32, 5 );
  65. PRIVATE_LB_TEST( 33, 5 );
  66. PRIVATE_LB_TEST( 34, 5 );
  67. PRIVATE_LB_TEST( 35, 5 );
  68. PRIVATE_LB_TEST( 36, 5 );
  69. PRIVATE_LB_TEST( 37, 5 );
  70. PRIVATE_LB_TEST( 38, 5 );
  71. PRIVATE_LB_TEST( 39, 5 );
  72. PRIVATE_LB_TEST( 40, 5 );
  73. PRIVATE_LB_TEST( 63, 5 );
  74. PRIVATE_LB_TEST( 64, 6 );
  75. PRIVATE_LB_TEST( 65, 6 );
  76. PRIVATE_LB_TEST( 127, 6 );
  77. PRIVATE_LB_TEST( 128, 7 );
  78. PRIVATE_LB_TEST( 129, 7 );
  79. PRIVATE_LB_TEST( 255, 7 );
  80. PRIVATE_LB_TEST( 256, 8 );
  81. PRIVATE_LB_TEST( 257, 8 );
  82. PRIVATE_LB_TEST( 511, 8 );
  83. PRIVATE_LB_TEST( 512, 9 );
  84. PRIVATE_LB_TEST( 513, 9 );
  85. PRIVATE_LB_TEST( 1023, 9 );
  86. PRIVATE_LB_TEST( 1024, 10 );
  87. PRIVATE_LB_TEST( 1025, 10 );
  88. PRIVATE_LB_TEST( 2047, 10 );
  89. PRIVATE_LB_TEST( 2048, 11 );
  90. PRIVATE_LB_TEST( 2049, 11 );
  91. PRIVATE_LB_TEST( 4095, 11 );
  92. PRIVATE_LB_TEST( 4096, 12 );
  93. PRIVATE_LB_TEST( 4097, 12 );
  94. PRIVATE_LB_TEST( 8191, 12 );
  95. PRIVATE_LB_TEST( 8192, 13 );
  96. PRIVATE_LB_TEST( 8193, 13 );
  97. PRIVATE_LB_TEST( 16383, 13 );
  98. PRIVATE_LB_TEST( 16384, 14 );
  99. PRIVATE_LB_TEST( 16385, 14 );
  100. PRIVATE_LB_TEST( 32767, 14 );
  101. PRIVATE_LB_TEST( 32768, 15 );
  102. PRIVATE_LB_TEST( 32769, 15 );
  103. PRIVATE_LB_TEST( 65535, 15 );
  104. PRIVATE_LB_TEST( 65536, 16 );
  105. PRIVATE_LB_TEST( 65537, 16 );
  106. return boost::report_errors();
  107. }