Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (ns scratch
- (:require
- [clojure.spec.alpha :as s]
- [clojure.spec.test.alpha :as stest]))
- (defn lighten-color
- [{:keys [color] :as m}]
- (case color
- "RED" (assoc m :color "PINK")
- "BLUE" (assoc m :color "PERIWINKLE")
- "BLACK" (assoc m :color "GRAY")))
- ;; need to "namespace" color, for pre and post function
- (s/def :scratch-pre/color #{"RED" "BLUE" "BLACK"})
- (s/def :scratch-post/color #{"PINK" "PERIWINKLE" "GRAY"})
- ;; because :req-un matches keys based on name (the word(s) past /)
- (s/def ::m-pre
- (s/keys :req-un [:scratch-pre/color]))
- (s/def ::m-post
- (s/keys :req-un [:scratch-post/color]))
- (s/fdef lighten-color
- :args (s/cat :m ::m-pre)
- :ret ::m-post)
- (stest/check `lighten-color)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement