summaryrefslogtreecommitdiffstats
path: root/tests/013/chksum.tl
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2023-07-08 21:30:00 -0700
committerKaz Kylheku <kaz@kylheku.com>2023-07-08 21:30:00 -0700
commitfd14278a312a4c880af0a26d3a4ac0c0759d19c1 (patch)
tree71a1b24dd99fad23547259caab54670842248a04 /tests/013/chksum.tl
parent1807b7d221cf815aad9576fdab2172915cb86e06 (diff)
downloadtxr-fd14278a312a4c880af0a26d3a4ac0c0759d19c1.tar.gz
txr-fd14278a312a4c880af0a26d3a4ac0c0759d19c1.tar.bz2
txr-fd14278a312a4c880af0a26d3a4ac0c0759d19c1.zip
Tests for checksum functions.
* tests/013/chksum.tl: New file.
Diffstat (limited to 'tests/013/chksum.tl')
-rw-r--r--tests/013/chksum.tl40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/013/chksum.tl b/tests/013/chksum.tl
new file mode 100644
index 00000000..6c9e7add
--- /dev/null
+++ b/tests/013/chksum.tl
@@ -0,0 +1,40 @@
+(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)))