クイックソートを NaturalSpec でテストする
前回の記事では NaturalSpec でパラメータ化されたシナリオを使用する2つの方法を示した。今回は小さなクイックソート関数を例に、2つを組み合わせてテストする方法を示す。
初めに、ソート用のシナリオを定義する。
次に、具体的なテストケースを定義する。
スペックを定義した後にすべきことは、ソート関数を実装することだ。私は F# で、非常に短い(それでいて、非常に単純な)クイックソートを実装した。
シナリオを実行すると、次のように出力される(ビットは省略)
ご覧のように、この関数はランダムなリストをソートしたとき、はるかに高速だ。ピボット要素の選択が非常に単純だからだ。
これは良い実装ではない(LINQ や PLINQ を使ってほしい)。ここでは、NaturalSpecを使用すれば、テスト関数を簡単に検証できることを示したかっただけだ。