From fe8622d55fc40b3824453b87bab45a024032d716 Mon Sep 17 00:00:00 2001 From: meeseekz Date: Thu, 30 Jan 2020 23:59:34 +0100 Subject: [PATCH] Prioritize size* when available. Fixes #20 --- src/octet/spec.cljc | 6 +++--- test/octet/tests/core.cljc | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/octet/spec.cljc b/src/octet/spec.cljc index 0fe2802..482027a 100644 --- a/src/octet/spec.cljc +++ b/src/octet/spec.cljc @@ -119,9 +119,9 @@ (size* [_ data] (reduce (fn [acc [index data]] (let [type (nth types index)] - (if (satisfies? ISpecSize type) - (+ acc (size type)) - (+ acc (size* type data))))) + (if (satisfies? ISpecDynamicSize type) + (+ acc (size* type data)) + (+ acc (size type))))) 0 (map-indexed vector data))) diff --git a/test/octet/tests/core.cljc b/test/octet/tests/core.cljc index c561a71..a4f2803 100644 --- a/test/octet/tests/core.cljc +++ b/test/octet/tests/core.cljc @@ -196,6 +196,11 @@ (t/is (= readed 4)) (t/is (= data [1000]))))) +(t/deftest mult-indexed-specs-with-dynamic + (let [spec (buf/spec (buf/spec (buf/vector* buf/byte))) + result (buf/into spec [[[123]]])] + (t/is (= (buf/get-capacity result) 5)))) + #?(:clj (t/deftest spec-data-types (let [data [(buf/string 5) "12345" @@ -487,4 +492,3 @@ (if (t/successful? m) (set! (.-exitCode js/process) 0) (set! (.-exitCode js/process) 1)))) -