'L{FTP.passivePortRange} should determine the ports which
L{FTP.getDTPPort} attempts to bind. If no port from that iterator can
be bound, L{error.CannotListenError} should be raised, otherwise the
first successful result from L{FTP.listenFactory} should be returned.'

def test_portRange(self):

    def listenFactory(portNumber, factory):
        if (portNumber in (22032, 22033, 22034)):
            raise error.CannotListenError('localhost', portNumber, 'error')
        return portNumber
    self.serverProtocol.listenFactory = listenFactory
    port = self.serverProtocol.getDTPPort(protocol.Factory())
    self.assertEqual(port, 0)
    self.serverProtocol.passivePortRange = range(22032, 65536)
    port = self.serverProtocol.getDTPPort(protocol.Factory())
    self.assertEqual(port, 22035)
    self.serverProtocol.passivePortRange = range(22032, 22035)
    self.assertRaises(error.CannotListenError, self.serverProtocol.getDTPPort, protocol.Factory())
