Housekeeping, add test for records with custom extension
This commit is contained in:
parent
f3b524421b
commit
a76734a25a
2 changed files with 16 additions and 14 deletions
|
|
@ -2,12 +2,11 @@
|
|||
"Simple, high-performance Clojure serialization library. Originally adapted
|
||||
from Deep-Freeze."
|
||||
{:author "Peter Taoussanis"}
|
||||
(:require [taoensso.nippy
|
||||
(:require [clojure.tools.reader.edn :as edn]
|
||||
[taoensso.nippy
|
||||
(utils :as utils)
|
||||
(compression :as compression :refer (snappy-compressor))
|
||||
(encryption :as encryption :refer (aes128-encryptor))]
|
||||
[clojure.tools.reader
|
||||
(edn :as edn)])
|
||||
(encryption :as encryption :refer (aes128-encryptor))])
|
||||
(:import [java.io DataInputStream DataOutputStream ByteArrayOutputStream
|
||||
ByteArrayInputStream]
|
||||
[java.lang.reflect Method]
|
||||
|
|
@ -110,7 +109,6 @@
|
|||
(binding [*print-dup* print-dup?] ; Expensive
|
||||
(freeze-to-stream data-output-stream x))))
|
||||
|
||||
|
||||
(defmacro ^:private freezer
|
||||
"Helper to extend Freezable protocol."
|
||||
[type id & body]
|
||||
|
|
@ -323,7 +321,7 @@
|
|||
"Deserializes a frozen object from given byte array to its original Clojure
|
||||
data type. Supports data frozen with current and all previous versions of
|
||||
Nippy. For custom types extend the Clojure reader or see `extend-thaw`."
|
||||
[^bytes ba & [{:keys [password compressor encryptor legacy-opts readers]
|
||||
[^bytes ba & [{:keys [password compressor encryptor legacy-opts]
|
||||
:or {legacy-opts {:compressed? true}
|
||||
compressor snappy-compressor
|
||||
encryptor aes128-encryptor}
|
||||
|
|
@ -483,4 +481,4 @@
|
|||
[ba & {:keys [compressed?]
|
||||
:or {compressed? true}}]
|
||||
(thaw ba {:legacy-opts {:compressed? compressed?}
|
||||
:password nil}))
|
||||
:password nil}))
|
||||
|
|
|
|||
|
|
@ -30,16 +30,20 @@
|
|||
(thaw (org.iq80.snappy.Snappy/uncompress iq80-ba 0 (alength iq80-ba)))
|
||||
(thaw (org.iq80.snappy.Snappy/uncompress xerial-ba 0 (alength xerial-ba))))))
|
||||
|
||||
;;; Records
|
||||
(defrecord RecordType [data])
|
||||
(expect RecordType (thaw (freeze (RecordType. "Joe"))))
|
||||
(expect (RecordType. "Joe") (thaw (freeze (RecordType. "Joe"))))
|
||||
;;; Records (reflecting)
|
||||
(defrecord MyRec [data])
|
||||
(expect (let [rec (->MyRec "val")] (= rec (thaw (freeze rec)))))
|
||||
|
||||
;;; Custom types
|
||||
(defrecord MyType [data])
|
||||
(nippy/extend-freeze MyType 1 [x s] (.writeUTF s (:data x)))
|
||||
(expect Exception (thaw (freeze (->MyType "Joe"))))
|
||||
(expect (MyType. "Joe") (do (nippy/extend-thaw 1 [s] (->MyType (.readUTF s)))
|
||||
(thaw (freeze (->MyType "Joe")))))
|
||||
(expect Exception (thaw (freeze (->MyType "val"))))
|
||||
(expect (do (nippy/extend-thaw 1 [s] (->MyType (.readUTF s)))
|
||||
(let [type (->MyType "val")] (= type (thaw (freeze type))))))
|
||||
|
||||
;;; Records (extend)
|
||||
(expect (do (nippy/extend-freeze MyRec 2 [x s] (.writeUTF s (str "fast-" (:data x))))
|
||||
(nippy/extend-thaw 2 [s] (->MyRec (.readUTF s)))
|
||||
(= (->MyRec "fast-val") (thaw (freeze (->MyRec "val"))))))
|
||||
|
||||
(expect (benchmarks/bench {:reader? false})) ; Also tests :cached passwords
|
||||
Loading…
Reference in a new issue