1f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant//===----------------------------------------------------------------------===//
2f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant//
3f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant//                     The LLVM Compiler Infrastructure
4f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant//
5f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant// Source Licenses. See LICENSE.TXT for details.
7f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant//
8f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant//===----------------------------------------------------------------------===//
9f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant
10f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant// <chrono>
11f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant
12f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant#include <chrono>
13f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant#include <type_traits>
14f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant#include <cassert>
15f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant
16f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnantint main()
17f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant{
18f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant#if _LIBCPP_STD_VER > 11
19f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    using namespace std::literals::chrono_literals;
20f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant
21f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant//    Make sure the types are right
22f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    static_assert ( std::is_same<decltype( 3h   ), std::chrono::hours>::value, "" );
23f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    static_assert ( std::is_same<decltype( 3min ), std::chrono::minutes>::value, "" );
24f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    static_assert ( std::is_same<decltype( 3s   ), std::chrono::seconds>::value, "" );
25f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    static_assert ( std::is_same<decltype( 3ms  ), std::chrono::milliseconds>::value, "" );
26f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    static_assert ( std::is_same<decltype( 3us  ), std::chrono::microseconds>::value, "" );
27f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    static_assert ( std::is_same<decltype( 3ns  ), std::chrono::nanoseconds>::value, "" );
28f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant
29f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    std::chrono::hours h = 4h;
30f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    assert ( h == std::chrono::hours(4));
31f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    auto h2 = 4.0h;
32f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    assert ( h == h2 );
33f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant
34f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    std::chrono::minutes min = 36min;
35f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    assert ( min == std::chrono::minutes(36));
36f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    auto min2 = 36.0min;
37f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    assert ( min == min2 );
38f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant
39f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    std::chrono::seconds s = 24s;
40f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    assert ( s == std::chrono::seconds(24));
41f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    auto s2 = 24.0s;
42f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    assert ( s == s2 );
43f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant
44f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    std::chrono::milliseconds ms = 247ms;
45f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    assert ( ms == std::chrono::milliseconds(247));
46f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    auto ms2 = 247.0ms;
47f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    assert ( ms == ms2 );
48f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant
49f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    std::chrono::microseconds us = 867us;
50f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    assert ( us == std::chrono::microseconds(867));
51f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    auto us2 = 867.0us;
52f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    assert ( us == us2 );
53f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant
54f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    std::chrono::nanoseconds ns = 645ns;
55f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    assert ( ns == std::chrono::nanoseconds(645));
56f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    auto ns2 = 645.ns;
57f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant    assert ( ns == ns2 );
58f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant#endif
59f68b46f0c90f3205749eeaae8ebb2dd9ec3138f9Howard Hinnant}
60