U
    
W[  ã                   @   sd   d Z ddlmZmZ ddl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 L{twisted.python.versions}.
é    )ÚdivisionÚabsolute_importN)ÚgetVersionStringÚIncomparableVersions)ÚVersion)Ú_inf)ÚSynchronousTestCasec                   @   sŒ   e 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d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!S )"ÚVersionsTestsc                 C   sŒ   t ddddƒ}t ddddƒ}|  ||k¡ |  ||k ¡ |  ||k¡ |  ||k¡ |  ||k¡ |  |t ddddƒk¡ |  ||k¡ dS )zB
        Versions can be compared for equality and order.
        Údummyé   r   N©r   Ú
assertTrue©ÚselfZvaZvb© r   úC/usr/lib/python3/dist-packages/twisted/python/test/test_versions.pyÚtest_versionComparison   s    z$VersionsTests.test_versionComparisonc                 C   s¤   t ddddƒ}t ddddƒ}|  ||k¡ |  ||k ¡ |  ||k¡ |  ||k¡ |  ||k¡ |  |t ddddƒk¡ |  |t ddddƒk¡ |  ||k¡ dS )zC
        Version packages are compared case insensitively.
        Ztwistedr   r   ÚTwistedZTWIStedNr   r   r   r   r   Ú%test_versionComparisonCaseInsensitive$   s    z3VersionsTests.test_versionComparisonCaseInsensitivec                 C   sL   t dddddd}t ddddƒ}|  ||k ¡ |  ||k¡ |  ||¡ dS )zP
        Prereleases are always less than versions without prereleases.
        Úwhateverr   r   ©Z
prereleaseN)r   r   ZassertFalseZassertNotEqualr   r   r   r   Ú%test_comparingPrereleasesWithReleases4   s
    z3VersionsTests.test_comparingPrereleasesWithReleasesc              
   C   s˜   t dddddd}t dddddd}|  ||k ¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  |t ddddddk¡ |  ||k¡ dS )zW
        The value specified as the prerelease is used in version comparisons.
        r   r   r   r   é   Nr   r   r   r   r   Útest_comparingPrereleases?   s    z'VersionsTests.test_comparingPrereleasesc                 C   s   |   tt¡ dS )zR
        L{_inf} is equal to L{_inf}.

        This is a regression test.
        N)ÚassertEqualr   ©r   r   r   r   Útest_infComparisonN   s    z VersionsTests.test_infComparisonc              
   C   s*   |   ttjtddddƒtddddƒ¡ dS )zO
        The package names of the Version objects need to be the same,
        r
   r   r   ZdumymN)ZassertRaisesr   ÚoperatorÚeqr   r   r   r   r   Útest_disallowBuggyComparisonsW   s
    ýz+VersionsTests.test_disallowBuggyComparisonsc                 C   s(   t ddddƒ}d}|  | |¡t¡ dS )zh
        Comparing a L{Version} to some other object type results in
        C{NotImplemented}.
        r
   r   r   )r
   r   r   r   N)r   r   Z__cmp__ÚNotImplementedr   r   r   r   Útest_notImplementedComparisonsa   s    z,VersionsTests.test_notImplementedComparisonsc                 C   s   |   ttddddƒƒd¡ dS )zu
        Calling C{repr} on a version returns a human-readable string
        representation of the version.
        r
   r   r   é   zVersion('dummy', 1, 2, 3)N©r   Úreprr   r   r   r   r   Ú	test_reprk   s    ÿzVersionsTests.test_reprc              
   C   s"   |   ttddddddƒd¡ dS )	z 
        Calling C{repr} on a version with a prerelease returns a human-readable
        string representation of the version including the prerelease.
        r
   r   r   r"   é   r   z.Version('dummy', 1, 2, 3, release_candidate=4)Nr#   r   r   r   r   Útest_reprWithPrereleaset   s    ÿz%VersionsTests.test_reprWithPrereleasec                 C   s   |   ttddddƒƒd¡ dS )zt
        Calling C{str} on a version returns a human-readable string
        representation of the version.
        r
   r   r   r"   z[dummy, version 1.2.3]N©r   Ústrr   r   r   r   r   Útest_str}   s    ÿzVersionsTests.test_strc              
   C   s"   |   ttddddddƒd¡ dS )zX
        Calling C{str} on a version with a prerelease includes the prerelease.
        r
   r   r   r   z[dummy, version 1.0.0rc1]Nr(   r   r   r   r   Útest_strWithPrerelease†   s    ÿz$VersionsTests.test_strWithPrereleasec                 C   s   |   tddddƒ ¡ d¡ d S )Nr
   r   r   r"   z1.2.3)r   r   Zshortr   r   r   r   Ú	testShortŽ   s    zVersionsTests.testShortc              	   C   s   |   dttddddƒƒ¡ dS )zr
        L{getVersionString} returns a string with the package name and the
        short version number.
        zTwisted 8.0.0r   é   r   N©r   r   r   r   r   r   r   Útest_getVersionString’   s     ÿz#VersionsTests.test_getVersionStringc              
   C   s"   |   ttddddddƒd¡ dS )zF
        L{getVersionString} includes the prerelease, if any.
        r   r-   r   r   r   zwhatever 8.0.0rc1Nr.   r   r   r   r   Ú#test_getVersionStringWithPrerelease›   s    þz1VersionsTests.test_getVersionStringWithPrereleasec                 C   s   |   tddddƒ ¡ d¡ dS )zY
        The L{base} method returns a very simple representation of the version.
        Úfoor   r   z1.0.0N©r   r   Úbaser   r   r   r   Ú	test_base¤   s    zVersionsTests.test_basec              	   C   s"   |   tdddddd ¡ d¡ dS )zQ
        The base version includes 'preX' for versions with prereleases.
        r1   r   r   r-   r   z1.0.0rc8Nr2   r   r   r   r   Útest_baseWithPrerelease«   s    ÿz%VersionsTests.test_baseWithPrereleaseN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r!   r%   r'   r*   r+   r,   r/   r0   r4   r5   r   r   r   r   r	      s    	

					r	   )Ú__doc__Z
__future__r   r   r   Ztwisted.python.versionsr   r   r   Zincrementalr   Ztwisted.trial.unittestr   ZTestCaser	   r   r   r   r   Ú<module>   s   