def doTestSelectAndMove( self, ctrl1, ctrl2, ctrl3 ):
        self.view.transcalePoint( 0, 0 ).returns( ( 5, 5 ) )
        self.selection.hasObjectAt( 5, 5 ).returns( False )
        self.selection.boardHasObjectAt( 5, 5 ).returns( True )
        if ctrl1 == False:
            self.selection.reset()
        self.selection.addObjectAt( 5, 5 )
        self.view.transcalePoint( 0, 0 ).returns( ( 5, 5 ) )
        self.view.queue_draw()
        self.view.transcalePoint( 50, 50 ).returns( ( 10, 10 ) )
        self.view.queue_draw()
        self.view.transcalePoint( 100, 100 ).returns( ( 15, 15 ) )
        self.view.queue_draw()
        self.view.transcalePoint( 100, 100 ).returns( ( 15, 15 ) )
        self.selection.canMoveByHalfTiles().returns( False )
        self.selection.move( 10, 10 )
        self.view.transcalePoint( 100, 100 ).returns( ( 15, 15 ) )
        self.view.queue_draw()

        self.m.startTest()

        self.manager = MouseManager( self.view, self.board, self.selection )
        self.manager.onMouseButtonDown( None, Event( 0, 0, button = 1, ctrl = ctrl1 ) )
        self.manager.onMouseMove( None, Event( 50, 50, ctrl = ctrl2 ) )
        self.manager.onMouseMove( None, Event( 100, 100, ctrl = ctrl3 ) )
        self.manager.onMouseButtonUp( None, Event( 100, 100, button = 1, ctrl = False ) )
class TestMove( TestCase ):
    def testMoveSelection1( self ):
        self.doTestMoveSelection( False, False, False )

    def testMoveSelection2( self ):
        self.doTestMoveSelection( False, False, True )

    def testMoveSelection3( self ):
        self.doTestMoveSelection( False, True, False )

    def testMoveSelection4( self ):
        self.doTestMoveSelection( False, True, True )

    def testMoveSelection5( self ):
        self.doTestMoveSelection( True, False, False )

    def testMoveSelection6( self ):
        self.doTestMoveSelection( True, False, True )

    def testMoveSelection7( self ):
        self.doTestMoveSelection( True, True, False )

    def testMoveSelection8( self ):
        self.doTestMoveSelection( True, True, True )

    def doTestMoveSelection( self, ctrl1, ctrl2, ctrl3 ):
        self.view.transcalePoint( 0, 0 ).returns( ( 5, 5 ) )
        self.selection.hasObjectAt( 5, 5 ).returns( True )
        self.view.transcalePoint( 0, 0 ).returns( ( 5, 5 ) )
        self.view.queue_draw()
        self.view.transcalePoint( 50, 50 ).returns( ( 10, 10 ) )
        self.view.transcalePoint( 50, 50 ).returns( ( 10, 10 ) )
        self.view.queue_draw()
        self.view.transcalePoint( 100, 100 ).returns( ( 15, 15 ) )
        self.view.queue_draw()
        self.view.transcalePoint( 100, 100 ).returns( ( 15, 15 ) )
        self.selection.canMoveByHalfTiles().returns( False )
        self.selection.move( 6, 6 )
        self.view.transcalePoint( 100, 100 ).returns( ( 15, 15 ) )
        self.view.queue_draw()

        self.m.startTest()

        self.manager = MouseManager( self.view, self.board, self.selection )
        self.manager.onMouseButtonDown( None, Event( 0, 0, button = 1, ctrl = ctrl1 ) )
        self.manager.onMouseMove( None, Event( 50, 50, ctrl = ctrl2 ) )
        self.manager.onMouseMove( None, Event( 100, 100, ctrl = ctrl3 ) )
        self.manager.onMouseButtonUp( None, Event( 100, 100, button = 1, ctrl = False ) )

    def testSelectAndMove1( self ):
        self.doTestSelectAndMove( False, False, False )

    def testSelectAndMove2( self ):
        self.doTestSelectAndMove( False, False, True )

    def testSelectAndMove3( self ):
        self.doTestSelectAndMove( False, True, False )

    def testSelectAndMove4( self ):
        self.doTestSelectAndMove( False, True, True )

    def testSelectAndMove5( self ):
        self.doTestSelectAndMove( True, False, False )

    def testSelectAndMove6( self ):
        self.doTestSelectAndMove( True, False, True )

    def testSelectAndMove7( self ):
        self.doTestSelectAndMove( True, True, False )

    def testSelectAndMove8( self ):
        self.doTestSelectAndMove( True, True, True )

    def doTestSelectAndMove( self, ctrl1, ctrl2, ctrl3 ):
        self.view.transcalePoint( 0, 0 ).returns( ( 5, 5 ) )
        self.selection.hasObjectAt( 5, 5 ).returns( False )
        self.selection.boardHasObjectAt( 5, 5 ).returns( True )
        if ctrl1 == False:
            self.selection.reset()
        self.selection.addObjectAt( 5, 5 )
        self.view.transcalePoint( 0, 0 ).returns( ( 5, 5 ) )
        self.view.queue_draw()
        self.view.transcalePoint( 50, 50 ).returns( ( 10, 10 ) )
        self.view.queue_draw()
        self.view.transcalePoint( 100, 100 ).returns( ( 15, 15 ) )
        self.view.queue_draw()
        self.view.transcalePoint( 100, 100 ).returns( ( 15, 15 ) )
        self.selection.canMoveByHalfTiles().returns( False )
        self.selection.move( 10, 10 )
        self.view.transcalePoint( 100, 100 ).returns( ( 15, 15 ) )
        self.view.queue_draw()

        self.m.startTest()

        self.manager = MouseManager( self.view, self.board, self.selection )
        self.manager.onMouseButtonDown( None, Event( 0, 0, button = 1, ctrl = ctrl1 ) )
        self.manager.onMouseMove( None, Event( 50, 50, ctrl = ctrl2 ) )
        self.manager.onMouseMove( None, Event( 100, 100, ctrl = ctrl3 ) )
        self.manager.onMouseButtonUp( None, Event( 100, 100, button = 1, ctrl = False ) )