o
    êbAE  ã                   @   sd   d Z ddlmZmZ ddlZddlZddlmZmZ ddlm	Z	m
Z
 ddlmZ G dd„ deƒZdS )	z
Tests for L{incremental}.
é    )ÚdivisionÚabsolute_importN)ÚgetVersionStringÚIncomparableVersions)ÚVersionÚ_inf)ÚTestCasec                   @   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!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGdH„ Z&dIdJ„ Z'dKdL„ Z(dMdN„ Z)dOdP„ Z*dQdR„ Z+dSdT„ Z,dUdV„ Z-dWdX„ Z.dYdZ„ Z/d[d\„ Z0d]d^„ Z1d_d`„ Z2dadb„ Z3dcdd„ Z4dedf„ Z5dgS )hÚVersionsTestsc              	   C   s.   t dddddddd}|  | ¡ | ¡ ¡ dS )zE
        The local version is the same as the short version.
        Údummyé   r   é   é   ©Úrelease_candidateÚpostÚdevN)r   ÚassertEqualZlocalÚshort)ÚselfÚva© r   ú@/usr/lib/python3/dist-packages/incremental/tests/test_version.pyÚtest_localIsShort   s   zVersionsTests.test_localIsShortc                 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.
        r
   r   r   N©r   Ú
assertTrue©r   r   Zvbr   r   r   Útest_versionComparison   ó   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¡ |  ||k¡ dS )z=
        Version package names are case insensitive.
        r
   r   r   ZDuMmYNr   r   r   r   r   Ú%test_versionComparisonCaseInsensitive)   r   z3VersionsTests.test_versionComparisonCaseInsensitivec                 C   sH   t ddddƒ}t ddddƒ}|  ||k¡ |  ||k ¡ |  ||¡ dS )zI
        NEXT releases are always larger than numbered releases.
        ÚwhateverÚNEXTr   r   N©r   r   ÚassertFalseZassertNotEqualsr   r   r   r   Útest_comparingNEXTReleases7   s
   z(VersionsTests.test_comparingNEXTReleasesc              
   C   sF  |   t¡ tdddddddd W d  ƒ n1 sw   Y  |   t¡ tdddddddd W d  ƒ n1 s;w   Y  |   t¡ tdddddddd W d  ƒ n1 s[w   Y  |   t¡ tdddddddd W d  ƒ n1 s{w   Y  |   t¡ tdddddddd W d  ƒ dS 1 sœw   Y  dS )zR
        NEXT releases must always have the rest of the numbers set to 0.
        r   r    r   r   r   N©ÚassertRaisesÚ
ValueErrorr   ©r   r   r   r   Útest_NEXTMustBeAloneA   s   ÿÿÿÿ"ÿz"VersionsTests.test_NEXTMustBeAlonec                 C   s,   t ddddƒ}t ddddƒ}|  ||¡ dS )z8
        NEXT releases are equal to each other.
        r   r    r   N)r   ZassertEqualsr   r   r   r   Útest_comparingNEXTReleasesEqualT   s   z-VersionsTests.test_comparingNEXTReleasesEqualc                 C   óL   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.
        r   r   r   ©Ú
prereleaseNr!   r   r   r   r   Ú%test_comparingPrereleasesWithReleases\   ó
   z3VersionsTests.test_comparingPrereleasesWithReleasesc                 C   sB   t dddddd |  ¡ }|  t|ƒd¡ |  |d d d¡ dS )z@
        Passing 'prerelease' to Version is deprecated.
        r   r   r   r+   ÚmessagezvPassing prerelease to incremental.Version was deprecated in Incremental 16.9.0. Please pass release_candidate instead.N)r   ÚflushWarningsr   Úlen)r   Úwarningsr   r   r   Útest_prereleaseDeprecatedf   s   
ýz'VersionsTests.test_prereleaseDeprecatedc                 C   sH   t dddddd}|j |  ¡ }|  t|ƒd¡ |  |d d d¡ dS )zD
        Accessing 'prerelease' on a Version is deprecated.
        r   r   r   ©r   r/   zuAccessing incremental.Version.prerelease was deprecated in Incremental 16.9.0. Use Version.release_candidate instead.N)r   r,   r0   r   r1   )r   r   r2   r   r   r   Ú"test_prereleaseAttributeDeprecatedu   s   
ýz0VersionsTests.test_prereleaseAttributeDeprecatedc                 C   r*   )zf
        Release Candidates are always less than versions without release
        candidates.
        r   r   r   r4   Nr!   r   r   r   r   Ú+test_comparingReleaseCandidatesWithReleases…   ó
   z9VersionsTests.test_comparingReleaseCandidatesWithReleasesc                 C   sL   t dddddd}t ddddƒ}|  ||k¡ |  ||k ¡ |  ||¡ dS )z_
        Post releases are always greater than versions without post
        releases.
        r   r   r   ©r   Nr!   r   r   r   r   Ú&test_comparingPostReleasesWithReleases   r7   z4VersionsTests.test_comparingPostReleasesWithReleasesc                 C   sP   t dddddd}t dddddd}|  ||k¡ |  ||k ¡ |  ||¡ dS )zg
        Dev releases are always greater than postreleases based on previous
        releases.
        r   r   r   ©r   r8   Nr!   r   r   r   r   Ú1test_comparingDevReleasesWithPreviousPostReleases›   s
   z?VersionsTests.test_comparingDevReleasesWithPreviousPostReleasesc                 C   r*   )zR
        Dev releases are always less than versions without dev releases.
        r   r   r   r:   Nr!   r   r   r   r   Ú%test_comparingDevReleasesWithReleases¦   r.   z3VersionsTests.test_comparingDevReleasesWithReleasesc                 C   sD   t dddddd}t dddddd}|  ||k¡ |  ||k¡ dS )z>
        Release Candidates are equal to prereleases.
        r   r   r   r4   r+   N)r   r   r"   r   r   r   r   Útest_rcEqualspre°   s   zVersionsTests.test_rcEqualsprec              	   C   sD   |   t¡ tddddddd W d  ƒ dS 1 sw   Y  dS )zG
        Release Candidate and prerelease can't both be given.
        r   r   r   )r,   r   Nr$   r'   r   r   r   Útest_rcOrpreButNotBoth¹   s   "ÿz$VersionsTests.test_rcOrpreButNotBothc              
   C   ó˜   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 )zf
        The value specified as the release candidate is used in version
        comparisons.
        r   r   r   r4   r   Nr   r   r   r   r   Útest_comparingReleaseCandidatesÀ   s   z-VersionsTests.test_comparingReleaseCandidatesc              
   C   r?   )zX
        The value specified as the postrelease is used in version comparisons.
        r   r   r   r8   r   Nr   r   r   r   r   Útest_comparingPostÏ   ó   z VersionsTests.test_comparingPostc              
   C   r?   )zX
        The value specified as the dev release is used in version comparisons.
        r   r   r   r:   r   Nr   r   r   r   r   Útest_comparingDevÝ   rB   zVersionsTests.test_comparingDevc                 C   sž   t ddddddd}t ddddddd}|  ||k ¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  |t dddddddk¡ |  ||k¡ dS ©zv
        The value specified as the dev release and release candidate is used in
        version comparisons.
        r   r   r   ©r   r   r   Nr   r   r   r   r   Útest_comparingDevAndRCë   ó   z$VersionsTests.test_comparingDevAndRCc                 C   sž   t ddddddd}t ddddddd}|  ||k ¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  |t dddddddk¡ |  ||k¡ dS rD   r   r   r   r   r   Útest_comparingDevAndRCDifferentú   rG   z-VersionsTests.test_comparingDevAndRCDifferentc                 C   s   |   tt¡ dS )zR
        L{_inf} is equal to L{_inf}.

        This is a regression test.
        N)r   r   r'   r   r   r   Útest_infComparison	  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)r%   r   ÚoperatorÚeqr   r'   r   r   r   Útest_disallowBuggyComparisons  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_notImplementedComparisons  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   r   zVersion('dummy', 1, 2, 3)N©r   Úreprr   r'   r   r   r   Ú	test_repr%  ó   zVersionsTests.test_reprc              
   C   ó"   |   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 as a
        release candidate..
        r
   r   r   r   é   r+   ú.Version('dummy', 1, 2, 3, release_candidate=4)NrP   r'   r   r   r   Útest_reprWithPrerelease,  s   þz%VersionsTests.test_reprWithPrereleasec              
   C   rT   )	zŸ
        Calling C{repr} on a version with a release candidate returns a
        human-readable string representation of the version including the rc.
        r
   r   r   r   rU   r4   rV   NrP   r'   r   r   r   Útest_reprWithReleaseCandidate7  ó   þz+VersionsTests.test_reprWithReleaseCandidatec              
   C   rT   )	zª
        Calling C{repr} on a version with a postrelease returns a
        human-readable string representation of the version including the
        postrelease.
        r
   r   r   r   rU   r8   z!Version('dummy', 1, 2, 3, post=4)NrP   r'   r   r   r   Útest_reprWithPostA  ó   ÿzVersionsTests.test_reprWithPostc              
   C   rT   )	zª
        Calling C{repr} on a version with a dev release returns a
        human-readable string representation of the version including the dev
        release.
        r
   r   r   r   rU   r:   z Version('dummy', 1, 2, 3, dev=4)NrP   r'   r   r   r   Útest_reprWithDevK  r[   zVersionsTests.test_reprWithDevc                 C   rO   )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_strU  rS   zVersionsTests.test_strc              
   C   ó"   |   ttddddddƒd¡ dS )zw
        Calling C{str} on a version with a prerelease includes the prerelease
        as a release candidate.
        r
   r   r   r+   ú[dummy, version 1.0.0.rc1]Nr]   r'   r   r   r   Útest_strWithPrerelease\  ó   ÿz$VersionsTests.test_strWithPrereleasec              
   C   r`   )zn
        Calling C{str} on a version with a release candidate includes the
        release candidate.
        r
   r   r   r4   ra   Nr]   r'   r   r   r   Útest_strWithReleaseCandidatee  rY   z*VersionsTests.test_strWithReleaseCandidatec              
   C   r`   )zb
        Calling C{str} on a version with a postrelease includes the
        postrelease.
        r
   r   r   r8   z[dummy, version 1.0.0.post1]Nr]   r'   r   r   r   Útest_strWithPosto  rc   zVersionsTests.test_strWithPostc                 C   ó$   |   ttdddddddƒd¡ dS )z’
        Calling C{str} on a version with a release candidate and dev release
        includes the release candidate and the dev release.
        r
   r   r   r   rE   z[dummy, version 1.0.0.rc1.dev2]Nr]   r'   r   r   r   Ú"test_strWithDevAndReleaseCandidatex  ó   þz0VersionsTests.test_strWithDevAndReleaseCandidatec              
   C   r`   )zb
        Calling C{str} on a version with a dev release includes the dev
        release.
        r
   r   r   r:   z[dummy, version 1.0.0.dev1]Nr]   r'   r   r   r   Útest_strWithDev‚  rc   zVersionsTests.test_strWithDevc                 C   rf   )z†
        Calling C{str} on a version with a postrelease and dev release
        includes the postrelease and the dev release.
        r
   r   r   r   ©r   r   z![dummy, version 1.0.0.post1.dev2]Nr]   r'   r   r   r   Útest_strWithDevAndPost‹  rh   z$VersionsTests.test_strWithDevAndPostc                 C   s   |   tddddƒ ¡ d¡ d S )Nr
   r   r   r   z1.2.3)r   r   r   r'   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.0ZTwistedé   r   N©r   r   r   r'   r   r   r   Útest_getVersionString˜  rS   z#VersionsTests.test_getVersionStringc              
   C   ó"   |   ttddddddƒd¡ dS )ze
        L{getVersionString} includes the prerelease as a release candidate, if
        any.
        r   rm   r   r   r+   úwhatever 8.0.0.rc1Nrn   r'   r   r   r   Ú#test_getVersionStringWithPrereleaseŸ  rY   z1VersionsTests.test_getVersionStringWithPrereleasec              
   C   rp   )zM
        L{getVersionString} includes the release candidate, if any.
        r   rm   r   r   r4   rq   Nrn   r'   r   r   r   Ú)test_getVersionStringWithReleaseCandidate©  ó   þz7VersionsTests.test_getVersionStringWithReleaseCandidatec              
   C   rp   )zG
        L{getVersionString} includes the postrelease, if any.
        r   rm   r   r   r8   zwhatever 8.0.0.post1Nrn   r'   r   r   r   Útest_getVersionStringWithPost²  rt   z+VersionsTests.test_getVersionStringWithPostc              
   C   rp   )zG
        L{getVersionString} includes the dev release, if any.
        r   rm   r   r   r:   zwhatever 8.0.0.dev1Nrn   r'   r   r   r   Útest_getVersionStringWithDev»  ó   ÿz*VersionsTests.test_getVersionStringWithDevc                 C   ó$   |   ttdddddddƒd¡ dS )	ze
        L{getVersionString} includes the dev release and release candidate, if
        any.
        r   rm   r   r   r   rE   zwhatever 8.0.0.rc2.dev1Nrn   r'   r   r   r   Ú!test_getVersionStringWithDevAndRCÃ  rh   z/VersionsTests.test_getVersionStringWithDevAndRCc                 C   rx   )	z_
        L{getVersionString} includes the dev release and postrelease, if
        any.
        r   rm   r   r   r   rj   zwhatever 8.0.0.post2.dev1Nrn   r'   r   r   r   Ú#test_getVersionStringWithDevAndPostÍ  rh   z1VersionsTests.test_getVersionStringWithDevAndPostc                 C   s   |   tddddƒ ¡ d¡ dS )zX
        The C{base} method returns just "NEXT" when NEXT is the major version.
        Úfoor    r   N©r   r   Úbaser'   r   r   r   Útest_baseWithNEXT×  ó   zVersionsTests.test_baseWithNEXTc                 C   s   |   tddddƒ ¡ d¡ dS )zY
        The C{base} method returns a very simple representation of the version.
        r{   r   r   z1.0.0Nr|   r'   r   r   r   Ú	test_baseÝ  r   zVersionsTests.test_basec              	   C   ó"   |   tdddddd ¡ d¡ dS )úP
        The base version includes 'rcX' for versions with prereleases.
        r{   r   r   rm   r+   ú	1.0.0.rc8Nr|   r'   r   r   r   Útest_baseWithPrereleaseã  ó   "z%VersionsTests.test_baseWithPrereleasec              	   C   r   )zS
        The base version includes 'postX' for versions with postreleases.
        r{   r   r   rm   r8   z1.0.0.post8Nr|   r'   r   r   r   Útest_baseWithPosté  r…   zVersionsTests.test_baseWithPostc              	   C   r   )zR
        The base version includes 'devX' for versions with dev releases.
        r{   r   r   rm   r:   z
1.0.0.dev8Nr|   r'   r   r   r   Útest_baseWithDevï  r…   zVersionsTests.test_baseWithDevc              	   C   r   )r‚   r{   r   r   rm   r4   rƒ   Nr|   r'   r   r   r   Útest_baseWithReleaseCandidateõ  rw   z+VersionsTests.test_baseWithReleaseCandidatec              
   C   ó$   |   tddddddd ¡ d¡ dS )	zu
        The base version includes 'rcXdevX' for versions with dev releases and
        a release candidate.
        r{   r   r   r   rm   rE   z1.0.0.rc2.dev8Nr|   r'   r   r   r   Útest_baseWithDevAndRCý  ó   ÿz#VersionsTests.test_baseWithDevAndRCc              
   C   r‰   )	zq
        The base version includes 'postXdevX' for versions with dev releases
        and a postrelease.
        r{   r   r   r   rm   rj   z1.0.0.post2.dev8Nr|   r'   r   r   r   Útest_baseWithDevAndPost  r‹   z%VersionsTests.test_baseWithDevAndPostN)6Ú__name__Ú
__module__Ú__qualname__r   r   r   r#   r(   r)   r-   r3   r5   r6   r9   r;   r<   r=   r>   r@   rA   rC   rF   rH   rI   rL   rN   rR   rW   rX   rZ   r\   r_   rb   rd   re   rg   ri   rk   rl   ro   rr   rs   ru   rv   ry   rz   r~   r€   r„   r†   r‡   rˆ   rŠ   rŒ   r   r   r   r   r	      sh    


		


	
	
	

		

	r	   )Ú__doc__Z
__future__r   r   rJ   ZunittestZincrementalr   r   r   r   Ztwisted.trial.unittestr   r	   r   r   r   r   Ú<module>   s   