From bcddca184c716fe252382385237a6dcf87856054 Mon Sep 17 00:00:00 2001 From: Erik Rauer Date: Sun, 3 Jan 2021 18:29:16 -0600 Subject: [PATCH] Add tests for `vector/_replacefirst` Add tests for `vector/_replacefirst`. --- .../push/instructions/vector_spec.clj | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test/propeller/push/instructions/vector_spec.clj b/test/propeller/push/instructions/vector_spec.clj index 5f85eec..50c2102 100644 --- a/test/propeller/push/instructions/vector_spec.clj +++ b/test/propeller/push/instructions/vector_spec.clj @@ -311,6 +311,33 @@ (gen-specs "replace" check-replace :vector :item :item) +;;; vector/_replacefirst + +(defn check-replacefirst + [value-type vect toreplace replacement] + (let [stack-type (keyword (str "vector_" value-type)) + value-stack (keyword value-type) + start-state (state/push-to-stack + (state/push-to-stack + (state/push-to-stack state/empty-state + stack-type + vect) + value-stack + toreplace) + value-stack + replacement) + end-state (vector/_replacefirst stack-type start-state) + end-vector (state/peek-stack end-state stack-type) + replacement-index (.indexOf vect toreplace)] + (or + (and (= replacement-index -1) + (= [replacement toreplace] (state/peek-stack-many end-state value-stack 2)) + (= vect end-vector)) + (and (state/empty-stack? end-state value-stack) + (= end-vector (assoc vect replacement-index replacement)))))) + +(gen-specs "replacefirst" check-replacefirst :vector :item :item) + ;;; vector/_subvec (defn clean-subvec-bounds