brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 282df3e Raw
78 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// UNSUPPORTED: c++03, c++11, c++14, c++1710 11// <chrono>12 13// duration14 15// template<class Rep1, class Period1, class Rep2, class Period2>16//     requires ThreeWayComparable<typename CT::rep>17//   constexpr auto operator<=>(const duration<Rep1, Period1>& lhs,18//                              const duration<Rep2, Period2>& rhs);19 20#include <cassert>21#include <chrono>22#include <ratio>23 24#include "test_comparisons.h"25 26constexpr bool test() {27  {28    std::chrono::seconds s1(3);29    std::chrono::seconds s2(3);30    assert((s1 <=> s2) == std::strong_ordering::equal);31    assert(testOrder(s1, s2, std::strong_ordering::equal));32  }33  {34    std::chrono::seconds s1(3);35    std::chrono::seconds s2(4);36    assert((s1 <=> s2) == std::strong_ordering::less);37    assert(testOrder(s1, s2, std::strong_ordering::less));38  }39  {40    std::chrono::milliseconds s1(3);41    std::chrono::microseconds s2(3000);42    assert((s1 <=> s2) == std::strong_ordering::equal);43    assert(testOrder(s1, s2, std::strong_ordering::equal));44  }45  {46    std::chrono::milliseconds s1(3);47    std::chrono::microseconds s2(4000);48    assert((s1 <=> s2) == std::strong_ordering::less);49    assert(testOrder(s1, s2, std::strong_ordering::less));50  }51  {52    std::chrono::duration<int, std::ratio<2, 3>> s1(9);53    std::chrono::duration<int, std::ratio<3, 5>> s2(10);54    assert((s1 <=> s2) == std::strong_ordering::equal);55    assert(testOrder(s1, s2, std::strong_ordering::equal));56  }57  {58    std::chrono::duration<int, std::ratio<2, 3>> s1(10);59    std::chrono::duration<int, std::ratio<3, 5>> s2(9);60    assert((s1 <=> s2) == std::strong_ordering::greater);61    assert(testOrder(s1, s2, std::strong_ordering::greater));62  }63  {64    std::chrono::duration<int, std::ratio<2, 3>> s1(9);65    std::chrono::duration<double, std::ratio<3, 5>> s2(10.1);66    assert((s1 <=> s2) == std::strong_ordering::less);67    assert(testOrder(s1, s2, std::strong_ordering::less));68  }69 70  return true;71}72 73int main(int, char**) {74  assert(test());75  static_assert(test());76  return 0;77}78