U
    
W[©  ã                   @   sL   d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	 G dd„ deƒZ
dS )	z?
Tests for generic file descriptor based reactor support code.
é    )ÚdivisionÚabsolute_import)ÚTestCase)ÚisIPAddress)ÚAF_IPXc                   @   s`   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚAddressTestsz2
    Tests for address-related functionality.
    c                 C   s    |   tdƒ¡ |   tdƒ¡ dS )zx
        L{isIPAddress} should return C{True} for any decimal dotted
        representation of an IPv4 address.
        z0.1.2.3ú252.253.254.255N)Ú
assertTruer   ©Úself© r   ú</usr/lib/python3/dist-packages/twisted/test/test_abstract.pyÚtest_decimalDotted   s    zAddressTests.test_decimalDottedc                 C   s<   |   tdƒ¡ |   tdƒ¡ |   tdƒ¡ |   tdƒ¡ dS )zˆ
        L{isIPAddress} should return C{False} for a dotted decimal
        representation with fewer or more than four octets.
        Ú0z0.1z0.1.2z	0.1.2.3.4N©ÚassertFalser   r
   r   r   r   Útest_shortDecimalDotted   s    z$AddressTests.test_shortDecimalDottedc                 C   s    |   tdƒ¡ |   tdƒ¡ dS )z|
        L{isIPAddress} should return C{False} for any non-decimal dotted
        representation including letters.
        za.2.3.4z1.b.3.4Nr   r
   r   r   r   Útest_invalidLetters)   s    z AddressTests.test_invalidLettersc                 C   s<   |   tdƒ¡ |   tdƒ¡ |   tdƒ¡ |   tdƒ¡ dS )zl
        L{isIPAddress} should return C{False} for a string containing
        strange punctuation.
        ú,z1,2z1,2,3z1.,.3,4Nr   r
   r   r   r   Útest_invalidPunctuation2   s    z$AddressTests.test_invalidPunctuationc                 C   s   |   tdƒ¡ dS )zM
        L{isIPAddress} should return C{False} for the empty string.
        Ú Nr   r
   r   r   r   Útest_emptyString=   s    zAddressTests.test_emptyStringc                 C   s<   |   tdƒ¡ |   tdƒ¡ |   tdƒ¡ |   tdƒ¡ dS )zT
        L{isIPAddress} should return C{False} for negative decimal values.
        z-1z1.-2z1.2.-3z1.2.-3.4Nr   r
   r   r   r   Útest_invalidNegativeD   s    z!AddressTests.test_invalidNegativec                 C   sJ   |   tdƒ¡ |   tdƒ¡ |   tdƒ¡ |   tdƒ¡ |   tdƒ¡ dS )z
        L{isIPAddress} should return C{False} for a string containing
        positive decimal values greater than 255.
        ú	256.0.0.0z	0.256.0.0z	0.0.256.0z	0.0.0.256z256.256.256.256Nr   r
   r   r   r   Útest_invalidPositiveN   s
    z!AddressTests.test_invalidPositivec                 C   s<   |   tdƒ¡ |   tdƒ¡ |  tdƒ¡ |  tdƒ¡ dS )zO
        L{isIPAddress} evaluates ASCII-encoded bytes as well as text.
        s	   256.0.0.0r   s   252.253.254.255r   N)r   r   r	   r
   r   r   r   Útest_unicodeAndBytesZ   s    z!AddressTests.test_unicodeAndBytesc                 C   s   |   ttdt¡ dS )z|
        All address families other than C{AF_INET} and C{AF_INET6} result in a
        L{ValueError} being raised.
        s   anythingN)ZassertRaisesÚ
ValueErrorr   r   r
   r   r   r   Útest_nonIPAddressFamilyd   s    z$AddressTests.test_nonIPAddressFamilyc                 C   s    |   tdƒ¡ |   tdƒ¡ dS )zt
        All IP addresses must be encodable as ASCII; non-ASCII should result in
        a L{False} result.
        s
   ÿ.notasciiu   äŒ¡.notasciiNr   r
   r   r   r   Útest_nonASCIIl   s    zAddressTests.test_nonASCIIN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s   		

r   N)r"   Z
__future__r   r   Ztwisted.trial.unittestr   Ztwisted.internet.abstractr   Zsocketr   r   r   r   r   r   Ú<module>   s
   