(load "../common") (mtest (crc32 "") 0 (sha1 "") #b'da39a3ee 5e6b4b0d 3255bfef 95601890 afd80709' (sha256 "") #b'e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855' (md5 "") #b'd41d8cd9 8f00b204 e9800998 ecf8427e') (mtest (crc32 "abc") #x352441c2 (sha1 "abc") #b'a9993e36 4706816a ba3e2571 7850c26c 9cd0d89d' (sha256 "abc") #b'ba7816bf 8f01cfea 414140de 5dae2223 b00361a3 96177a9c b410ff61 f20015ad' (md5 "abc") #b'90015098 3cd24fb0 d6963f7d 28e17f72') (defvarl algs (list [list sha1 sha1-begin sha1-hash sha1-end sha1-stream] [list sha256 sha256-begin sha256-hash sha256-end sha256-stream] [list md5 md5-begin md5-hash md5-end md5-stream])) (defvarl testbuf (make-buf 20000 #xAA)) (test (crc32 testbuf) #xf35324f0) (each-match ((@hashfn @begfn @updatefn @endfn @streamfn) algs) (let ((h0 [hashfn testbuf]) (h1 (let ((ctx [begfn])) (each ((piece (tuples 1 testbuf))) [updatefn ctx piece]) [endfn ctx])) (h2 (let ((ctx [begfn])) (each ((piece (tuples 100 testbuf))) [updatefn ctx piece]) [endfn ctx])) (h3 (let ((s (make-buf-stream testbuf))) [streamfn s]))) (mtest (equal h0 h1) t (equal h0 h2) t (equal h0 h3) t)))