Я только начал использовать QuickCheck с кучей кода на Haskell. Я отстал от жизни, я знаю.Этот вопрос состоит из двух частей:
Во-первых, каковы общие рекомендации по быстрой проверке? На данный момент я понял следующее:
X вне диапазона, Y находится в диапазоне
, если x вне диапазона, нормализуйте x ≠ x
(или какое-либо другое подобное свойство)Но я все еще цепляюсь за другие передовые практики. В частности:
test/
? (Если да, то как импортировать материал в src/
?)Properties/
в src
?Самое главное, как мы обычно проверяем свойства классов типов? Например, рассмотрим следующий (упрощенный) класс типов:
class Gen a where
next :: a -> a
prev :: a -> a
Я хочу проверить свойство ∀ x: prev (next x) == x
. Конечно, это включает в себя написание тестов для каждого экземпляра. Утомительно писать одно и то же свойство для каждого экземпляра, особенно когда тест более сложный. Каков стандартный способ обобщить такие тесты?