/* This Source Code Form is subject to the terms of the Mozilla Public
* License , v . 2 . 0 . If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/*
* * File : rngseed . c
* * Description :
* * Test NSPR ' s Random Number Seed generator
* *
* * Initial test : Just make sure it outputs some data .
* *
* * . . . more ? . . . check some iterations to ensure it is random ( no dupes )
* * . . . more ? . . . histogram distribution of random numbers
*/
#include "plgetopt.h"
#include "nspr.h"
#include "prrng.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
* * Test harness infrastructure
*/
PRLogModuleInfo* lm;
PRLogModuleLevel msgLevel = PR_LOG_NONE;
PRIntn debug =
0 ;
PRUint32 failed_already =
0 ;
/* end Test harness infrastructure */
PRIntn optRandCount =
30 ;
char buf[
40 ];
PRSize bufSize =
sizeof (buf);
PRSize rSize;
PRIntn i;
/*
* * Emit help text for this test
*/
static void Help(
void ) {
printf(
"Template: Help(): display your help message(s) here" );
exit(
1 );
}
/* end Help() */
static void PrintRand(
void * buf, PRIntn size) {
PRUint32* rp = buf;
PRIntn i;
printf(
"%4.4d--\n" , size);
while (size >
0 ) {
switch (size) {
case 1 :
printf(
"%2.2X\n" , *(rp++));
size -=
4 ;
break ;
case 2 :
printf(
"%4.4X\n" , *(rp++));
size -=
4 ;
break ;
case 3 :
printf(
"%6.6X\n" , *(rp++));
size -=
4 ;
break ;
default :
while (size >=
4 ) {
PRIntn i =
3 ;
do {
printf(
"%8.8X " , *(rp++));
size -=
4 ;
}
while (i--);
i =
3 ;
printf(
"\n" );
}
break ;
}
/* end switch() */
}
/* end while() */
}
/* end PrintRand() */
int main(int argc, char** argv) {
{
/*
* * Get command line options
*/
PLOptStatus os;
PLOptState* opt = PL_CreateOptState(argc, argv,
"hdv" );
while (PL_OPT_EOL != (os = PL_GetNextOpt(opt))) {
if (PL_OPT_BAD == os) {
continue ;
}
switch (opt->option) {
case 'd' :
/* debug */
debug =
1 ;
msgLevel = PR_LOG_ERROR;
break ;
case 'v' :
/* verbose mode */
msgLevel = PR_LOG_DEBUG;
break ;
case 'h' :
/* help message */
Help();
break ;
default :
break ;
}
}
PL_DestroyOptState(opt);
}
lm = PR_NewLogModule(
"Test" );
/* Initialize logging */
for (i =
0 ; i < optRandCount; i++) {
memset(buf,
0 , bufSize);
rSize = PR_GetRandomNoise(buf, bufSize);
if (!rSize) {
fprintf(stderr,
"Not implemented\n" );
failed_already = PR_TRUE;
break ;
}
if (debug) {
PrintRand(buf, rSize);
}
}
if (debug) {
printf(
"%s\n" , (failed_already) ?
"FAIL" :
"PASS" );
}
return ((failed_already == PR_TRUE) ?
1 :
0 );
}
/* main() */
/* end template.c */
Messung V0.5 in Prozent C=94 H=90 G=91
¤ Dauer der Verarbeitung: 0.3 Sekunden
¤
*© Formatika GbR, Deutschland