9
我寫了一個快速檢查屬性,用於合併兩個已排序輸入到排序輸出的函數:條件快速檢查屬性
prop_merge xs ys =
if (sorted xs && sorted ys) then (sorted (merge xs ys)) else True
也就是說,當輸入被排序,輸出的排序也是如此。它也可以寫成:
prop_merge xs ys = not(sorted xs && sorted ys) || (sorted (merge xs ys))
但我並不喜歡這兩種版本。 QuickCheck中有沒有更好的「條件屬性」語法?
啊,那看起來好多了! – fredoverflow
我認爲明確指出'==>'不僅是一種更好的語法,而且允許QuickCheck區分測試成功的測試用例和不滿足前提條件的測試用例。在後一種情況下,測試不計和快速檢查生成新的輸入。這是什麼使快速檢查給你了「***放棄了!只傳遞15的測試。」消息「。如果通過標準布爾運算符表達前提條件,QuickCheck將提升所有通過的測試,由於前提條件失敗,其中大部分測試都無效。 –
@cebewee:感謝您的建議。因爲他們被審稿人拒絕。 – hammar