 
 (deftest setval-vals-collection-test
   (is (= 2 (setval s/VAL 2 :a))))
+
+(defspec multi-transform-test
+  (for-all+
+    [kw1 gen/keyword
+     kw2 gen/keyword
+     m (limit-size 5 (gen-map-with-keys gen/keyword gen/int kw1 kw2))]
+    (= (->> m (transform [(s/keypath kw1) s/VAL] +) (transform (s/keypath kw2) dec))
+       (multi-transform
+         (s/multi-path [(s/keypath kw1) s/VAL (s/terminal +)]
+                       [(s/keypath kw2) (s/terminal dec)])
+         m
+         ))))
+
+(deftest multi-transform-overrun-error
+  (is (thrown? Exception (multi-transform s/STAY 3)))
+  )
+
+(deftest terminal-val-test
+  (is (= 3 (multi-transform (s/terminal-val 3) 2)))
+  (is (= 3 (multi-transform [s/VAL (s/terminal-val 3)] 2)))
+  )

             :refer [paramsfn defprotocolpath defnav extend-protocolpath
                     nav declarepath providepath select select-one select-one!
                     select-first transform setval replace-in defnavconstructor
                     select-any selected-any? collected? traverse]])
  (:use
    #+clj [clojure.test :only [deftest is]]
    #+clj [clojure.test.check.clojure-test :only [defspec]]

           :only [paramsfn defprotocolpath defnav extend-protocolpath
                  nav declarepath providepath select select-one select-one!
                  select-first transform setval replace-in defnavconstructor
                  select-any selected-any? collected? traverse
                  multi-transform]]

    )

