158 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <chrono>10 11// duration12 13// template <class Rep1, class Period1, class Rep2, class Period2>14// constexpr15// bool16// operator< (const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);17 18// template <class Rep1, class Period1, class Rep2, class Period2>19// constexpr20// bool21// operator> (const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);22 23// template <class Rep1, class Period1, class Rep2, class Period2>24// constexpr25// bool26// operator<=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);27 28// template <class Rep1, class Period1, class Rep2, class Period2>29// constexpr30// bool31// operator>=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);32 33#include <chrono>34#include <cassert>35#include <ratio>36 37#include "test_macros.h"38 39int main(int, char**)40{41 {42 std::chrono::seconds s1(3);43 std::chrono::seconds s2(3);44 assert(!(s1 < s2));45 assert(!(s1 > s2));46 assert( (s1 <= s2));47 assert( (s1 >= s2));48 }49 {50 std::chrono::seconds s1(3);51 std::chrono::seconds s2(4);52 assert( (s1 < s2));53 assert(!(s1 > s2));54 assert( (s1 <= s2));55 assert(!(s1 >= s2));56 }57 {58 std::chrono::milliseconds s1(3);59 std::chrono::microseconds s2(3000);60 assert(!(s1 < s2));61 assert(!(s1 > s2));62 assert( (s1 <= s2));63 assert( (s1 >= s2));64 }65 {66 std::chrono::milliseconds s1(3);67 std::chrono::microseconds s2(4000);68 assert( (s1 < s2));69 assert(!(s1 > s2));70 assert( (s1 <= s2));71 assert(!(s1 >= s2));72 }73 {74 std::chrono::duration<int, std::ratio<2, 3> > s1(9);75 std::chrono::duration<int, std::ratio<3, 5> > s2(10);76 assert(!(s1 < s2));77 assert(!(s1 > s2));78 assert( (s1 <= s2));79 assert( (s1 >= s2));80 }81 {82 std::chrono::duration<int, std::ratio<2, 3> > s1(10);83 std::chrono::duration<int, std::ratio<3, 5> > s2(9);84 assert(!(s1 < s2));85 assert( (s1 > s2));86 assert(!(s1 <= s2));87 assert( (s1 >= s2));88 }89 {90 std::chrono::duration<int, std::ratio<2, 3> > s1(9);91 std::chrono::duration<double, std::ratio<3, 5> > s2(10);92 assert(!(s1 < s2));93 assert(!(s1 > s2));94 assert( (s1 <= s2));95 assert( (s1 >= s2));96 }97#if TEST_STD_VER >= 1198 {99 constexpr std::chrono::seconds s1(3);100 constexpr std::chrono::seconds s2(3);101 static_assert(!(s1 < s2), "");102 static_assert(!(s1 > s2), "");103 static_assert( (s1 <= s2), "");104 static_assert( (s1 >= s2), "");105 }106 {107 constexpr std::chrono::seconds s1(3);108 constexpr std::chrono::seconds s2(4);109 static_assert( (s1 < s2), "");110 static_assert(!(s1 > s2), "");111 static_assert( (s1 <= s2), "");112 static_assert(!(s1 >= s2), "");113 }114 {115 constexpr std::chrono::milliseconds s1(3);116 constexpr std::chrono::microseconds s2(3000);117 static_assert(!(s1 < s2), "");118 static_assert(!(s1 > s2), "");119 static_assert( (s1 <= s2), "");120 static_assert( (s1 >= s2), "");121 }122 {123 constexpr std::chrono::milliseconds s1(3);124 constexpr std::chrono::microseconds s2(4000);125 static_assert( (s1 < s2), "");126 static_assert(!(s1 > s2), "");127 static_assert( (s1 <= s2), "");128 static_assert(!(s1 >= s2), "");129 }130 {131 constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(9);132 constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(10);133 static_assert(!(s1 < s2), "");134 static_assert(!(s1 > s2), "");135 static_assert( (s1 <= s2), "");136 static_assert( (s1 >= s2), "");137 }138 {139 constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(10);140 constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(9);141 static_assert(!(s1 < s2), "");142 static_assert( (s1 > s2), "");143 static_assert(!(s1 <= s2), "");144 static_assert( (s1 >= s2), "");145 }146 {147 constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(9);148 constexpr std::chrono::duration<double, std::ratio<3, 5> > s2(10);149 static_assert(!(s1 < s2), "");150 static_assert(!(s1 > s2), "");151 static_assert( (s1 <= s2), "");152 static_assert( (s1 >= s2), "");153 }154#endif155 156 return 0;157}158