testint64_range.cpp 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /* Copyright (c) 2002,2003 CrystalClear Software, Inc.
  2. * Use, modification and distribution is subject to the
  3. * Boost Software License, Version 1.0. (See accompanying
  4. * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
  5. * Author: Jeff Garland
  6. */
  7. //#include "date_time/testfrmwk.hpp"
  8. #include <iostream>
  9. #include "boost/date_time/gregorian/gregorian.hpp"
  10. #include "boost/cstdint.hpp"
  11. int
  12. main()
  13. {
  14. #if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
  15. //skipping tests here due to lack of operator<< support in msvc6
  16. // TODO: this is a bit misleading: using STLport, this should work.
  17. std::cout << "Skipping tests on MSVC6" << std::endl;
  18. #else
  19. std::cout << "int64_t max: "
  20. << (std::numeric_limits<boost::int64_t>::max)()
  21. << std::endl;
  22. std::cout << "uint64_t max: "
  23. << (std::numeric_limits<boost::uint64_t>::max)()
  24. << std::endl;
  25. boost::int64_t seconds_per_day = 60*60*24;
  26. boost::int64_t microsec_per_sec = 1000000;
  27. boost::int64_t microsec_per_day = seconds_per_day*microsec_per_sec;
  28. std::cout << "microsec per day: "
  29. << microsec_per_day
  30. << std::endl;
  31. boost::uint64_t total_days = (std::numeric_limits<boost::int64_t>::max)() / microsec_per_day;
  32. std::cout << "Representable days: "
  33. << total_days
  34. << std::endl;
  35. boost::int64_t approx_years = total_days / 366;
  36. std::cout << "Approximate years: "
  37. << approx_years
  38. << std::endl;
  39. //getting day count
  40. // usec_count / (seconds_per_day*usec_per_sec);
  41. boost::int64_t day_count = 1000;
  42. boost::int64_t usec_count1000 = day_count*microsec_per_day + 999999;
  43. std::cout << "usec count at day 1000 + 999999: "
  44. << usec_count1000
  45. << std::endl;
  46. boost::int64_t day_count_calc = usec_count1000 / microsec_per_day;
  47. std::cout << "calc day count at day 1000: "
  48. << day_count_calc
  49. << std::endl;
  50. boost::int64_t remaining_usec_count = usec_count1000 % microsec_per_day;
  51. std::cout << "remaining usec count: "
  52. << remaining_usec_count
  53. << std::endl;
  54. boost::int32_t day_count3M = 3000000;
  55. boost::int64_t usec_count3M = day_count3M*microsec_per_day + 999999;
  56. std::cout << "usec count at day 3M + 999999: "
  57. << usec_count3M
  58. << std::endl;
  59. boost::int64_t day_count_calc3M = usec_count3M / microsec_per_day;
  60. std::cout << "calc day count at day 3M: "
  61. << day_count_calc3M
  62. << std::endl;
  63. boost::int64_t remaining_usec_count3M = usec_count3M % microsec_per_day;
  64. std::cout << "remaining usec count 3M: "
  65. << remaining_usec_count3M
  66. << std::endl;
  67. #endif
  68. // std::cout << "Days from: "
  69. // << to_simple_string(d1) << " to "
  70. // << to_simple_string(d2) << " = "
  71. // << day_count << std::endl;
  72. // printTestStats();
  73. return 0;
  74. };