![](/img/trans.png)
[英]How can I constrain a QuickCheck parameter to a list of non-empty Strings?
[英]How do I write a QuickCheck property which expects a non-empty list of non-zero numbers?
這是一個hack( cogsRpm
是一個用戶提供的函數,應該匹配go的輸出):
propCheck ns = cogsRpm (ns ++ [42]) == go (ns ++ [42])
我添加了42來停止生成零長度列表的快速檢查。 它也可能會失敗,因為它也不應該在那里有零。
我閱讀了文檔,但是沒有足夠的例子來解析如何實際使用它們。 我確實設法在另一個案例中得到這個:
prop_check (Positive x) (Positive y) = updateHealth x y == if y > x then 0 else x-y
這是強制積極的,我嘗試結合一堆東西來獲得listOf1
和NonZero
,但我無法弄清楚語法,因此黑客將一個元素添加到列表中。 我該如何避免這種黑客攻擊?
QuickCheck捆綁了一個NonEmptyList
newtype,其Arbitrary
實例只生成非空列表。 您可以將其與NonZero
結合使用以獲取非零整數的非空列表:
propCheck :: NonEmptyList (NonZero Int) -> Bool
propCheck (coerce -> ns) = cogsRpm ns == go ns
我使用coerce
的視圖模式 ,以簡潔,高效地打開NonEmptyList (NonZero Int)
回的常規列表Int
秒。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.