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)))) -