| // { dg-options "-g -O0 -std=gnu++2a" } |
| // { dg-do run { target c++2a } } |
| // { dg-additional-options "-DTEST_ZONED_TIME" { target tzdb } } |
| |
| // Copyright The GNU Toolchain Authors. |
| // |
| // This file is part of the GNU ISO C++ Library. This library is free |
| // software; you can redistribute it and/or modify it under the |
| // terms of the GNU General Public License as published by the |
| // Free Software Foundation; either version 3, or (at your option) |
| // any later version. |
| |
| // This library is distributed in the hope that it will be useful, |
| // but WITHOUT ANY WARRANTY; without even the implied warranty of |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| // GNU General Public License for more details. |
| |
| // You should have received a copy of the GNU General Public License along |
| // with this library; see the file COPYING3. If not see |
| // <http://www.gnu.org/licenses/>. |
| |
| #include <chrono> |
| #include <iostream> |
| |
| int |
| main() |
| { |
| using namespace std::chrono; |
| |
| seconds just_a_sec(1); |
| // { dg-final { note-test just_a_sec {std::chrono::duration = { 1s }} } } |
| microseconds just_a_moment(5001); |
| // { dg-final { note-test just_a_moment {std::chrono::duration = { 5001us }} } } |
| duration<float, std::ratio<22, 7>> pie(2.72f); |
| // { dg-final { note-test pie {std::chrono::duration = { 2.72[22/7]s }} } } |
| |
| sys_seconds half_past_epoch(1800s); |
| // { dg-final { note-test half_past_epoch {std::chrono::sys_time = { 1800s [1970-01-01 00:30:00] }} } } |
| utc_time utc(467664h); |
| // { dg-final { note-test utc {std::chrono::utc_time = { 467664h }} } } |
| |
| #if _GLIBCXX_USE_CXX11_ABI && defined TEST_ZONED_TIME |
| zoned_time<milliseconds> zt("Europe/London", half_past_epoch); |
| // { dg-final { note-test zt {std::chrono::zoned_time = { "Europe/London" 1800000ms [1970-01-01 00:30:00] }} { target cxx11_abi } } } |
| #endif |
| |
| [[maybe_unused]] day ninth(9); |
| // { dg-final { note-test ninth {9} } } |
| [[maybe_unused]] month may = May; |
| // { dg-final { note-test may {May} } } |
| auto twentytwentythree = 2023y; |
| // { dg-final { note-test twentytwentythree {2023y} } } |
| [[maybe_unused]] weekday tues = Tuesday; |
| // { dg-final { note-test tues {Tuesday} } } |
| [[maybe_unused]] weekday_indexed second_tues = Tuesday[2]; |
| // { dg-final { note-test second_tues {Tuesday[2]} } } |
| [[maybe_unused]] weekday_last last_tues = Tuesday[last]; |
| // { dg-final { note-test last_tues {Tuesday[last]} } } |
| [[maybe_unused]] month_day midsummer = June/21; |
| // { dg-final { note-test midsummer {June/21} } } |
| [[maybe_unused]] month_day_last end_jan = January/last; |
| // { dg-final { note-test end_jan {January/last} } } |
| [[maybe_unused]] month_weekday handsel = January/Monday[1]; |
| // { dg-final { note-test handsel {January/Monday[1]} } } |
| [[maybe_unused]] month_weekday_last reek = July/Sunday[last]; |
| // { dg-final { note-test reek {July/Sunday[last]} } } |
| [[maybe_unused]] year_month feb_2023 = 2023y/February; |
| // { dg-final { note-test feb_2023 {2023y/February} } } |
| [[maybe_unused]] year_month_day barbican = September/17/1997y; |
| // { dg-final { note-test barbican {1997y/September/17} } } |
| [[maybe_unused]] year_month_day_last party_like = 1999y/December/last; |
| // { dg-final { note-test party_like {1999y/December/last} } } |
| [[maybe_unused]] year_month_weekday easter = 2023y/April/Sunday[2]; |
| // { dg-final { note-test easter {2023y/April/Sunday[2]} } } |
| [[maybe_unused]] year_month_weekday_last donnerstag = 2017y/July/Thursday[last]; |
| // { dg-final { note-test donnerstag {2017y/July/Thursday[last]} } } |
| |
| [[maybe_unused]] month nam(13); |
| // { dg-final { note-test nam {13 is not a valid month} } } |
| [[maybe_unused]] month nam0(0); |
| // { dg-final { note-test nam0 {0 is not a valid month} } } |
| [[maybe_unused]] weekday nawd(8); |
| // { dg-final { note-test nawd {8 is not a valid weekday} } } |
| // |
| hh_mm_ss<seconds> hms(4h + 3min + 2s); |
| // { dg-final { note-test hms {04:03:02} } } |
| |
| hh_mm_ss<nanoseconds> hms_nano(-14h - 13min - 12s - 11ns); |
| // { dg-final { note-test hms_nano {-14:13:12.000000011} } } |
| |
| std::cout << "\n"; |
| return 0; // Mark SPOT |
| } |
| |
| // { dg-final { gdb-test SPOT } } |