1//===----------------------------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9// UNSUPPORTED: no-localization
10
11// <random>
12
13// template <class UIntType, size_t w, size_t n, size_t m, size_t r,
14// UIntType a, size_t u, UIntType d, size_t s,
15// UIntType b, size_t t, UIntType c, size_t l, UIntType f>
16// class mersenne_twister_engine;
17
18// template <class charT, class traits,
19// class UIntType, size_t w, size_t n, size_t m, size_t r,
20// UIntType a, size_t u, UIntType d, size_t s,
21// UIntType b, size_t t, UIntType c, size_t l, UIntType f>
22// basic_ostream<charT, traits>&
23// operator<<(basic_ostream<charT, traits>& os,
24// const mersenne_twister_engine<UIntType, w, n, m, r, a, u, d, s, b, t, c, l, f>& x);
25//
26// template <class charT, class traits,
27// class UIntType, size_t w, size_t n, size_t m, size_t r,
28// UIntType a, size_t u, UIntType d, size_t s,
29// UIntType b, size_t t, UIntType c, size_t l, UIntType f>
30// basic_ostream<charT, traits>&
31// operator>>(basic_istream<charT, traits>& is,
32// mersenne_twister_engine<UIntType, w, n, m, r, a, u, d, s, b, t, c, l, f>& x);
33
34#include <random>
35#include <sstream>
36#include <cassert>
37
38#include "test_macros.h"
39
40void
41test1()
42{
43 typedef std::mt19937 E;
44 E e1;
45 e1.discard(z: 100);
46 std::ostringstream os;
47 os << e1;
48 std::istringstream is(os.str());
49 E e2;
50 is >> e2;
51 assert(e1 == e2);
52}
53
54void
55test2()
56{
57 typedef std::mt19937_64 E;
58 E e1;
59 e1.discard(z: 100);
60 std::ostringstream os;
61 os << e1;
62 std::istringstream is(os.str());
63 E e2;
64 is >> e2;
65 assert(e1 == e2);
66}
67
68int main(int, char**)
69{
70 test1();
71 test2();
72
73 return 0;
74}
75

source code of libcxx/test/std/numerics/rand/rand.eng/rand.eng.mers/io.pass.cpp