テストケースを記述する(1)
(Jython で作成した)既存のモジュール hexagon.py を再利用しながら、新たなモジュールの動作を検証するために、テストケースを作成します。
class ExWindow(Window): def init(self): target = "tabControl", "button", self._Controls(target) self.items = {} for e, mino in TestCase(): self.items[e] = mino item = TabItem(Header=e) self.tabControl.Items.Add(item) panel = Canvas() item.Content = panel self.addMino(panel, mino) self.tabControl.SelectionChanged += self.selectionChanged self.button.Click += self.click
ジェネレーター TestCase によって、10種類のテトリミノが得られます。
def selectionChanged(self, sender, e):
self.mino = self.items[sender.SelectedItem.Header]
self.button.Content = self.state()
任意のタブを選択すると、各テトリミノの状態がボタンに表示されます。
def click(self, sender, e): self.mino.rotateClockwise() sender.Content = self.state()
ボタンをクリックすると、テトリミノが(時計回りに)回転 rotateClockwise して、その状態が再表示されます。
class TestCase: types = "COpbYZLIJS" def __iter__(self): m = self.items() for e in self.types: yield e, m[e] def items(self): return dict((e, eval("Tetrimino%s(4, 4)"%e.upper())) for e in self.types)
10種類のテトリミノを生成するだけで、その扱いはクライアントに委ねます。
《Note》 第1章で紹介した、