op_mod_duration.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
1e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton//===----------------------------------------------------------------------===//
2e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton//
3e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton//                     The LLVM Compiler Infrastructure
4e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton//
5e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// This file is distributed under the University of Illinois Open Source
6e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// License. See LICENSE.TXT for details.
7e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton//
8e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton//===----------------------------------------------------------------------===//
9e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton
10d891f9b872103235cfd2ed452c6f14a4394d9b3aDaniel Malea// <chrono>
11d891f9b872103235cfd2ed452c6f14a4394d9b3aDaniel Malea
12e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// duration
13e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton
14e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton// template <class Rep1, class Period1, class Rep2, class Period2>
153600d497832c398ffafcba1935389125e15683a3Stephen Wilson//   typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2>>::type
163600d497832c398ffafcba1935389125e15683a3Stephen Wilson//   operator%(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
173600d497832c398ffafcba1935389125e15683a3Stephen Wilson
18e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton#include <chrono>
19e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton#include <cassert>
20e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton
21e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Claytonint main()
2248a202dd3ac1fb4ee6709074448dc4d221fa020cGreg Clayton{
23e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton    {
24e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton    std::chrono::nanoseconds ns1(15);
2549ce8969d3154e1560106cfe530444c09410f217Greg Clayton    std::chrono::nanoseconds ns2(6);
263600d497832c398ffafcba1935389125e15683a3Stephen Wilson    std::chrono::nanoseconds r = ns1 % ns2;
27e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton    assert(r.count() == 3);
28e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton    }
29e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton    {
303600d497832c398ffafcba1935389125e15683a3Stephen Wilson    std::chrono::microseconds us1(15);
31e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton    std::chrono::nanoseconds ns2(28);
32e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton    std::chrono::nanoseconds r = us1 % ns2;
33e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton    assert(r.count() == 20);
34e4b9c1fb338ee1ada72e6a3c198afb342d68c5c1Greg Clayton    }
353600d497832c398ffafcba1935389125e15683a3Stephen Wilson    {
3648a202dd3ac1fb4ee6709074448dc4d221fa020cGreg Clayton    std::chrono::duration<int, std::ratio<3, 5> > s1(6);
3748a202dd3ac1fb4ee6709074448dc4d221fa020cGreg Clayton    std::chrono::duration<int, std::ratio<2, 3> > s2(3);
383600d497832c398ffafcba1935389125e15683a3Stephen Wilson    std::chrono::duration<int, std::ratio<1, 15> > r = s1 % s2;
39b1db658333cdebca31a128be95e926d80c3c7796Greg Clayton    assert(r.count() == 24);
403600d497832c398ffafcba1935389125e15683a3Stephen Wilson    }
41b1db658333cdebca31a128be95e926d80c3c7796Greg Clayton}
42b1db658333cdebca31a128be95e926d80c3c7796Greg Clayton