U
     T‚g!  ã                   @  sb   d dl mZ d dlmZmZ d dlmZmZ d dlm	Z	 d dl
mZ edƒZG dd„ dejƒZd	S )
é    )Úannotations)ÚCallableÚIterable)ÚConcatenateÚ	ParamSpec)Ú
formmethod)ÚunittestÚ_Pc                   @  s¾   e Zd Zdddddddœdd	„Zdd
œdd„Zdd
œdd„Zdd
œdd„Zdd
œdd„Zdd
œdd„Zdd
œdd„Z	dd
œdd„Z
dd
œdd„Zdd
œdd„Zdd
œdd„Zdd
œdd „Zd!S )"ÚArgumentTestsz3Callable[Concatenate[str, _P], formmethod.Argument]zIterable[tuple[object, object]]zIterable[object]z_P.argsz	_P.kwargsÚNone)ÚargKlassÚ	testPairsÚ	badValuesÚargsÚkwargsÚreturnc           	      O  sN   |d|ž|Ž}|D ]\}}|   | |¡|¡ q|D ]}|  tj|j|¡ q2d S )NÚname)r   )ÚassertEqualÚcoerceÚassertRaisesr   Ú
InputError)	Úselfr   r   r   r   r   ÚargÚvalÚresult© r   ú@/tmp/pip-unpacked-wheel-1_7di8ic/twisted/test/test_formmethod.pyÚargTest   s
    zArgumentTests.argTest)r   c                 C  s   t  d¡}|  t|jd¡ dS )zG
        Test that corce correctly raises NotImplementedError.
        r   Ú N)r   ZArgumentr   ÚNotImplementedErrorr   )r   r   r   r   r   Útest_argument"   s    
zArgumentTests.test_argumentc                 C  sd   |   tjdddgd¡ | j tjddgddd	� | j tjddgd
dd� | j tjddgdddd� d S )N©Úar"   )é   Ú1©r   r   r   ©Úabr'   )Úabcr(   )Ú2r   é   )Úmin)Ú223213Z345xé   )Úmax)Úaddr/   )r,   Úx©r+   r.   )r   r   ÚString©r   r   r   r   Ú
testString)   s(       ÿ   ÿûzArgumentTests.testStringc                 C  s2   |   tjdddgd¡ | j tjddgddd� d S )N)Ú3r-   )z-2éþÿÿÿ©r   N)Úqú2.3)r8   r9   r   r   ©Z	allowNone)r   r   ZIntegerr3   r   r   r   ÚtestInt9   s      ÿ   ÿzArgumentTests.testIntc                 C  s2   |   tjdddgd¡ | j tjddgddd� d S )N)r5   g      @)z-2.3gffffffÀr7   )r8   ú2.3z)r8   r<   r   r   r:   )r   r   ZFloatr3   r   r   r   Ú	testFloatA   s      ÿüzArgumentTests.testFloatc                 C  s$   ddg}| j tjddgd|d� d S )N©r"   Úapplezan apple©ÚbÚbananaZook)r"   r?   )rA   rB   )Úcr#   )Úchoices)r   r   ZChoice)r   rD   r   r   r   Ú
testChoiceL   s    üzArgumentTests.testChoicec                 C  sB   ddg}| j tjdgdgfddgddgfgddgdgf|d	� d S )
Nr>   r@   r"   r?   rA   rB   rC   Zfdfs)Úflags)r   r   ZFlags)r   rF   r   r   r   Ú	testFlagsU   s    üzArgumentTests.testFlagsc                 C  s    ddddg}|   tj|d¡ d S )N)Úyesr#   )r   r   )ÚFalser   )Únor   r   )r   r   ÚBoolean)r   Útestsr   r   r   ÚtestBoolean^   s    zArgumentTests.testBooleanc                 C  sP   t jddd�}|  | d¡d¡ |  t j|jd¡ t  d¡}|  | d¡¡ dS )z>
        Test the correctness of the coerce function.
        r   r   r:   Z	somethingN)r   ZFiler   r   r   r   ZassertIsNone)r   r   Zarg2r   r   r   Ú	test_fileb   s
    
zArgumentTests.test_filec                 C  s4   ddd dœ  ¡ }dddddd	g}|  tj||¡ d S )
N)iÒ  é   é   )iÌ  r*   é   ))Ú2002Ú12Z21)Z1996r)   Ú29)r   r   r   )rR   r)   rT   )Zxxr)   r5   )rR   Ú13r$   )Z1999rS   Z32)rR   r$   )rR   r)   r5   Ú4)Úitemsr   r   ÚDate©r   Z	goodTestsZbadTestsr   r   r   ÚtestDatel   s    ý
úzArgumentTests.testDatec                 C  s6   ddddœ  ¡ }ddddd	g}|  tj||dd¡ d S )
Nr   rO   r-   )Ú0rS   r5   z-1r0   rU   z-2000z3.4)rW   r   r   ZIntegerRangerY   r   r   r   ÚtestRangedInteger|   s    zArgumentTests.testRangedIntegerc                 C  s8   dddœ  ¡ }dddddd	g}| jtj||d
dd� d S )NÚfoor'   ))r]   r]   r&   )r'   r"   )Ú12345r^   r%   r!   )r"   )r"   r"   r"   r*   é   r1   )rW   r   r   ZVerifiedPasswordrY   r   r   r   ÚtestVerifiedPassword�   s    úz"ArgumentTests.testVerifiedPasswordN)Ú__name__Ú
__module__Ú__qualname__r   r    r4   r;   r=   rE   rG   rM   rN   rZ   r\   r`   r   r   r   r   r
      s   		
r
   N)Ú
__future__r   Útypingr   r   Ztyping_extensionsr   r   Ztwisted.pythonr   Ztwisted.trialr   r	   ZTestCaser
   r   r   r   r   Ú<module>   s   