'Create a L{TCP6ClientEndpoint} and return the values needed to verify
its behavior.
@param reactor: A fake L{IReactorTCP} that L{TCP6ClientEndpoint} can
call L{IReactorTCP.connectTCP} on.
@param clientFactory: The thing that we expect to be passed to our
L{IStreamClientEndpoint.connect} implementation.
@param connectArgs: Optional dictionary of arguments to
L{IReactorTCP.connectTCP}'

def createClientEndpoint(self, reactor, clientFactory, **connectArgs):

    address = IPv6Address('TCP', '::2', 80)
    self.ep = endpoints.TCP6ClientEndpoint(reactor, 'ipv6.example.com', address.port, **connectArgs)
    def testNameResolution(host):
        self.assertEqual('ipv6.example.com', host)
        data = [(AF_INET6, SOCK_STREAM, IPPROTO_TCP, '', ('::2', 0, 0, 0)), (AF_INET6, SOCK_STREAM, IPPROTO_TCP, '', ('::3', 0, 0, 0)), (AF_INET6, SOCK_STREAM, IPPROTO_TCP, '', ('::4', 0, 0, 0))]
        return defer.succeed(data)
    self.ep._nameResolution = testNameResolution
    return (self.ep, (address.host, address.port, clientFactory, connectArgs.get('timeout', 30), connectArgs.get('bindAddress', None)), address)
