Add tests for vector/_length

This adds tests for `vector/_length`.

Also moves the tests for `vector/_indexof` higher in the file in order to be more consistent with the ordering in `vector.cljc`.
This commit is contained in:
Erik Rauer 2020-12-29 15:08:33 -06:00
parent 89b861f124
commit aae0873c81

View File

@ -154,26 +154,6 @@
(gen-specs "first" check-first :vector)
;;; vector/_last
(defn check-last
[value-type vect]
(let [stack-type (keyword (str "vector_" value-type))
start-state (state/push-to-stack state/empty-state
stack-type
vect)
end-state (vector/_last stack-type start-state)]
(or
(and (empty? vect)
(= (state/peek-stack end-state stack-type)
vect))
(and
(= (last vect)
(state/peek-stack end-state (keyword value-type)))
(state/empty-stack? end-state stack-type)))))
(gen-specs "last" check-last :vector)
;;; vector/_indexof
(defn check-indexof
@ -196,6 +176,41 @@
(gen-specs "indexof" check-indexof :vector :item)
;;; vector/_last
(defn check-last
[value-type vect]
(let [stack-type (keyword (str "vector_" value-type))
start-state (state/push-to-stack state/empty-state
stack-type
vect)
end-state (vector/_last stack-type start-state)]
(or
(and (empty? vect)
(= (state/peek-stack end-state stack-type)
vect))
(and
(= (last vect)
(state/peek-stack end-state (keyword value-type)))
(state/empty-stack? end-state stack-type)))))
(gen-specs "last" check-last :vector)
;;; vector/_length
(defn check-length
[value-type vect]
(let [stack-type (keyword (str "vector_" value-type))
start-state (state/push-to-stack state/empty-state
stack-type
vect)
end-state (vector/_length stack-type start-state)
expected-result (count vect)]
(= expected-result
(state/peek-stack end-state :integer))))
(gen-specs "length" check-length :vector)
;;; vector/_subvec
(defn clean-subvec-bounds