1// { dg-options "-std=gnu++11" } 2// { dg-require-cstdint "" } 3 4// Copyright (C) 2008-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.8.3 Class template duration [time.duration] 22 23#include <chrono> 24#include <testsuite_hooks.h> 25 26// 20.8.3.3 duration arithmetic [time.duration.arithmetic] (unary member ops) 27void 28test01() 29{ 30 bool test __attribute__((unused)) = true; 31 using namespace std::chrono; 32 33 duration<int> d0(3); 34 duration<int> d1 = -d0; 35 VERIFY(d0.count() == 3); 36 VERIFY(d1.count() == -3); 37 38 duration<int> d2 = (+d0); 39 VERIFY(d2.count() == 3); 40 41 duration<int> d3(++d2); 42 VERIFY(d2.count() == 4); 43 VERIFY(d3.count() == 4); 44 45 duration<int> d4(d3++); 46 VERIFY(d3.count() == 5); 47 VERIFY(d4.count() == 4); 48 49 duration<int> d5(--d4); 50 VERIFY(d4.count() == 3); 51 VERIFY(d5.count() == 3); 52 53 duration<int> d6(d5--); 54 VERIFY(d5.count() == 2); 55 VERIFY(d6.count() == 3); 56} 57 58// 20.8.3.3 duration arithmetic [time.duration.arithmetic] (binary member ops) 59void 60test02() 61{ 62 bool test __attribute__((unused)) = true; 63 using namespace std::chrono; 64 65 duration<int> d7(3); 66 duration<int> d8(9); 67 d7 += d8; 68 VERIFY(d7.count() == 12); 69 VERIFY(d8.count() == 9); 70 71 duration<int> d9(3); 72 duration<int> d10(9); 73 d9 -= d10; 74 VERIFY(d9.count() == -6); 75 VERIFY(d10.count() == 9); 76 77 duration<int> d11(9); 78 int i = 3; 79 d11 *= i; 80 VERIFY(d11.count() == 27); 81 82 duration<int> d12(12); 83 d12 /= i; 84 VERIFY(d12.count() == 4); 85} 86 87int 88main() 89{ 90 test01(); 91 test02(); 92 return 0; 93} 94