Coverage report: /home/ellis/comp/core/ffi/zstd/tests.lisp
Kind | Covered | All | % |
expression | 0 | 11 | 0.0 |
branch | 0 | 0 | nil |
Key
Not instrumented
Conditionalized out
Executed
Not executed
Both branches taken
One branch taken
Neither branch taken
1
;;; zstd/tests.lisp --- Zstd FFI tests
6
(defpackage :zstd/tests
7
(:use :cl :std :rt :zstd :sb-alien :log))
9
(in-package :zstd/tests)
18
(is (= (car x) (cdr x))))
19
`((,+zstd-clevel-default+ . ,(zstd::zstd-defaultclevel))
20
(,+zstd-magicnumber+ . -47205080)
21
(,+zstd-magic-skippable-start+ . 407710288)
22
(,+zstd-blocksizelog-max+ . 17)
23
(,+zstd-blocksize-max+ . 131072)
24
(,+zstd-contentsize-unknown+ . -1)
25
(,+zstd-contentsize-error+ . -2)
26
(,+zstd-max-input-size+ . -71777214294589696)
27
(,+zstd-version-number+ . ,(zstd::zstd-versionnumber))
28
(,+zstd-magic-dictionary+ . -332356553))))
31
"Test the Zstd Simple API functions - ZSTD-COMPRESS and ZSTD-DECOMPRESS."
32
(let ((dst-capacity 8096)
34
(with-alien ((dst (* (unsigned 8)) (make-alien (unsigned 8) dst-capacity))
35
(src (* (unsigned 8)) (make-alien (unsigned 8) src-size))
36
(clevel int (zstd-defaultclevel)))
37
(let ((csize (zstd-compress dst dst-capacity src src-size clevel)))
38
(is (zerop (zstd-iserror (zstd-decompress src src-size dst csize)))))))
39
(let* ((octets (make-octets 4000 :initial-element (random 255)))
40
(compressed (zstd:zstdc octets)))
41
(is (equalp (zstdd compressed) octets))))
44
"Test the Zstd v1 Streaming API."
45
(is (< (zstd-cstreaminsize) (zstd-cstreamoutsize)))
46
(with-alien ((in (* zstd-inbuffer) (zstd::allocate-zstd-inbuffer))
47
(out (* zstd-outbuffer) (zstd::allocate-zstd-outbuffer)))
48
(let* ((str "this is a test yad ayd ay aya dayd ayd ada"))
49
(setf (zstd::zstd-inbuffer-src in) (make-alien-string str)
50
(zstd::zstd-inbuffer-size in) (zstd-cstreaminsize))
51
(with-zstd-cstream (cs)
52
(is (zerop (zstd::zstd-initcstream cs (zstd-defaultclevel))))
53
(with-zstd-dstream (ds)
54
;; (setf (zstd::zstd-outbuffer-dst out) (make-alien-string str))
55
(setf (zstd::zstd-outbuffer-size out) (zstd-cstreamoutsize))
56
(zstd-compressstream cs out in)
57
(zstd::zstd-flushstream cs out)
58
(zstd::zstd-endstream cs out)
59
(zstd-decompressstream ds out in)
61
(cast (zstd::zstd-inbuffer-src in)
65
(deftest streaming2 ()
66
"Test the Zstd v2 Streaming API."
67
(let ((test "test 1 2 3"))
68
(with-zstd-buffers (in out :src (make-alien-string test))
69
(with-zstd-streams (cs ds)
70
(zstd-compressstream2 cs out in 0)
71
(zstd-compressstream2 cs out in 1)
72
(is (zerop (zstd-iserror (zstd-compressstream2 cs out in 2))))
73
(zstd::zstd-flushstream cs out)
74
(is (zerop (zstd-iserror (zstd::zstd-endstream cs out))))
75
(zstd-decompressstream ds out in)
77
(cast (zstd::zstd-inbuffer-src in) c-string)
80
(deftest simple-dictionary ()
81
(let ((test "test 1 2 3"))
82
(with-alien ((dict (* t))
83
(dst (array (unsigned 8) 100)))
84
(with-zstd-buffers (in out :src (cast (make-alien-string test) (* t)) :dst (cast dst (* t)) :dst-size 100)
85
(is (= 100 (zstd::zstd-outbuffer-size out)))
86
(with-zstd-streams (cs ds)
90
(zstd::zstd-compress-usingdict
92
(zstd::zstd-outbuffer-dst out) (zstd::zstd-outbuffer-size out)
93
(zstd::zstd-inbuffer-src in) (zstd::zstd-inbuffer-size in)
94
dict (length test) (zstd-defaultclevel)))))
98
(zstd::zstd-decompress-usingdict
100
(zstd::zstd-outbuffer-dst out) (zstd::zstd-outbuffer-size out)
101
(zstd::zstd-inbuffer-src in) (zstd::zstd-inbuffer-size in)
102
dict (length test))))))))))
104
(deftest bulk-dictionary ()
105
(let ((test (make-array 4 :element-type '(unsigned-byte 8) :initial-contents #(1 2 3 4))))
106
(with-alien ((dict (* t))
107
(dst (array (unsigned 8) 100)))
108
(with-zstd-buffers (in out :src (octets-to-alien test) :dst (cast dst (* t)) :dst-size 100)
109
(with-zstd-streams (cs ds)
110
(with-zstd-cdict (cd :buffer test :size (length test))
111
(is (typep cd '(alien (* (struct zstd::zstd-cdict-s)))))
114
(zstd::zstd-compress-usingcdict cs (zstd::zstd-outbuffer-dst out) (zstd::zstd-outbuffer-size out)
115
(zstd::zstd-inbuffer-src in) (zstd::zstd-inbuffer-size in)
117
(with-zstd-ddict (dd :buffer test :size (length test))
118
(is (typep dd '(alien (* (struct zstd::zstd-ddict-s)))))
121
(zstd::zstd-decompress-usingddict
122
ds (zstd::zstd-outbuffer-dst out) (zstd::zstd-outbuffer-size out)
123
(zstd::zstd-inbuffer-src in) (zstd::zstd-inbuffer-size in) dd))))))))))