Ë
    oj  ã                   ó°   — d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
mZmZmZ ddlmZmZmZmZmZmZ ddlmZ ddlmZ  G d	„ d
e«      Z G d„ de«      Zy)z$
Tests for L{twisted.names.common}.
é    )ÚverifyClass)Ú	IResolver)ÚResolverBase)ÚEFORMATÚENAMEÚENOTIMPÚEREFUSEDÚESERVERÚQuery)ÚDNSFormatErrorÚDNSNameErrorÚDNSNotImplementedErrorÚDNSQueryRefusedErrorÚDNSServerErrorÚDNSUnknownError)ÚFailure)ÚSynchronousTestCasec                   ó:   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚExceptionForCodeTestsz5
    Tests for L{ResolverBase.exceptionForCode}.
    c                 ó6   — t        «       j                  | _        y ©N)r   ÚexceptionForCode©Úselfs    ú@/usr/lib/python3/dist-packages/twisted/names/test/test_common.pyÚsetUpzExceptionForCodeTests.setUp   s   € Ü ,£× ?Ñ ?ˆÕó    c                 óV   — | j                  | j                  t        «      t        «       y)zd
        L{ResolverBase.exceptionForCode} converts L{EFORMAT} to
        L{DNSFormatError}.
        N)ÚassertIsr   r   r   r   s    r   Útest_eformatz"ExceptionForCodeTests.test_eformat"   ó   € ð
 	�‰�d×+Ñ+¬GÓ4´nÕEr   c                 óV   — | j                  | j                  t        «      t        «       y)zd
        L{ResolverBase.exceptionForCode} converts L{ESERVER} to
        L{DNSServerError}.
        N)r   r   r
   r   r   s    r   Útest_eserverz"ExceptionForCodeTests.test_eserver)   r!   r   c                 óV   — | j                  | j                  t        «      t        «       y)zX
        L{ResolverBase.exceptionForCode} converts L{ENAME} to L{DNSNameError}.
        N)r   r   r   r   r   s    r   Ú
test_enamez ExceptionForCodeTests.test_ename0   s   € ð 	�‰�d×+Ñ+¬EÓ2´LÕAr   c                 óV   — | j                  | j                  t        «      t        «       y)zl
        L{ResolverBase.exceptionForCode} converts L{ENOTIMP} to
        L{DNSNotImplementedError}.
        N)r   r   r   r   r   s    r   Útest_enotimpz"ExceptionForCodeTests.test_enotimp6   s   € ð
 	�‰�d×+Ñ+¬GÓ4Ô6LÕMr   c                 óV   — | j                  | j                  t        «      t        «       y)zk
        L{ResolverBase.exceptionForCode} converts L{EREFUSED} to
        L{DNSQueryRefusedError}.
        N)r   r   r	   r   r   s    r   Útest_erefusedz#ExceptionForCodeTests.test_erefused=   s   € ð
 	�‰�d×+Ñ+¬HÓ5Ô7KÕLr   c                 ó^   — | j                  | j                  t        «       «      t        «       y)zr
        L{ResolverBase.exceptionForCode} converts any other response code to
        L{DNSUnknownError}.
        N)r   r   Úobjectr   r   s    r   Ú
test_otherz ExceptionForCodeTests.test_otherD   s   € ð
 	�‰�d×+Ñ+¬F«HÓ5´ÕGr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r    r#   r%   r'   r)   r,   © r   r   r   r      s1   „ ñò@òFòFòBòNòMóHr   r   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)Ú
QueryTestsz*
    Tests for L{ResolverBase.query}.
    c                 ó,   — t        t        t        «       y)zF
        L{ResolverBase} provides the L{IResolver} interface.
        N)r   r   r   r   s    r   Ú"test_resolverBaseProvidesIResolverz-QueryTests.test_resolverBaseProvidesIResolverQ   s   € ô 	”Iœ|Õ,r   c                 óš   ‡— g Št        «       }dˆfd„i|_        t        dd¬«      }|j                  |d«       | j	                  dg‰«       y)zŸ
        L{ResolverBase.query} looks up a method to invoke using the type of the
        query passed to it and the C{typeToMethod} mapping on itself.
        é90  c                 ó*   •— ‰j                  | |f«      S r   )Úappend)ÚqueryÚtimeoutÚresultss     €r   ú<lambda>z6QueryTests.test_typeToMethodDispatch.<locals>.<lambda>_   s   ø€ ¨'¯.©.¸%ÀÐ9IÓ*J€ r   ó   example.com©ÚnameÚtypeé{   )r>   rB   N)r   ÚtypeToMethodr   r:   ÚassertEqual)r   Úresolverr:   r<   s      @r   Útest_typeToMethodDispatchz$QueryTests.test_typeToMethodDispatchW   sQ   ø€ ð
 ˆÜ“>ˆàÓJð!
ˆÔô ˜>°Ô6ˆØ�‰�u˜cÔ"Ø×ÑÐ/Ð0°'Õ:r   c                 óè   ‡— t        «       Št        «       }dˆfd„i|_        t        dd¬«      }|j	                  |d«      }g }|j                  |j                  «       | j                  ‰|d   «       y)zÄ
        L{ResolverBase.query} returns a L{Deferred} which fires with the result
        of the method found in the C{typeToMethod} mapping for the type of the
        query passed to it.
        i1Ô  c                 ó   •— ‰S r   r1   )r:   r;   Úexpecteds     €r   r=   z4QueryTests.test_typeToMethodResult.<locals>.<lambda>m   s   ø€ ¸x€ r   r>   r?   rB   r   N)r+   r   rC   r   r:   ÚaddBothr9   rD   )r   rE   r:   ÚqueryDeferredÚresultrI   s        @r   Útest_typeToMethodResultz"QueryTests.test_typeToMethodResulte   sh   ø€ ô “8ˆÜ“>ˆØ!&Ó(GÐ HˆÔÜ˜>°Ô6ˆØ Ÿ™ u¨cÓ2ˆØˆØ×Ñ˜fŸm™mÔ,Ø×Ñ˜ 6¨!¡9Õ-r   c                 ó   — t        «       }i |_        t        dd¬«      }|j                  |d«      }g }|j	                  |j
                  «       | j                  |d   t        «       |d   j                  t        «       y)zÇ
        L{ResolverBase.query} returns a L{Deferred} which fails with
        L{NotImplementedError} when called with a query of a type not present in
        its C{typeToMethod} dictionary.
        r>   r7   r?   rB   r   N)
r   rC   r   r:   rJ   r9   ÚassertIsInstancer   ÚtrapÚNotImplementedError)r   rE   r:   rK   rL   s        r   Útest_unknownQueryTypez QueryTests.test_unknownQueryTypet   sk   € ô  “>ˆØ "ˆÔÜ˜>°Ô6ˆØ Ÿ™ u¨cÓ2ˆØˆØ×Ñ˜fŸm™mÔ,Ø×Ñ˜f Q™i¬Ô1Øˆq‰	�‰Ô*Õ+r   N)r-   r.   r/   r0   r5   rF   rM   rR   r1   r   r   r3   r3   L   s   „ ñò-ò;ò.ó,r   r3   N)r0   Úzope.interface.verifyr   Útwisted.internet.interfacesr   Útwisted.names.commonr   Útwisted.names.dnsr   r   r   r	   r
   r   Útwisted.names.errorr   r   r   r   r   r   Útwisted.python.failurer   Útwisted.trial.unittestr   r   r3   r1   r   r   ú<module>rZ      sJ   ðñõ
 .å 1Ý -ß O× O÷÷ õ +Ý 6ô/HÐ/ô /Hôd5,Ð$õ 5,r   