B
    ²ô`zE  ã               @   s\   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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   ÚassertEqualÚlocalÚshort)ÚselfÚva© r   úM/home/dcms/DCMS/lib/python3.7/site-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   Úvbr   r   r   Ú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¡ |  ||k¡ dS )z=
        Version package names are case insensitive.
        r
   r   r   ZDuMmYN)r   r   )r   r   r   r   r   r   Ú%test_versionComparisonCaseInsensitive(   s    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   ÚassertFalseÚassertNotEquals)r   r   r   r   r   r   Útest_comparingNEXTReleases6   s
    z(VersionsTests.test_comparingNEXTReleasesc          
   C   sà   |   t¡ tdddddddd W dQ R X |   t¡ tdddddddd W dQ R X |   t¡ tdddddddd W dQ R X |   t¡ tdddddddd W dQ R X |   t¡ tdddddddd W dQ R X dS )zR
        NEXT releases must always have the rest of the numbers set to 0.
        r   r   r   r   )r   r   r   N)ÚassertRaisesÚ
ValueErrorr   )r   r   r   r   Útest_NEXTMustBeAlone@   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assertEquals)r   r   r   r   r   r   Útest_comparingNEXTReleasesEqualS   s    z-VersionsTests.test_comparingNEXTReleasesEqualc             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.
        r   r   r   )Ú
prereleaseN)r   r   r   r    )r   r   r   r   r   r   Ú%test_comparingPrereleasesWithReleases[   s
    z3VersionsTests.test_comparingPrereleasesWithReleasesc             C   sH   t dddddd |  | jg¡}|  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   ÚflushWarningsÚtest_prereleaseDeprecatedr   Úlen)r   Úwarningsr   r   r   r*   e   s    
z'VersionsTests.test_prereleaseDeprecatedc             C   sN   t dddddd}|j |  | jg¡}|  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&   r)   Ú"test_prereleaseAttributeDeprecatedr   r+   )r   r   r,   r   r   r   r-   t   s    
z0VersionsTests.test_prereleaseAttributeDeprecatedc             C   sL   t dddddd}t ddddƒ}|  ||k ¡ |  ||k¡ |  ||¡ dS )zf
        Release Candidates are always less than versions without release
        candidates.
        r   r   r   )r   N)r   r   r   r    )r   r   r   r   r   r   Ú+test_comparingReleaseCandidatesWithReleases„   s
    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   N)r   r   r   r    )r   r   r   r   r   r   Ú&test_comparingPostReleasesWithReleases   s
    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   )r   N)r   r   r   r    )r   r   r   r   r   r   Ú1test_comparingDevReleasesWithPreviousPostReleasesš   s
    z?VersionsTests.test_comparingDevReleasesWithPreviousPostReleasesc             C   sL   t dddddd}t ddddƒ}|  ||k ¡ |  ||k¡ |  ||¡ dS )zR
        Dev releases are always less than versions without dev releases.
        r   r   r   )r   N)r   r   r   r    )r   r   r   r   r   r   Ú%test_comparingDevReleasesWithReleases¥   s
    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   )r   )r&   N)r   r   r   )r   r   r   r   r   r   Útest_rcEqualspre¯   s    zVersionsTests.test_rcEqualsprec          	   C   s.   |   t¡ tddddddd W dQ R X dS )zG
        Release Candidate and prerelease can't both be given.
        r   r   r   )r&   r   N)r"   r#   r   )r   r   r   r   Útest_rcOrpreButNotBoth¸   s    z$VersionsTests.test_rcOrpreButNotBothc          
   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 )zf
        The value specified as the release candidate is used in version
        comparisons.
        r   r   r   )r   r   N)r   r   )r   r   r   r   r   r   Útest_comparingReleaseCandidates¿   s    z-VersionsTests.test_comparingReleaseCandidatesc          
   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 )zX
        The value specified as the postrelease is used in version comparisons.
        r   r   r   )r   r   N)r   r   )r   r   r   r   r   r   Útest_comparingPostÎ   s    z VersionsTests.test_comparingPostc          
   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 )zX
        The value specified as the dev release is used in version comparisons.
        r   r   r   )r   r   N)r   r   )r   r   r   r   r   r   Útest_comparingDevÜ   s    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   N)r   r   )r   r   r   r   r   r   Útest_comparingDevAndRCê   s    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 )zv
        The value specified as the dev release and release candidate is used in
        version comparisons.
        r   r   r   )r   r   r   N)r   r   )r   r   r   r   r   r   Útest_comparingDevAndRCDifferentù   s    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__ÚNotImplemented)r   r   r   r   r   r   Útest_notImplementedComparisons  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   r   zVersion('dummy', 1, 2, 3)N)r   Úreprr   )r   r   r   r   Ú	test_repr$  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 as a
        release candidate..
        r
   r   r   r   é   )r&   z.Version('dummy', 1, 2, 3, release_candidate=4)N)r   r?   r   )r   r   r   r   Útest_reprWithPrerelease+  s    z%VersionsTests.test_reprWithPrereleasec          
   C   s"   |   ttddddddƒd¡ dS )	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   rA   )r   z.Version('dummy', 1, 2, 3, release_candidate=4)N)r   r?   r   )r   r   r   r   Útest_reprWithReleaseCandidate6  s    z+VersionsTests.test_reprWithReleaseCandidatec          
   C   s"   |   ttddddddƒd¡ dS )	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   rA   )r   z!Version('dummy', 1, 2, 3, post=4)N)r   r?   r   )r   r   r   r   Útest_reprWithPost@  s    zVersionsTests.test_reprWithPostc          
   C   s"   |   ttddddddƒd¡ dS )	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   rA   )r   z Version('dummy', 1, 2, 3, dev=4)N)r   r?   r   )r   r   r   r   Útest_reprWithDevJ  s    zVersionsTests.test_reprWithDevc             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_strT  s    zVersionsTests.test_strc          
   C   s"   |   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&   z[dummy, version 1.0.0.rc1]N)r   rF   r   )r   r   r   r   Útest_strWithPrerelease[  s    z$VersionsTests.test_strWithPrereleasec          
   C   s"   |   ttddddddƒd¡ dS )zn
        Calling C{str} on a version with a release candidate includes the
        release candidate.
        r
   r   r   )r   z[dummy, version 1.0.0.rc1]N)r   rF   r   )r   r   r   r   Útest_strWithReleaseCandidated  s    z*VersionsTests.test_strWithReleaseCandidatec          
   C   s"   |   ttddddddƒd¡ dS )zb
        Calling C{str} on a version with a postrelease includes the
        postrelease.
        r
   r   r   )r   z[dummy, version 1.0.0.post1]N)r   rF   r   )r   r   r   r   Útest_strWithPostn  s    zVersionsTests.test_strWithPostc             C   s$   |   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   )r   r   z[dummy, version 1.0.0.rc1.dev2]N)r   rF   r   )r   r   r   r   Ú"test_strWithDevAndReleaseCandidatew  s    z0VersionsTests.test_strWithDevAndReleaseCandidatec          
   C   s"   |   ttddddddƒd¡ dS )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]N)r   rF   r   )r   r   r   r   Útest_strWithDev  s    zVersionsTests.test_strWithDevc             C   s$   |   ttdddddddƒd¡ dS )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]N)r   rF   r   )r   r   r   r   Útest_strWithDevAndPostŠ  s    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—  s    z#VersionsTests.test_getVersionStringc          
   C   s"   |   ttddddddƒd¡ dS )ze
        L{getVersionString} includes the prerelease as a release candidate, if
        any.
        r   rO   r   r   )r&   zwhatever 8.0.0.rc1N)r   r   r   )r   r   r   r   Ú#test_getVersionStringWithPrereleasež  s    z1VersionsTests.test_getVersionStringWithPrereleasec          
   C   s"   |   ttddddddƒd¡ dS )zM
        L{getVersionString} includes the release candidate, if any.
        r   rO   r   r   )r   zwhatever 8.0.0.rc1N)r   r   r   )r   r   r   r   Ú)test_getVersionStringWithReleaseCandidate¨  s    z7VersionsTests.test_getVersionStringWithReleaseCandidatec          
   C   s"   |   ttddddddƒd¡ dS )zG
        L{getVersionString} includes the postrelease, if any.
        r   rO   r   r   )r   zwhatever 8.0.0.post1N)r   r   r   )r   r   r   r   Útest_getVersionStringWithPost±  s    z+VersionsTests.test_getVersionStringWithPostc          
   C   s"   |   ttddddddƒd¡ dS )zG
        L{getVersionString} includes the dev release, if any.
        r   rO   r   r   )r   zwhatever 8.0.0.dev1N)r   r   r   )r   r   r   r   Útest_getVersionStringWithDevº  s    z*VersionsTests.test_getVersionStringWithDevc             C   s$   |   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   rO   r   r   r   )r   r   zwhatever 8.0.0.rc2.dev1N)r   r   r   )r   r   r   r   Ú!test_getVersionStringWithDevAndRCÂ  s    z/VersionsTests.test_getVersionStringWithDevAndRCc             C   s$   |   ttdddddddƒd¡ dS )	z_
        L{getVersionString} includes the dev release and postrelease, if
        any.
        r   rO   r   r   r   )r   r   zwhatever 8.0.0.post2.dev1N)r   r   r   )r   r   r   r   Ú#test_getVersionStringWithDevAndPostÌ  s    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   Úbase)r   r   r   r   Útest_baseWithNEXTÖ  s    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.
        rW   r   r   z1.0.0N)r   r   rX   )r   r   r   r   Ú	test_baseÜ  s    zVersionsTests.test_basec          	   C   s"   |   tdddddd ¡ d¡ dS )zP
        The base version includes 'rcX' for versions with prereleases.
        rW   r   r   rO   )r&   z	1.0.0.rc8N)r   r   rX   )r   r   r   r   Útest_baseWithPrereleaseâ  s    z%VersionsTests.test_baseWithPrereleasec          	   C   s"   |   tdddddd ¡ d¡ dS )zS
        The base version includes 'postX' for versions with postreleases.
        rW   r   r   rO   )r   z1.0.0.post8N)r   r   rX   )r   r   r   r   Útest_baseWithPostè  s    zVersionsTests.test_baseWithPostc          	   C   s"   |   tdddddd ¡ d¡ dS )zR
        The base version includes 'devX' for versions with dev releases.
        rW   r   r   rO   )r   z
1.0.0.dev8N)r   r   rX   )r   r   r   r   Útest_baseWithDevî  s    zVersionsTests.test_baseWithDevc          	   C   s"   |   tdddddd ¡ d¡ dS )zP
        The base version includes 'rcX' for versions with prereleases.
        rW   r   r   rO   )r   z	1.0.0.rc8N)r   r   rX   )r   r   r   r   Útest_baseWithReleaseCandidateô  s    z+VersionsTests.test_baseWithReleaseCandidatec          
   C   s$   |   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.
        rW   r   r   r   rO   )r   r   z1.0.0.rc2.dev8N)r   r   rX   )r   r   r   r   Útest_baseWithDevAndRCü  s    z#VersionsTests.test_baseWithDevAndRCc          
   C   s$   |   tddddddd ¡ d¡ dS )	zq
        The base version includes 'postXdevX' for versions with dev releases
        and a postrelease.
        rW   r   r   r   rO   )r   r   z1.0.0.post2.dev8N)r   r   rX   )r   r   r   r   Útest_baseWithDevAndPost  s    z%VersionsTests.test_baseWithDevAndPostN)6Ú__name__Ú
__module__Ú__qualname__r   r   r   r!   r$   r%   r'   r*   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r<   r>   r@   rB   rC   rD   rE   rG   rH   rI   rJ   rK   rL   rM   rN   rP   rQ   rR   rS   rT   rU   rV   rY   rZ   r[   r\   r]   r^   r_   r`   r   r   r   r   r	      sf   


		


	
	
	

		

	r	   )Ú__doc__Ú
__future__r   r   r:   Úincrementalr   r   r   r   Ztwisted.trial.unittestr   r	   r   r   r   r   Ú<module>   s   