CHECK_AND_ASSERT_MES(fabs(mean-estimated_mean)<allowed_deviation*estimated_mean,false,"Mean deviation is more than "<<allowed_deviation);
CHECK_AND_ASSERT_MES(fabs(variance-estimated_variance)<allowed_deviation*estimated_variance,false,"Variance deviation is more than "<<allowed_deviation);
returntrue;
}
boolrandom_evenness_test()
{
boolr=true;
r=r&check_random_evenness(5,10000);
r=r&check_random_evenness(11,11000);
r=r&check_random_evenness(37,50000);
r=r&check_random_evenness(97,97000);
r=r&check_random_evenness(113,113000);
returnr;
}
boolget_random_text_test()
{
random_state_test_restorerrstr;// to restore random generator state afterwards
random_state_test_restorer::reset_random(0);// to make the test determinictic
TIME_MEASURE_START(time_total);
size_tmax_len=16*1024;
size_ttrials_count=500;
for(size_ti=0;i<trials_count;++i)
{
size_tsz=crypto::rand<size_t>()%max_len;
std::stringr=get_random_text(sz);
CHECK_AND_ASSERT_MES(r.size()==sz,false,"get_random_text("<<sz<<") returned "<<r.size()<<" bytes:"<<ENDL<<r);
}
TIME_MEASURE_FINISH(time_total);
LOG_PRINT_L0("Random text test: trials: "<<trials_count<<", total time: "<<time_total<<" ms.");