-rw-r--r-- 1402 cryptattacktester-20231020/randomtest.cpp raw
#include <cassert>
#include <algorithm>
#include "random.h"
using namespace std;
static void test_repeatable()
{
  for (bigint seed = -32;seed <= 32;++seed) {
    random_seed(seed);
    bool b = random_bool();
    int i = random_int();
    unsigned int ui = random_uint();
    long l = random_long();
    unsigned long ul = random_ulong();
    long long ll = random_longlong();
    unsigned long long ull = random_ulonglong();
    bigint below = random_bigint_below(31415);
    cout << "repeatable " << seed << ' ' << b << ' ' << i << ' ' << ui << ' ' << l << ' ' << ul << ' ' << ll << ' ' << ull << ' ' << below << '\n';
    random_seed(seed);
    assert(b == random_bool());
    assert(i == random_int());
    assert(ui == random_uint());
    assert(l == random_long());
    assert(ul == random_ulong());
    assert(ll == random_longlong());
    assert(ull == random_ulonglong());
    assert(below == random_bigint_below(31415));
  }
}
static bool cmp(unsigned long long &a,unsigned long long &b)
{
  return a < b;
}
static void test_distinct()
{
  random_seed();
  unsigned long long x[1000];
  for (bigint loop = 0;loop < 1000;++loop)
    x[loop] = random_ulonglong();
  sort(x,x+1000,cmp);
  for (bigint loop = 1;loop < 1000;++loop)
    assert(x[loop-1] < x[loop]);
  cout << "distinct " << x[0] << ' ' << x[999] << '\n';
}
int main()
{
  test_repeatable();
  test_distinct();
  return 0;
}