1b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper//===----------------------------------------------------------------------===//
21ccdfb683ad6c7e59793136c3a657ddf131cafd1Mark Wielaard//
3de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard//                     The LLVM Compiler Infrastructure
4b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper//
5b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper// This file is dual licensed under the MIT and the University of Illinois Open
6de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard// Source Licenses. See LICENSE.TXT for details.
7de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard//
8361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper//===----------------------------------------------------------------------===//
9de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard
10de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard// <random>
11de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard
12de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard// template<class Engine, size_t w, class UIntType>
13de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard// class independent_bits_engine
14de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard
15de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard// independent_bits_engine(const independent_bits_engine&);
16de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard
17de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard#include <random>
18de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard#include <cassert>
19de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard
20de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaardvoid
21de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaardtest1()
22361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper{
23361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper    typedef std::independent_bits_engine<std::ranlux24, 32, unsigned> E;
24361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper    E e1;
25361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper    e1();
26de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard    E e2 = e1;
27de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard    assert(e1 == e2);
28de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard    assert(e1() == e2());
29b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    E::result_type k = e1();
30b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    assert(e1 != e2);
31b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    assert(e2() == k);
32b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    assert(e1 == e2);
33b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper}
34b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
35b08d5a8fb42f4586d756068065186b5af7e48daUlrich Dreppervoid
36b08d5a8fb42f4586d756068065186b5af7e48daUlrich Dreppertest2()
37b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper{
38b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    typedef std::independent_bits_engine<std::ranlux48, 64, unsigned long long> E;
39b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    E e1;
40b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    e1();
41b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    E e2 = e1;
421ccdfb683ad6c7e59793136c3a657ddf131cafd1Mark Wielaard    assert(e1 == e2);
43b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    assert(e1() == e2());
44b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    E::result_type k = e1();
45b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    assert(e1 != e2);
46b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    assert(e2() == k);
47b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    assert(e1 == e2);
48b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper}
49b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper
50b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperint main()
51b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper{
52b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    test1();
53b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper    test2();
54b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper}
55b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper