Я нашел способ генерировать исключения NullPointerException, генерируя значения с использованием спецификации s/or
.Я хочу иметь возможность генерировать и помечать значение nil
, нет s/nilable
не подходит.
Это ошибка в clojure.spec
?
(ns blah
(:require [clojure.spec.alpha :as s]))
(s/def ::fine (s/or :int int? :nil nil?)
(s/def ::throws (s/or :int (s/int-in 1 5) :zero zero? :nil nil?)
(s/exercise ::fine)
=>
([nil [:nil nil]
[-1 [:int -1]]
[nil [:nil nil]]
[0 [:int 0]]
[nil [:nil nil]]
[15 [:int 15]]
[-25 [:int -25]]
[nil [:nil nil]]
[-2 [:int -2]]
[-30 [:int -30]]])]])
(s/exercise ::throws)
=>
NullPointerException clojure.lang.Numbers.ops (Numbers.java:1018)
Если выограничьте количество упражнений ::throws
, вы видите правильные значения :int
и :zero
, это бросок :nil
.