1// { dg-options "-std=gnu++11" }
2// { dg-require-cstdint "" }
3
4// Copyright (C) 2011-2015 Free Software Foundation, Inc.
5//
6// This file is part of the GNU ISO C++ Library.  This library is free
7// software; you can redistribute it and/or modify it under the
8// terms of the GNU General Public License as published by the
9// Free Software Foundation; either version 3, or (at your option)
10// any later version.
11
12// This library is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15// GNU General Public License for more details.
16
17// You should have received a copy of the GNU General Public License along
18// with this library; see the file COPYING3.  If not see
19// <http://www.gnu.org/licenses/>.
20
21// 20.11.5 Class template duration [time.duration]
22
23#include <chrono>
24#include <testsuite_hooks.h>
25
26// DR 2020
27void test01()
28{
29  bool test __attribute__((unused)) = true;
30  using namespace std::chrono;
31
32  constexpr duration<int> d0(12);
33  constexpr duration<int> d1(3);
34  constexpr int i = 5;
35
36  constexpr auto d2 = d0 + d1;
37  VERIFY( d2.count() == 15 );
38
39  constexpr auto d3 = d0 - d1;
40  VERIFY( d3.count() == 9 );
41
42  constexpr auto d4 = d0 * i;
43  VERIFY( d4.count() == 60 );
44
45  constexpr auto d5 = i * d0;
46  VERIFY( d5.count() == 60 );
47
48  constexpr auto d6 = d0 % i;
49  VERIFY( d6.count() == 2 );
50
51  constexpr auto j = d0 % d1;
52  VERIFY( j.count() == 0 );
53
54  constexpr auto d7 = d0 / i;
55  VERIFY( d7.count() == 2 );
56
57  constexpr auto k = d0 / d1;
58  VERIFY( k == 4 );
59}
60
61int
62main()
63{
64  test01();
65  return 0;
66}
67