80 lines
2.9 KiB
Clojure
80 lines
2.9 KiB
Clojure
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
;; file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
|
|
|
|
(ns helins.binf.test.base64
|
|
|
|
{:author "Adam Helins"}
|
|
|
|
(:require [clojure.test :as t]
|
|
[clojure.test.check.clojure-test :as tc.ct]
|
|
[clojure.test.check.generators :as tc.gen]
|
|
[clojure.test.check.properties :as tc.prop]
|
|
[helins.binf :as binf]
|
|
[helins.binf.base64 :as binf.base64]
|
|
[helins.binf.buffer :as binf.buffer]
|
|
[helins.binf.gen :as binf.gen]))
|
|
|
|
|
|
;;;;;;;;;;
|
|
|
|
|
|
(t/deftest main
|
|
|
|
(let [buffer (binf.buffer/alloc 64)
|
|
view (binf/view buffer)
|
|
#?@(:cljs [buffer-shared (binf.buffer/alloc-shared 64)
|
|
view-shared (binf/view buffer-shared)])]
|
|
(dotimes [i 64]
|
|
(binf/wr-b8 view
|
|
i)
|
|
#?(:cljs (binf/wr-b8 view-shared
|
|
i)))
|
|
(t/is (= (seq buffer)
|
|
(seq (-> buffer
|
|
binf.base64/encode
|
|
binf.base64/decode
|
|
binf/backing-buffer))
|
|
#?(:cljs (seq (-> buffer-shared
|
|
binf.base64/encode
|
|
(binf.base64/decode binf.buffer/alloc-shared)
|
|
binf/backing-buffer))))
|
|
"Without offset nor lenght")
|
|
(t/is (= (drop 5
|
|
(seq buffer))
|
|
(seq (-> buffer
|
|
(binf.base64/encode 5)
|
|
binf.base64/decode
|
|
binf/backing-buffer))
|
|
#?(:cljs (seq (-> buffer-shared
|
|
(binf.base64/encode 5)
|
|
(binf.base64/decode binf.buffer/alloc-shared)
|
|
binf/backing-buffer))))
|
|
"With offset without length")
|
|
(t/is (= (->> (seq buffer)
|
|
(drop 5)
|
|
(take 20))
|
|
(seq (-> buffer
|
|
(binf.base64/encode 5
|
|
20)
|
|
binf.base64/decode
|
|
binf/backing-buffer))
|
|
#?(:cljs (seq (-> buffer-shared
|
|
(binf.base64/encode 5
|
|
20)
|
|
(binf.base64/decode binf.buffer/alloc-shared)
|
|
binf/backing-buffer))))
|
|
"With offset and length")))
|
|
|
|
|
|
|
|
(tc.ct/defspec gen
|
|
|
|
(tc.prop/for-all [buffer binf.gen/buffer]
|
|
(= (seq buffer)
|
|
(let [view (-> buffer
|
|
binf.base64/encode
|
|
binf.base64/decode)]
|
|
(seq (binf/rr-buffer view
|
|
(binf/limit view)))))))
|