summaryrefslogtreecommitdiffstats
path: root/tests/test_rand.cpp
blob: eac94ec57e41ffc51152d2059052c6dc26e2e50b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <algorithm>
#include <frozen/random.h>
#include <iostream>
#include <random>

#include "bench.hpp"
#include "catch.hpp"

TEST_CASE("linear_congruential_engine", "[random]") {

  frozen::linear_congruential_engine<std::uint32_t, 48271u, 0, 0x7fffffff> dist0;
  std::linear_congruential_engine<std::uint32_t, 48271u, 0, 0x7fffffff> rdist0;
  REQUIRE(dist0.min() == rdist0.min());
  REQUIRE(dist0.max() == rdist0.max());
  REQUIRE(dist0() == rdist0());
  REQUIRE(dist0() == rdist0());
  REQUIRE(dist0() == rdist0());

  auto next0 = dist0();
  (void) next0;
  dist0.discard(3);
  rdist0.discard(4);
  REQUIRE(dist0() == rdist0());

  frozen::linear_congruential_engine<std::uint32_t, 48271u, 0, 0x7fffffff> odist0;
  std::linear_congruential_engine<std::uint32_t, 48271u, 0, 0x7fffffff> ordist0;
  REQUIRE(rdist0() != ordist0());
  REQUIRE(dist0() != odist0());
  REQUIRE(!(dist0() == odist0()));


  frozen::minstd_rand dist1;
  (void)dist1;
  frozen::minstd_rand dist2;
  (void)dist2;
  frozen::linear_congruential_engine<std::size_t, 3, 3, 0> dist3;
  (void)dist3;

}