home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / numana01.zip / SRC / TESTS / RANTEST.MOD < prev   
Text File  |  1996-08-15  |  4KB  |  108 lines

  1. MODULE RanTest;
  2.  
  3.         (********************************************************)
  4.         (*                                                      *)
  5.         (*          Test of random number generator             *)
  6.         (*                                                      *)
  7.         (*  Programmer:         P. Moylan                       *)
  8.         (*  Last edited:        15 August 1996                  *)
  9.         (*  Status:             OK                              *)
  10.         (*                                                      *)
  11.         (********************************************************)
  12.  
  13. IMPORT Rand, Random;
  14.  
  15. (*
  16. FROM Windows IMPORT
  17.     (* type *)  Window,
  18.     (* proc *)  OpenSimpleWindow, CloseWindow;
  19. *)
  20.  
  21. FROM MiscM2 IMPORT
  22.     (* proc *)  SelectWindow, WriteString, WriteLn, PressAnyKey,
  23.                 WriteCard, WriteReal;
  24.  
  25. TYPE RandProc = PROCEDURE(): REAL;
  26.  
  27. (************************************************************************)
  28. (*                              SPEED TEST                              *)
  29. (************************************************************************)
  30.  
  31. PROCEDURE SpeedTest (proc: RandProc;  TestSize: CARDINAL);
  32.  
  33.     (* Generates a lot of random numbers.  Relies on the keyboard user  *)
  34.     (* having a stopwatch, because the timing is not built into this    *)
  35.     (* module.                                                          *)
  36.  
  37.     VAR j: CARDINAL;  result: REAL;
  38.  
  39.     BEGIN
  40.         FOR j := 1 TO TestSize DO
  41.             result := proc();
  42.         END (*FOR*);
  43.     END SpeedTest;
  44.  
  45. (************************************************************************)
  46. (*                          PLAUSIBILITY TESTS                          *)
  47. (************************************************************************)
  48.  
  49. PROCEDURE DisplayNumbers;
  50.  
  51.     CONST TestSize = 100;
  52.  
  53.     VAR j: CARDINAL;  result: REAL;
  54.  
  55.     BEGIN
  56.         WriteString ("Start of plausibility test");  WriteLn;
  57.         FOR j := 1 TO TestSize DO
  58.             result := Rand.RANDOM();
  59.             WriteReal (result, 6);
  60.             IF j MOD 8 <> 0 THEN
  61.                 WriteString ("  ");
  62.             ELSE
  63.                 WriteLn;
  64.             END (*IF*);
  65.         END (*FOR*);
  66.         WriteLn;
  67.         WriteString ("End of plausibility test");  WriteLn;
  68.     END DisplayNumbers;
  69.  
  70. (************************************************************************)
  71.  
  72. PROCEDURE RunTheTests;
  73.  
  74.     CONST TestSize = 1000000;
  75.  
  76.     (*VAR w: Window;*)
  77.  
  78.     BEGIN
  79.         (*
  80.         OpenSimpleWindow (w, 0, 24, 0, 79);
  81.         SelectWindow (w);
  82.         *)
  83.         DisplayNumbers;
  84.         WriteString ("Starting speed test on Rand.RANDOM");  WriteLn;
  85.         PressAnyKey;
  86.         SpeedTest (Rand.RANDOM, TestSize);
  87.         WriteString ("End of speed test, ");
  88.         WriteCard (TestSize);  WriteString (" numbers generated");
  89.         WriteLn;
  90.         WriteString ("Starting speed test on Random.RANDOM");  WriteLn;
  91.         PressAnyKey;
  92.         SpeedTest (Random.RANDOM, TestSize);
  93.         WriteString ("End of speed test, ");
  94.         WriteCard (TestSize);  WriteString (" numbers generated");
  95.         WriteLn;
  96.         PressAnyKey;
  97.         (*  CloseWindow (w); *)
  98.     END RunTheTests;
  99.  
  100. (************************************************************************)
  101. (*                              MAIN PROGRAM                            *)
  102. (************************************************************************)
  103.  
  104. BEGIN
  105.     RunTheTests;
  106. END RanTest.
  107.  
  108.