clojure-spec

About: http://clojure.org/about/spec Guide: http://clojure.org/guides/spec API: https://clojure.github.io/spec.alpha/clojure.spec.alpha-api.html
norton 2020-03-07T16:18:30.102500Z

@alexmiller I tried to find a smaller failing case.

(require '[clojure.alpha.spec :as s] '[clojure.alpha.spec.gen :as gen])
;; => nil

(s/def :wf/S
  (s/schema {:s/i-001 string?
             :s/i-002 string?}))
;; => :wf/S

(s/def :wf/S1
  (s/select :wf/S [:s/i-001]))
;; => :wf/S1

(s/valid? :wf/S {:s/i-001 "1"})
;; => true

(s/valid? :wf/S {:s/i-001 1})
;; => false

(s/valid? :wf/S1 {})
;; => false

(s/valid? :wf/S1 {:s/i-002 "1"})
;; => false

(s/valid? :wf/S1 {:s/i-001 "1"})
;; => true

(s/valid? :wf/S1 {:s/i-001 1})
;; => true

(gen/sample (s/gen :wf/S1) 1)
;; Caused by clojure.lang.ExceptionInfo
;; Couldn't satisfy such-that predicate after 100 tries.)
The result of the last 2 expressions is not expected (to me).