Mercurial > core / 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 |
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-array 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 (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)))))))