wip [skip ci]

This commit is contained in:
Michiel Borkent 2022-04-03 16:51:45 +02:00
parent 388edf7b8c
commit 9c94cb23b0
2 changed files with 20 additions and 10 deletions

View file

@ -61,7 +61,13 @@
'spec-impl (copy-var s/spec-impl sns)
'tuple (copy-var s/tuple sns)
'tuple-impl (copy-var s/tuple-impl sns)
'coll-of (copy-var s/coll-of sns)
'conformer (copy-var s/conformer sns)
'int-in (copy-var s/int-in sns)
'int-in-range? (copy-var s/int-in-range? sns)
'double-in (copy-var s/double-in sns)
'inst-in (copy-var s/inst-in sns)
'inst-in-range? (copy-var s/inst-in-range? sns)
#_#_'explain-data (copy-var s/explain-data sns)})
#_:clj-kondo/ignore
@ -71,7 +77,9 @@
#_:clj-kondo/ignore
(def gen-namespace
{'generate (copy-var gen/generate gns)})
{'generate (copy-var gen/generate gns)
'large-integer* (copy-var gen/large-integer* gns)
'double* (copy-var gen/double* gns)})
;; def-impl
;; -> spec? ;; OK

View file

@ -593,7 +593,7 @@
See also - every, map-of"
[pred & opts]
(let [desc `(coll-of ~(res pred) ~@(res-kind opts))]
`(every ~pred ::conform-all true ::describe '~desc ~@opts)))
`(clojure.spec.alpha/every ~pred ::conform-all true ::describe '~desc ~@opts)))
(defmacro map-of
"Returns a spec for a map whose keys satisfy kpred and vals satisfy
@ -1907,10 +1907,11 @@
`(let [st# (inst-ms ~start)
et# (inst-ms ~end)
mkdate# (fn [d#] (java.util.Date. ^{:tag ~'long} d#))]
(spec (and inst? #(inst-in-range? ~start ~end %))
:gen (fn []
(gen/fmap mkdate#
(gen/large-integer* {:min st# :max et#}))))))
(clojure.spec.alpha/spec
(clojure.spec.alpha/and inst? #(clojure.spec.alpha/inst-in-range? ~start ~end %))
:gen (fn []
(gen/fmap mkdate#
(clojure.spec.gen.alpha/large-integer* {:min st# :max et#}))))))
(defn int-in-range?
"Return true if start <= val, val < end and val is a fixed
@ -1922,8 +1923,9 @@
"Returns a spec that validates fixed precision integers in the
range from start (inclusive) to end (exclusive)."
[start end]
`(spec (and int? #(int-in-range? ~start ~end %))
:gen #(gen/large-integer* {:min ~start :max (dec ~end)})))
`(clojure.spec.alpha/spec
(clojure.spec.alpha/and int? #(clojure.spec.alpha/int-in-range? ~start ~end %))
:gen #(clojure.spec.gen.alpha/large-integer* {:min ~start :max (dec ~end)})))
(defmacro double-in
"Specs a 64-bit floating point number. Options:
@ -1935,12 +1937,12 @@
[& {:keys [infinite? NaN? min max]
:or {infinite? true NaN? true}
:as m}]
`(spec (and c/double?
`(clojure.spec.alpha/spec (clojure.spec.alpha/and c/double?
~@(when-not infinite? '[#(not (Double/isInfinite %))])
~@(when-not NaN? '[#(not (Double/isNaN %))])
~@(when max `[#(<= % ~max)])
~@(when min `[#(<= ~min %)]))
:gen #(gen/double* ~m)))
:gen #(clojure.spec.gen.alpha/double* ~m)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; assert ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defonce