Я использую QuickCheck для генеративного тестирования в Clojure.
Однако я не очень хорошо это знаю и часто заканчиваю тем, что делаю запутанные вещи. Одна вещь, которую мне нужно делать довольно часто, это что-то вроде этого:
- сгенерировать первое простое число из списка простых чисел (пока все хорошо)
- сгенерировать второе простое число, которое меньше первого
- сгенерировать третье простое число, которое меньше первого
Однако я понятия не имею, как это сделать с помощью QuickCheck.
Вот еще более простой, глупый пример, который не работает:
(prop/for-all [a (gen/choose 1 10)
b (gen/such-that #(= a %) (gen/choose 1 10))]
(= a b))
Это не работает, потому что a не может быть разрешен (prop/for-all
не похож на оператор let
).
Итак, как я могу сгенерировать три простых числа при условии, что два последних меньше первого?