
    Ϫf                     R    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e
      Zy)z'
Tests for L{twisted.python.versions}.
    N)_inf)IncomparableVersionsVersiongetVersionString)SynchronousTestCasec                       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y)VersionsTestsNc           	      l   t        dddd      }t        dddd      }| j                  ||kD         | j                  ||k         | j                  ||k\         | j                  ||k         | j                  ||k7         | j                  |t        dddd      k(         | j                  ||k(         y)zB
        Versions can be compared for equality and order.
        dummy   r   Nr   
assertTrueselfvavbs      C/usr/lib/python3/dist-packages/twisted/python/test/test_versions.pytest_versionComparisonz$VersionsTests.test_versionComparison   s     WaA&WaA&R R b!b!b!ggq!Q778b!    c           	         t        dddd      }t        dddd      }| j                  ||kD         | j                  ||k         | j                  ||k\         | j                  ||k         | j                  ||k7         | j                  |t        dddd      k(         | j                  |t        dddd      k(         | j                  ||k(         y)zC
        Version packages are compared case insensitively.
        twistedr   r   TwistedTWIStedNr   r   s      r   %test_versionComparisonCaseInsensitivez3VersionsTests.test_versionComparisonCaseInsensitive    s     Y1a(Y1a(R R b!b!b!giAq99:giAq99:b!r   c                     t        ddddd      }t        dddd      }| j                  ||k         | j                  ||kD         | j                  ||       y)zP
        Prereleases are always less than versions without prereleases.
        whateverr   r   
prereleaseN)r   r   assertFalseassertNotEqualr   s      r   %test_comparingPrereleasesWithReleasesz3VersionsTests.test_comparingPrereleasesWithReleases/   sX     ZAqQ7ZAq)R b!B#r   c           
      x   t        ddddd      }t        ddddd      }| j                  ||k         | j                  ||kD         | j                  ||k         | j                  ||k\         | j                  ||k7         | j                  |t        ddddd      k(         | j                  ||k(         y)zW
        The value specified as the prerelease is used in version comparisons.
        r   r   r   r      Nr   r   s      r   test_comparingPrereleasesz'VersionsTests.test_comparingPrereleases9   s     ZAqQ7ZAqQ7R R b!b!b!gj!QaHHIb!r   c                 8    | j                  t        t               y)zR
        L{_inf} is equal to L{_inf}.

        This is a regression test.
        N)assertEqualr   r   s    r   test_infComparisonz VersionsTests.test_infComparisonG   s     	t$r   c                     | j                  t        t        j                  t	        dddd      t	        dddd             y)zO
        The package names of the Version objects need to be the same,
        r   r   r   dumymN)assertRaisesr   operatoreqr   r'   s    r   test_disallowBuggyComparisonsz+VersionsTests.test_disallowBuggyComparisonsO   s8     	 KKGQ1%GQ1%		
r   c                 r    t        dddd      }d}|j                  |      }| j                  |t               y)zh
        Comparing a L{Version} to some other object type results in
        C{NotImplemented}.
        r   r   r   )r   r   r   r   N)r   __cmp__r&   NotImplemented)r   r   r   results       r   test_notImplementedComparisonsz,VersionsTests.test_notImplementedComparisonsZ   s6    
 WaA&B0r   c           
      R    | j                  t        t        dddd            d       y)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'   s    r   	test_reprzVersionsTests.test_reprd   s%    
 	ggq!Q78:UVr   c                 V    | j                  t        t        ddddd            d       y)	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#   r5      r   z.Version('dummy', 1, 2, 3, release_candidate=4)Nr6   r'   s    r   test_reprWithPrereleasez%VersionsTests.test_reprWithPrereleasek   s*    
 	!Qa89<	
r   c           
      R    | j                  t        t        dddd            d       y)zt
        Calling C{str} on a version returns a human-readable string
        representation of the version.
        r   r   r#   r5   z[dummy, version 1.2.3]Nr&   strr   r'   s    r   test_strzVersionsTests.test_stru   s%    
 	WWaA679QRr   c                 V    | j                  t        t        ddddd            d       y)zX
        Calling C{str} on a version with a prerelease includes the prerelease.
        r   r   r   r   z[dummy, version 1.0.0.rc1]Nr=   r'   s    r   _test_strWithPrereleasez%VersionsTests._test_strWithPrerelease|   s*     	AqQ78:V	
r   c                 \    | j                  t        dddd      j                         d       y )Nr   r   r#   r5   z1.2.3)r&   r   shortr'   s    r   	testShortzVersionsTests.testShort   s&    !Q288:GDr   c                 R    | j                  dt        t        dddd                   y)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'   s    r   test_getVersionStringz#VersionsTests.test_getVersionString   s'    
 	*:79aQRTU;V*WXr   c                 V    | j                  t        t        ddddd            d       y)zF
        L{getVersionString} includes the prerelease, if any.
        r   rF   r   r   r   zwhatever 8.0.0.rc1NrG   r'   s    r   $_test_getVersionStringWithPrereleasez2VersionsTests._test_getVersionStringWithPrerelease   s*     	WZAqQGH 	
r   c                 \    | j                  t        dddd      j                         d       y)zY
        The L{base} method returns a very simple representation of the version.
        foor   r   z1.0.0Nr&   r   baser'   s    r   	test_basezVersionsTests.test_base   s(     	1a0557Ar   c           	      `    | j                  t        ddddd      j                         d       y)zQ
        The base version includes 'preX' for versions with prereleases.
        rL   r   r   rF   r   z	1.0.0.rc8NrM   r'   s    r   _test_baseWithPrereleasez&VersionsTests._test_baseWithPrerelease   s*     	1aA>CCE{Sr   )returnN)__name__
__module____qualname__r   r   r!   r$   r(   r.   r3   r8   r;   r?   rA   rD   rH   rJ   rO   rQ    r   r   r	   r	      sX    ""$"%	
1W
S
EY
BTr   r	   )__doc__r,   incrementalr   twisted.python.versionsr   r   r   twisted.trial.unittestr   TestCaser	   rV   r   r   <module>r\      s+   
   S S BPTH PTr   