rosylilly/QueenCheck — Issue #3: 前提条件を付与するメソッドの追加の検討
Author: VoQn
Created: 2012-02-08 18:26:38+00:00
State: open

本家 QuickCheck には `(==>) :: Testable prop => Bool -> prop -> Property` という「必要条件 ==> 十分条件」を規定する演算子がある.
論理学の 「p -> q (p ならば q)」と同じ意味合いを持っている

``` haskell
prop_divide_x_y :: Int -> Int -> Property
prop_divide_x_y =
y /= 0 ==>
x == x * div x y
```

このテストコードは「`y` が `0` でないならば，`x == x * div x y` が成立する」というテストが書ける．`==>` 演算子は複数の条件をチェーンできる．

これを QueenCheck でサポートする場合，Ruby には二項演算子を独自に宣言できないので，QueenCheck::Testable なんかのクラスメソッドとして定義し，前件と後件をブロックで渡すような仕組みになるかと思われる．

ただ，現状の利用の仕方を見ても qcheck#(なんらかのメソッドチェイン)でまかなえているような気もするので，その場合だったら Reference に書いておくと良いかもしれない．

どちらにせよ何らかの手伝いはやる