ChronoTest.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*
  2. * Copyright 2017-present Facebook, Inc.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #include <folly/Chrono.h>
  17. #include <folly/portability/GTest.h>
  18. using namespace std::chrono;
  19. using namespace folly::chrono;
  20. namespace {
  21. class ChronoTest : public testing::Test {};
  22. } // namespace
  23. TEST_F(ChronoTest, ceil_duration) {
  24. EXPECT_EQ(seconds(7), ceil<seconds>(seconds(7)));
  25. EXPECT_EQ(seconds(7), ceil<seconds>(milliseconds(7000)));
  26. EXPECT_EQ(seconds(7), ceil<seconds>(milliseconds(6200)));
  27. }
  28. TEST_F(ChronoTest, ceil_time_point) {
  29. auto const point = steady_clock::time_point{};
  30. EXPECT_EQ(point + seconds(7), ceil<seconds>(point + seconds(7)));
  31. EXPECT_EQ(point + seconds(7), ceil<seconds>(point + milliseconds(7000)));
  32. EXPECT_EQ(point + seconds(7), ceil<seconds>(point + milliseconds(6200)));
  33. }
  34. TEST_F(ChronoTest, floor_duration) {
  35. EXPECT_EQ(seconds(7), floor<seconds>(seconds(7)));
  36. EXPECT_EQ(seconds(7), floor<seconds>(milliseconds(7000)));
  37. EXPECT_EQ(seconds(7), floor<seconds>(milliseconds(7800)));
  38. }
  39. TEST_F(ChronoTest, floor_time_point) {
  40. auto const point = steady_clock::time_point{};
  41. EXPECT_EQ(point + seconds(7), floor<seconds>(point + seconds(7)));
  42. EXPECT_EQ(point + seconds(7), floor<seconds>(point + milliseconds(7000)));
  43. EXPECT_EQ(point + seconds(7), floor<seconds>(point + milliseconds(7800)));
  44. }
  45. TEST_F(ChronoTest, round_duration) {
  46. EXPECT_EQ(seconds(7), round<seconds>(seconds(7)));
  47. EXPECT_EQ(seconds(6), round<seconds>(milliseconds(6200)));
  48. EXPECT_EQ(seconds(6), round<seconds>(milliseconds(6500)));
  49. EXPECT_EQ(seconds(7), round<seconds>(milliseconds(6800)));
  50. EXPECT_EQ(seconds(7), round<seconds>(milliseconds(7000)));
  51. EXPECT_EQ(seconds(7), round<seconds>(milliseconds(7200)));
  52. EXPECT_EQ(seconds(8), round<seconds>(milliseconds(7500)));
  53. EXPECT_EQ(seconds(8), round<seconds>(milliseconds(7800)));
  54. }
  55. TEST_F(ChronoTest, round_time_point) {
  56. auto const point = steady_clock::time_point{};
  57. EXPECT_EQ(point + seconds(7), round<seconds>(point + seconds(7)));
  58. EXPECT_EQ(point + seconds(6), round<seconds>(point + milliseconds(6200)));
  59. EXPECT_EQ(point + seconds(6), round<seconds>(point + milliseconds(6500)));
  60. EXPECT_EQ(point + seconds(7), round<seconds>(point + milliseconds(6800)));
  61. EXPECT_EQ(point + seconds(7), round<seconds>(point + milliseconds(7000)));
  62. EXPECT_EQ(point + seconds(7), round<seconds>(point + milliseconds(7200)));
  63. EXPECT_EQ(point + seconds(8), round<seconds>(point + milliseconds(7500)));
  64. EXPECT_EQ(point + seconds(8), round<seconds>(point + milliseconds(7800)));
  65. }