changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/ffi/zstd/tests.lisp

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
a866723aac84 init qmp
Richard Westhaver <ellis@rwest.io>
parents: 393
diff changeset
1
 ;;; zstd/tests.lisp --- Zstd FFI tests
a866723aac84 init qmp
Richard Westhaver <ellis@rwest.io>
parents: 393
diff changeset
2
 
a866723aac84 init qmp
Richard Westhaver <ellis@rwest.io>
parents: 393
diff changeset
3
 ;;
a866723aac84 init qmp
Richard Westhaver <ellis@rwest.io>
parents: 393
diff changeset
4
 
a866723aac84 init qmp
Richard Westhaver <ellis@rwest.io>
parents: 393
diff changeset
5
 ;;; Code:
60
ee94191a3fb0 add zstd, todos
ellis <ellis@rwest.io>
parents:
diff changeset
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
a866723aac84 init qmp
Richard Westhaver <ellis@rwest.io>
parents: 393
diff changeset
8
 
60
ee94191a3fb0 add zstd, todos
ellis <ellis@rwest.io>
parents:
diff changeset
9
 (in-package :zstd/tests)
394
a866723aac84 init qmp
Richard Westhaver <ellis@rwest.io>
parents: 393
diff changeset
10
 
60
ee94191a3fb0 add zstd, todos
ellis <ellis@rwest.io>
parents:
diff changeset
11
 (defsuite :zstd)
ee94191a3fb0 add zstd, todos
ellis <ellis@rwest.io>
parents:
diff changeset
12
 (in-suite :zstd)
394
a866723aac84 init qmp
Richard Westhaver <ellis@rwest.io>
parents: 393
diff changeset
13
 
391
757b91ddcb2a zstd init
Richard Westhaver <ellis@rwest.io>
parents: 388
diff changeset
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
757b91ddcb2a zstd init
Richard Westhaver <ellis@rwest.io>
parents: 388
diff changeset
16
 (deftest sanity ()
757b91ddcb2a zstd init
Richard Westhaver <ellis@rwest.io>
parents: 388
diff changeset
17
   (mapc (lambda (x)
757b91ddcb2a zstd init
Richard Westhaver <ellis@rwest.io>
parents: 388
diff changeset
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
c6caddf91c72 zstdd and zstdc
Richard Westhaver <ellis@rwest.io>
parents: 469
diff changeset
38
         (is (zerop (zstd-iserror (zstd-decompress src src-size dst csize)))))))
c6caddf91c72 zstdd and zstdc
Richard Westhaver <ellis@rwest.io>
parents: 469
diff changeset
39
   (let* ((octets (make-array 4000 :initial-element (random 255)))
c6caddf91c72 zstdd and zstdc
Richard Westhaver <ellis@rwest.io>
parents: 469
diff changeset
40
          (compressed (zstd:zstdc octets)))
c6caddf91c72 zstdd and zstdc
Richard Westhaver <ellis@rwest.io>
parents: 469
diff changeset
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
4dd7b6320efc zstd alien errors
Richard Westhaver <ellis@rwest.io>
parents: 470
diff changeset
47
                (out (* zstd-outbuffer) (zstd::allocate-zstd-outbuffer)))
657
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
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
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
50
             (zstd::zstd-inbuffer-size in) (zstd-cstreaminsize))
507
4dd7b6320efc zstd alien errors
Richard Westhaver <ellis@rwest.io>
parents: 470
diff changeset
51
       (with-zstd-cstream (cs)
4dd7b6320efc zstd alien errors
Richard Westhaver <ellis@rwest.io>
parents: 470
diff changeset
52
         (is (zerop (zstd::zstd-initcstream cs (zstd-defaultclevel))))
4dd7b6320efc zstd alien errors
Richard Westhaver <ellis@rwest.io>
parents: 470
diff changeset
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
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
55
           (setf (zstd::zstd-outbuffer-size out) (zstd-cstreamoutsize))
507
4dd7b6320efc zstd alien errors
Richard Westhaver <ellis@rwest.io>
parents: 470
diff changeset
56
           (zstd-compressstream cs out in)
4dd7b6320efc zstd alien errors
Richard Westhaver <ellis@rwest.io>
parents: 470
diff changeset
57
           (zstd::zstd-flushstream cs out)
4dd7b6320efc zstd alien errors
Richard Westhaver <ellis@rwest.io>
parents: 470
diff changeset
58
           (zstd::zstd-endstream cs out)
4dd7b6320efc zstd alien errors
Richard Westhaver <ellis@rwest.io>
parents: 470
diff changeset
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
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
66
   "Test the Zstd v2 Streaming API."
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
67
   (let ((test "test 1 2 3"))
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
68
     (with-zstd-buffers (in out :src (make-alien-string test))
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
69
       (with-zstd-streams (cs ds)
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
70
         (zstd-compressstream2 cs out in 0)
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
71
         (zstd-compressstream2 cs out in 1)
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
72
         (is (zerop (zstd-iserror (zstd-compressstream2 cs out in 2))))
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
73
         (zstd::zstd-flushstream cs out)
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
74
         (is (zerop (zstd-iserror (zstd::zstd-endstream cs out))))
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
75
         (zstd-decompressstream ds out in)
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
76
         (is (string-equal 
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
77
              (cast (zstd::zstd-inbuffer-src in) c-string)
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
78
              test))))))
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
79
 
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
80
 (deftest simple-dictionary ()
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
81
   (let ((test "test 1 2 3"))
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
82
     (with-alien ((dict (* t))
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
83
                  (dst (array (unsigned 8) 100)))
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
84
       (with-zstd-buffers (in out :src (cast (make-alien-string test) (* t)) :dst (cast dst (* t)) :dst-size 100)
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
85
         (is (= 100 (zstd::zstd-outbuffer-size out)))
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
86
         (with-zstd-streams (cs ds)
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
87
           (is 
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
88
            (zerop
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
89
             (zstd-iserror
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
90
              (zstd::zstd-compress-usingdict 
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
91
               cs 
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
92
               (zstd::zstd-outbuffer-dst out) (zstd::zstd-outbuffer-size out) 
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
93
               (zstd::zstd-inbuffer-src in) (zstd::zstd-inbuffer-size in)
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
94
               dict (length test) (zstd-defaultclevel)))))
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
95
           (is
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
96
            (zerop
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
97
             (zstd-iserror
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
98
              (zstd::zstd-decompress-usingdict 
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
99
               ds 
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
100
               (zstd::zstd-outbuffer-dst out) (zstd::zstd-outbuffer-size out) 
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
101
               (zstd::zstd-inbuffer-src in) (zstd::zstd-inbuffer-size in)
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
102
               dict (length test))))))))))
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
103
 
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
104
 (deftest bulk-dictionary ()
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
105
   (with-zstd-ddict (dd :buffer #(1 2 3))
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
106
     (is (typep dd '(alien (* (struct zstd::zstd-ddict-s))))))
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
107
   (with-zstd-cdict (cd :buffer #(4 5 6))
937a6f354047 zstd tests and macros
Richard Westhaver <ellis@rwest.io>
parents: 507
diff changeset
108
     (is (typep cd '(alien (* (struct zstd::zstd-cdict-s)))))))