changeset 657: | 937a6f354047 |
parent: | 4dd7b6320efc |
child: | 804b5ee20a46 |
author: | Richard Westhaver <ellis@rwest.io> |
date: | Wed, 18 Sep 2024 21:48:06 -0400 |
permissions: | -rw-r--r-- |
description: | zstd tests and macros |
394 | 1 | ;;; zstd/tests.lisp --- Zstd FFI tests |
2 | ||
3 | ;; |
|
4 | ||
5 | ;;; Code: |
|
60 | 6 | (defpackage :zstd/tests |
431
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
7 | (:use :cl :std :rt :zstd :sb-alien :log)) |
394 | 8 | |
60 | 9 | (in-package :zstd/tests) |
394 | 10 | |
60 | 11 | (defsuite :zstd) |
12 | (in-suite :zstd) |
|
394 | 13 | |
391 | 14 | (load-zstd) |
393
6b87df03cdaf
init cli/tools/cc.lisp for grovel experiments, add zstd tests
Richard Westhaver <ellis@rwest.io>
parents:
391
diff
changeset
|
15 | |
391 | 16 | (deftest sanity () |
17 | (mapc (lambda (x) |
|
18 | (is (= (car x) (cdr x)))) |
|
431
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
19 | `((,+zstd-clevel-default+ . ,(zstd::zstd-defaultclevel)) |
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
20 | (,+zstd-magicnumber+ . -47205080) |
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
21 | (,+zstd-magic-skippable-start+ . 407710288) |
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
22 | (,+zstd-blocksizelog-max+ . 17) |
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
23 | (,+zstd-blocksize-max+ . 131072) |
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
24 | (,+zstd-contentsize-unknown+ . -1) |
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
25 | (,+zstd-contentsize-error+ . -2) |
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
26 | (,+zstd-max-input-size+ . -71777214294589696) |
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
27 | (,+zstd-version-number+ . ,(zstd::zstd-versionnumber)) |
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
28 | (,+zstd-magic-dictionary+ . -332356553)))) |
393
6b87df03cdaf
init cli/tools/cc.lisp for grovel experiments, add zstd tests
Richard Westhaver <ellis@rwest.io>
parents:
391
diff
changeset
|
29 | |
6b87df03cdaf
init cli/tools/cc.lisp for grovel experiments, add zstd tests
Richard Westhaver <ellis@rwest.io>
parents:
391
diff
changeset
|
30 | (deftest simple () |
431
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
31 | "Test the Zstd Simple API functions - ZSTD-COMPRESS and ZSTD-DECOMPRESS." |
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
32 | (let ((dst-capacity 8096) |
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
33 | (src-size 4096)) |
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
34 | (with-alien ((dst (* (unsigned 8)) (make-alien (unsigned 8) dst-capacity)) |
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
35 | (src (* (unsigned 8)) (make-alien (unsigned 8) src-size)) |
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
36 | (clevel int (zstd-defaultclevel))) |
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
37 | (let ((csize (zstd-compress dst dst-capacity src src-size clevel))) |
470 | 38 | (is (zerop (zstd-iserror (zstd-decompress src src-size dst csize))))))) |
39 | (let* ((octets (make-array 4000 :initial-element (random 255))) |
|
40 | (compressed (zstd:zstdc octets))) |
|
41 | (is (equalp (zstdd compressed) octets)))) |
|
393
6b87df03cdaf
init cli/tools/cc.lisp for grovel experiments, add zstd tests
Richard Westhaver <ellis@rwest.io>
parents:
391
diff
changeset
|
42 | |
431
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
43 | (deftest streaming () |
437
83f8623a6ec3
std work, renamed :disabled in deftest to :skip
Richard Westhaver <ellis@rwest.io>
parents:
436
diff
changeset
|
44 | "Test the Zstd v1 Streaming API." |
431
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
45 | (is (< (zstd-cstreaminsize) (zstd-cstreamoutsize))) |
436
52608bbc3a7c
no more concat-source for std, zstd testing
Richard Westhaver <ellis@rwest.io>
parents:
435
diff
changeset
|
46 | (with-alien ((in (* zstd-inbuffer) (zstd::allocate-zstd-inbuffer)) |
507 | 47 | (out (* zstd-outbuffer) (zstd::allocate-zstd-outbuffer))) |
657 | 48 | (let* ((str "this is a test yad ayd ay aya dayd ayd ada")) |
436
52608bbc3a7c
no more concat-source for std, zstd testing
Richard Westhaver <ellis@rwest.io>
parents:
435
diff
changeset
|
49 | (setf (zstd::zstd-inbuffer-src in) (make-alien-string str) |
657 | 50 | (zstd::zstd-inbuffer-size in) (zstd-cstreaminsize)) |
507 | 51 | (with-zstd-cstream (cs) |
52 | (is (zerop (zstd::zstd-initcstream cs (zstd-defaultclevel)))) |
|
53 | (with-zstd-dstream (ds) |
|
436
52608bbc3a7c
no more concat-source for std, zstd testing
Richard Westhaver <ellis@rwest.io>
parents:
435
diff
changeset
|
54 | ;; (setf (zstd::zstd-outbuffer-dst out) (make-alien-string str)) |
657 | 55 | (setf (zstd::zstd-outbuffer-size out) (zstd-cstreamoutsize)) |
507 | 56 | (zstd-compressstream cs out in) |
57 | (zstd::zstd-flushstream cs out) |
|
58 | (zstd::zstd-endstream cs out) |
|
59 | (zstd-decompressstream ds out in) |
|
436
52608bbc3a7c
no more concat-source for std, zstd testing
Richard Westhaver <ellis@rwest.io>
parents:
435
diff
changeset
|
60 | (is (string-equal |
52608bbc3a7c
no more concat-source for std, zstd testing
Richard Westhaver <ellis@rwest.io>
parents:
435
diff
changeset
|
61 | (cast (zstd::zstd-inbuffer-src in) |
52608bbc3a7c
no more concat-source for std, zstd testing
Richard Westhaver <ellis@rwest.io>
parents:
435
diff
changeset
|
62 | c-string) |
52608bbc3a7c
no more concat-source for std, zstd testing
Richard Westhaver <ellis@rwest.io>
parents:
435
diff
changeset
|
63 | str))))))) |
431
c40d2a41d7ce
source concatenating std.lisp, more systems, got zstd simple working, IO work, added dat/tar
Richard Westhaver <ellis@rwest.io>
parents:
394
diff
changeset
|
64 | |
437
83f8623a6ec3
std work, renamed :disabled in deftest to :skip
Richard Westhaver <ellis@rwest.io>
parents:
436
diff
changeset
|
65 | (deftest streaming2 () |
657 | 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) |
|
76 | (is (string-equal |
|
77 | (cast (zstd::zstd-inbuffer-src in) c-string) |
|
78 | test)))))) |
|
79 | ||
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) |
|
87 | (is |
|
88 | (zerop |
|
89 | (zstd-iserror |
|
90 | (zstd::zstd-compress-usingdict |
|
91 | cs |
|
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))))) |
|
95 | (is |
|
96 | (zerop |
|
97 | (zstd-iserror |
|
98 | (zstd::zstd-decompress-usingdict |
|
99 | ds |
|
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)))))))))) |
|
103 | ||
104 | (deftest bulk-dictionary () |
|
105 | (with-zstd-ddict (dd :buffer #(1 2 3)) |
|
106 | (is (typep dd '(alien (* (struct zstd::zstd-ddict-s)))))) |
|
107 | (with-zstd-cdict (cd :buffer #(4 5 6)) |
|
108 | (is (typep cd '(alien (* (struct zstd::zstd-cdict-s))))))) |