テストケースを記述する(2)

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
        self.KeyDown += self.keyDown

ジェネレーター TestCase によって、10種類のテトリミノが得られます。

    def keyDown(self, sender, e):
        KeyValues(e.Key).switch({
            Key.Left : (self.mino.shift, (-1,)),
            Key.Right: (self.mino.shift, ( 1,)),
            Key.Up   : (self.mino.counterClockwise, ()),
            Key.Down : (self.mino.rotateClockwise , ()),            
            })

矢印キーを選択すると、テトリミノを回転(↓|↑)シフト(←|→)できます。

class KeyValues:
    def __init__(self, value):
        self.value = value

    def switch(self, cases):
        for key, (f, args) in cases.items():
            if key == self.value:
                apply(f, args)

押されたキーに対応するアクションを起動します。