すもぎのめも

いろいろあったことをメモしています

クイックソートを NaturalSpec でテストする

前回の記事では NaturalSpecパラメータ化されたシナリオを使用する2つの方法を示した。今回は小さなクイックソート関数を例に、2つを組み合わせてテストする方法を示す。

初めに、ソート用のシナリオを定義する。

次に、具体的なテストケースを定義する。

スペックを定義した後にすべきことは、ソート関数を実装することだ。私は F# で、非常に短い(それでいて、非常に単純な)クイックソートを実装した。

シナリオを実行すると、次のように出力される(ビットは省略)

ご覧のように、この関数はランダムなリストをソートしたとき、はるかに高速だ。ピボット要素の選択が非常に単純だからだ。

これは良い実装ではない(LINQ や PLINQ を使ってほしい)。ここでは、NaturalSpecを使用すれば、テスト関数を簡単に検証できることを示したかっただけだ。