Advertisement
Thomas_Cloostermans

test-code-disks

May 1st, 2016
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 1.92 KB | None | 0 0
  1. #lang r6rs
  2.  
  3. (import (rnrs base)
  4.         (rnrs io simple)
  5.         (rnrs lists (6))
  6.         (prefix (a-d disk disk) disk:)
  7.         (prefix (a-d disk file-system) fs:)
  8.         (prefix (a-d file sequential input-file) ifile:)
  9.         (prefix (a-d file sequential output-file) ofile:)
  10.         (only (racket base) random))
  11.  
  12.  
  13. ; Aanmaken disk.
  14. (define test_disk (disk:new "foo"))
  15.  
  16. ; Formatten disk.
  17. (fs:format! test_disk "bar")
  18.  
  19. ; Aanmaken file.
  20. (define tfile (ofile:new test_disk "foo-bar-test"))
  21.  
  22. ; Opvullen van file met random getallen.
  23. ; Loop bevat een index om te verifieren hoeveel er al geloopd is door
  24. ; de member test kan het zijn dat er meer of minder getallen in de lijst
  25. ; zitten en dus ook minder getallen naar de disk worden geschreven.
  26. ; De lijst wordt gebruikt om bij te houden hoeveel getallen er weggeschreven zijn.
  27. (let loop ((i 0)
  28.            (l '()))
  29.   (if (< i 10000)
  30.       (let ((temp (random 100000000)))
  31.         (if (not (member temp l))
  32.             (begin
  33.               (ofile:write! tfile temp)
  34.               (loop (+ i 1) (append l (cons temp '())))
  35.               )
  36.             (loop (+ 1 i) l))
  37.         )
  38.       )
  39.   )
  40.  
  41. ; Close van de file.
  42. (ofile:close-write! tfile)
  43.  
  44. ; Unmounten van de disk.
  45. ; Heeft niet veel zin bij een niet cached disk maar voor didactische redenen staat het er toch.
  46. (disk:unmount test_disk)
  47.  
  48. ; Aanmaken van vector die disks bevat.
  49. ; Kan gebruikt worden voor hoofdstuk 9 -> external sorting.
  50. (define aux-disks
  51.   (let loop ((index 0)
  52.              (v (make-vector 6)))
  53.     (cond ((< index 6)
  54.            (let ((name (string-append "aux_" (number->string index)))
  55.                  (d '()))
  56.              (set! d (disk:new name))
  57.              (fs:format! d name)
  58.              (vector-set! v index d)
  59.              )
  60.            (loop (+ index 1) v)
  61.            )
  62.           (else v))
  63.     )
  64.   )
  65.  
  66. (display 'done)
  67.  
  68. ; Code kan beter maar is snel geschreven.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement