]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/serialize.cc
random (rice_distribution<>::operator==): Change inline friend definition to non...
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / ext / random / simd_fast_mersenne_twister_engine / operators / serialize.cc
CommitLineData
1860430a
UD
1// { dg-options "-std=c++0x" }
2// { dg-require-cstdint "" }
3//
4// 2008-11-24 Edward M. Smith-Rowland <3dw4rd@verizon.net>
5// 2012-08-28 Ulrich Drepper <drepper@gmail.com>, adapted for SFMT
6//
7// Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
8//
9// This file is part of the GNU ISO C++ Library. This library is free
10// software; you can redistribute it and/or modify it under the
11// terms of the GNU General Public License as published by the
12// Free Software Foundation; either version 3, or (at your option)
13// any later version.
14//
15// This library is distributed in the hope that it will be useful,
16// but WITHOUT ANY WARRANTY; without even the implied warranty of
17// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18// GNU General Public License for more details.
19//
20// You should have received a copy of the GNU General Public License along
21// with this library; see the file COPYING3. If not see
22// <http://www.gnu.org/licenses/>.
23
24// 26.4.3.2 Class template mersenne_twister_engine [rand.eng.mers]
25// 26.4.2.2 Concept RandomNumberEngine [rand.concept.eng]
26
27#include <sstream>
28#include <ext/random>
29#include <testsuite_hooks.h>
30
31void
32test01()
33{
34 bool test __attribute__((unused)) = true;
35
36 std::stringstream str;
37 __gnu_cxx::sfmt19937 u, v;
38
39 u(); // advance
40 str << u;
41
42 VERIFY( !(u == v) );
43
44 str >> v;
45 VERIFY( u == v );
46 for (unsigned i = 0; i < 1000; ++i)
47 VERIFY( u() == v() );
48
49 str.clear();
50 str << v;
51
52 u();
53 u();
54 u();
55
56 str >> u;
57 VERIFY( u == v );
58 for (unsigned i = 0; i < 1000; ++i)
59 VERIFY( u() == v() );
60}
61
62int main()
63{
64 test01();
65 return 0;
66}