Advertisement
Guest User

namespacing specs?

a guest
Aug 11th, 2018
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.72 KB | None | 0 0
  1. (ns scratch
  2. (:require
  3. [clojure.spec.alpha :as s]
  4. [clojure.spec.test.alpha :as stest]))
  5.  
  6. (defn lighten-color
  7. [{:keys [color] :as m}]
  8. (case color
  9. "RED" (assoc m :color "PINK")
  10. "BLUE" (assoc m :color "PERIWINKLE")
  11. "BLACK" (assoc m :color "GRAY")))
  12.  
  13. ;; need to "namespace" color, for pre and post function
  14. (s/def :scratch-pre/color #{"RED" "BLUE" "BLACK"})
  15. (s/def :scratch-post/color #{"PINK" "PERIWINKLE" "GRAY"})
  16.  
  17. ;; because :req-un matches keys based on name (the word(s) past /)
  18. (s/def ::m-pre
  19. (s/keys :req-un [:scratch-pre/color]))
  20.  
  21. (s/def ::m-post
  22. (s/keys :req-un [:scratch-post/color]))
  23.  
  24. (s/fdef lighten-color
  25. :args (s/cat :m ::m-pre)
  26. :ret ::m-post)
  27.  
  28. (stest/check `lighten-color)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement