o
    ‹Ífv  ã                   @   sL   d Z ddlZddlmZ ddlmZmZmZ ddlm	Z
 G dd„ de
ƒZdS )z'
Tests for L{twisted.python.versions}.
é    N)Ú_inf)ÚIncomparableVersionsÚVersionÚgetVersionString)Ú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©ÚselfÚvaÚ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.
        Útwistedr	   r   ÚTwistedÚ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   ©Ú
prereleaseN)r   r   ÚassertFalseÚassertNotEqualr   r   r   r   Ú%test_comparingPrereleasesWithReleases/   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_comparingPrereleases9   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_infComparisonG   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   ÚdumymN)ÚassertRaisesr   ÚoperatorÚeqr   r    r   r   r   Útest_disallowBuggyComparisonsO   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   Ú__cmp__ÚNotImplementedr   r   r   r   Útest_notImplementedComparisonsZ   s   z,VersionsTests.test_notImplementedComparisonsc                 C   ó   |   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_reprc   ó   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_reprWithPrereleasej   s   þz%VersionsTests.test_reprWithPrereleasec                 C   r*   )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_strt   r/   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.0.rc1]Nr2   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   Ú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†   r/   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   r8   r   r	   r   zwhatever 8.0.0.rc1Nr9   r    r   r   r   Ú$_test_getVersionStringWithPrerelease   s   þz2VersionsTests._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.
        r<   r	   r   r8   r   z	1.0.0.rc8Nr=   r    r   r   r   Ú_test_baseWithPrereleaseœ   s   "z&VersionsTests._test_baseWithPrereleaseN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r!   r&   r)   r.   r1   r4   r5   r7   r:   r;   r?   r@   r   r   r   r   r      s"    
	
	r   )Ú__doc__r$   Úincrementalr   Útwisted.python.versionsr   r   r   Útwisted.trial.unittestr   ÚTestCaser   r   r   r   r   Ú<module>   s   