70 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// UNSUPPORTED: no-filesystem, no-localization, no-tzdb11 12// XFAIL: libcpp-has-no-experimental-tzdb13// XFAIL: availability-tzdb-missing14 15// <chrono>16 17// template<class Duration1, class Duration2, class TimeZonePtr>18// bool operator==(const zoned_time<Duration1, TimeZonePtr>& x,19// const zoned_time<Duration2, TimeZonePtr>& y);20//21// Note operator!= is generated by the compiler22 23#include <chrono>24 25#include "test_comparisons.h"26 27int main(int, char**) {28 {29 std::chrono::zoned_time zt;30 assert(testEquality(zt, zt, true));31 }32 {33 std::chrono::zoned_time lhs{"UTC"};34 std::chrono::zoned_time rhs{"Europe/Berlin"};35 assert(testEquality(lhs, rhs, false));36 }37 {38 std::chrono::zoned_time lhs{"UTC", std::chrono::sys_time<std::chrono::seconds>{std::chrono::seconds{123}}};39 40 assert(testEquality(lhs,41 std::chrono::zoned_time{42 std::chrono::sys_time<std::chrono::nanoseconds>{std::chrono::nanoseconds{123'000'000'000}}},43 true));44 assert(testEquality(lhs,45 std::chrono::zoned_time{46 std::chrono::sys_time<std::chrono::nanoseconds>{std::chrono::nanoseconds{123'000'000'001}}},47 false));48 49 assert(testEquality(lhs,50 std::chrono::zoned_time{51 std::chrono::sys_time<std::chrono::microseconds>{std::chrono::microseconds{123'000'000}}},52 true));53 assert(testEquality(lhs,54 std::chrono::zoned_time{55 std::chrono::sys_time<std::chrono::microseconds>{std::chrono::microseconds{123'000'001}}},56 false));57 58 assert(testEquality(59 lhs,60 std::chrono::zoned_time{std::chrono::sys_time<std::chrono::milliseconds>{std::chrono::milliseconds{123'000}}},61 true));62 assert(testEquality(63 lhs,64 std::chrono::zoned_time{std::chrono::sys_time<std::chrono::milliseconds>{std::chrono::milliseconds{123'001}}},65 false));66 }67 68 return 0;69}70