B
    u9a                 @   s  d dl Z d dlZd dlZd dlZd dlmZ edZd dlmZm	Z	 dZ
dZd dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ejjZedZ ed	Z!d
Z"dZ#dZ$G dd dZ%G dd de&Z'G dd dZ(G dd dZ)G dd de&Z*G dd dZ+G dd deZ,G dd deZ-G dd dZ.G dd  d Z/G d!d" d"eZ0G d#d$ d$Z1G d%d& d&e2Z3G d'd( d(e2Z4G d)d* d*Z5G d+d, d,Z6G d-d. d.e2Z7G d/d0 d0e8Z9G d1d2 d2e:Z;G d3d4 d4e j<Z=G d5d6 d6e j<Z>G d7d8 d8e j<Z?G d9d: d:e j<Z@G d;d< d<ZAG d=d> d>e j<ZBG d?d@ d@e j<ZCG dAdB dBe j<ZDG dCdD dDe j<ZEG dEdF dFe j<ZFG dGdH dHe j<ZGG dIdJ dJe j<ZHG dKdL dLe j<ZIG dMdN dNe j<ZJG dOdP dPe j<ZKG dQdR dRe j<ZLG dSdT dTe j<ZMeNdUkre O  dS )V    N)support	_testcapi)getargs_keywordsgetargs_keyword_onlyil   B$$HH! `? )	UCHAR_MAX	USHRT_MAXUINT_MAX	ULONG_MAXINT_MAXINT_MINLONG_MINLONG_MAXPY_SSIZE_T_MINPY_SSIZE_T_MAXSHRT_MINSHRT_MAXFLT_MINFLT_MAXDBL_MINDBL_MAXinfnanl    l         l    c               @   s   e Zd Zdd ZdS )Intc             C   s   dS )Nc    )selfr   r   #/usr/lib/python3.7/test_getargs2.py__int__9   s    zInt.__int__N)__name__
__module____qualname__r   r   r   r   r   r   8   s   r   c               @   s   e Zd Zdd ZdS )IntSubclassc             C   s   dS )Nr   r   )r   r   r   r   r   =   s    zIntSubclass.__int__N)r   r   r    r   r   r   r   r   r!   <   s   r!   c               @   s   e Zd Zdd ZdS )BadIntc             C   s   dS )Ng      ?r   )r   r   r   r   r   A   s    zBadInt.__int__N)r   r   r    r   r   r   r   r   r"   @   s   r"   c               @   s   e Zd Zdd ZdS )BadInt2c             C   s   dS )NTr   )r   r   r   r   r   E   s    zBadInt2.__int__N)r   r   r    r   r   r   r   r   r#   D   s   r#   c               @   s   e Zd Zdd ZdS )BadInt3c             C   s   dS )NTr   )r   r   r   r   r   I   s    zBadInt3.__int__N)r   r   r    r   r   r   r   r   r$   H   s   r$   c               @   s   e Zd Zdd ZdS )Floatc             C   s   dS )Ng      @r   )r   r   r   r   	__float__N   s    zFloat.__float__N)r   r   r    r&   r   r   r   r   r%   M   s   r%   c               @   s   e Zd ZdS )FloatSubclassN)r   r   r    r   r   r   r   r'   Q   s   r'   c               @   s   e Zd Zdd ZdS )FloatSubclass2c             C   s   dS )Ng      @r   )r   r   r   r   r&   U   s    zFloatSubclass2.__float__N)r   r   r    r&   r   r   r   r   r(   T   s   r(   c               @   s   e Zd Zdd ZdS )BadFloatc             C   s   dS )Ni  r   )r   r   r   r   r&   Y   s    zBadFloat.__float__N)r   r   r    r&   r   r   r   r   r)   X   s   r)   c               @   s   e Zd Zdd ZdS )	BadFloat2c             C   s   t dS )Ng      @)r'   )r   r   r   r   r&   ]   s    zBadFloat2.__float__N)r   r   r    r&   r   r   r   r   r*   \   s   r*   c               @   s   e Zd Zdd ZdS )	BadFloat3c             C   s   t dS )Ng      @)r'   )r   r   r   r   r&   a   s    zBadFloat3.__float__N)r   r   r    r&   r   r   r   r   r+   `   s   r+   c               @   s   e Zd Zdd ZdS )Complexc             C   s   dS )Ny      @      ?r   )r   r   r   r   __complex__f   s    zComplex.__complex__N)r   r   r    r-   r   r   r   r   r,   e   s   r,   c               @   s   e Zd ZdS )ComplexSubclassN)r   r   r    r   r   r   r   r.   i   s   r.   c               @   s   e Zd Zdd ZdS )ComplexSubclass2c             C   s   dS )Ny      @      ?r   )r   r   r   r   r-   m   s    zComplexSubclass2.__complex__N)r   r   r    r-   r   r   r   r   r/   l   s   r/   c               @   s   e Zd Zdd ZdS )
BadComplexc             C   s   dS )Ng      ?r   )r   r   r   r   r-   q   s    zBadComplex.__complex__N)r   r   r    r-   r   r   r   r   r0   p   s   r0   c               @   s   e Zd Zdd ZdS )BadComplex2c             C   s   t dS )Ny      @      ?)r.   )r   r   r   r   r-   u   s    zBadComplex2.__complex__N)r   r   r    r-   r   r   r   r   r1   t   s   r1   c               @   s   e Zd Zdd ZdS )BadComplex3c             C   s   t dS )Ny      @      ?)r.   )r   r   r   r   r-   y   s    zBadComplex3.__complex__N)r   r   r    r-   r   r   r   r   r2   x   s   r2   c               @   s   e Zd ZdS )TupleSubclassN)r   r   r    r   r   r   r   r3   }   s   r3   c               @   s   e Zd ZdS )DictSubclassN)r   r   r    r   r   r   r   r4      s   r4   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )Unsigned_TestCasec          	   C   s   ddl m} | t|d | d|t  | d|t  | t|t  | t	 | d|t
  W d Q R X | d|t  | t|d | d|d | t|t | t|td  | d|d | t|t d S )Nr   )	getargs_bgQ	@r      *   )r   r6   assertRaises	TypeErrorassertEqualr   r!   r"   assertWarnsDeprecationWarningr#   r$   OverflowErrorr   
VERY_LARGE)r   r6   r   r   r   test_b   s    zUnsigned_TestCase.test_bc          	   C   s   ddl m} | t|d | d|t  | d|t  | t|t  | t	 | d|t
  W d Q R X | d|t  | t|d | d|d | t|t | d|td  | d|d | tt@ |t d S )Nr   )	getargs_BgQ	@r   r7   r8   r9   )r   rB   r:   r;   r<   r   r!   r"   r=   r>   r#   r$   r   r@   )r   rB   r   r   r   test_B   s    zUnsigned_TestCase.test_Bc          	   C   s   ddl m} | t|d | d|t  | d|t  | t|t  | t	 | d|t
  W d Q R X | d|t  | t|d | d|d | t|t | d|td  | d|d | tt@ |t d S )Nr   )	getargs_HgQ	@r   r7   r8   r9   )r   rD   r:   r;   r<   r   r!   r"   r=   r>   r#   r$   r   r@   )r   rD   r   r   r   test_H   s    zUnsigned_TestCase.test_Hc          	   C   s   ddl m} | t|d | d|t  | d|t  | t|t  | t	 | d|t
  W d Q R X | d|t  | t|d | d|d | t|t | d|td  | d|d | tt@ |t d S )Nr   )	getargs_IgQ	@r   r7   r8   r9   )r   rF   r:   r;   r<   r   r!   r"   r=   r>   r#   r$   r   r@   )r   rF   r   r   r   test_I   s    zUnsigned_TestCase.test_Ic             C   s   ddl m} | t|d | t|t  | d|t  | t|t  | t|t  | d|t	  | t
|d | d|d | t
|t
 | d|t
d  | d|d | tt
@ |t d S )Nr   )	getargs_kgQ	@r8   r7   r9   )r   rH   r:   r;   r   r<   r!   r"   r#   r$   r	   r@   )r   rH   r   r   r   test_k   s    zUnsigned_TestCase.test_kN)r   r   r    rA   rC   rE   rG   rI   r   r   r   r   r5      s
   r5   c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Signed_TestCasec          	   C   s   ddl m} | t|d | d|t  | d|t  | t|t  | t	 | d|t
  W d Q R X | d|t  | t|td  | t|t | t|t | t|td  | d|d | t|t d S )Nr   )	getargs_hgQ	@r   r7   r9   )r   rK   r:   r;   r<   r   r!   r"   r=   r>   r#   r$   r?   r   r   r@   )r   rK   r   r   r   test_h   s    zSigned_TestCase.test_hc          	   C   s   ddl m} | t|d | d|t  | d|t  | t|t  | t	 | d|t
  W d Q R X | d|t  | t|td  | t|t | t|t | t|td  | d|d | t|t d S )Nr   )	getargs_igQ	@r   r7   r9   )r   rM   r:   r;   r<   r   r!   r"   r=   r>   r#   r$   r?   r   r
   r@   )r   rM   r   r   r   test_i   s    zSigned_TestCase.test_ic          	   C   s   ddl m} | t|d | d|t  | d|t  | t|t  | t	 | d|t
  W d Q R X | d|t  | t|td  | t|t | t|t | t|td  | d|d | t|t d S )Nr   )	getargs_lgQ	@r   r7   r9   )r   rO   r:   r;   r<   r   r!   r"   r=   r>   r#   r$   r?   r   r   r@   )r   rO   r   r   r   test_l  s    zSigned_TestCase.test_lc             C   s   ddl m} | t|d | t|t  | d|t  | t|t  | t|t  | d|t	  | t
|td  | t|t | t|t | t
|td  | d|d | t
|t d S )Nr   )	getargs_ngQ	@r7   r9   )r   rQ   r:   r;   r   r<   r!   r"   r#   r$   r?   r   r   r@   )r   rQ   r   r   r   test_n!  s    zSigned_TestCase.test_nN)r   r   r    rL   rN   rP   rR   r   r   r   r   rJ      s   rJ   c               @   s   e Zd Zdd Zdd ZdS )LongLong_TestCasec          	   C   s   ddl m} | t|d | t|d | d|t  | d|t  | t|t  | t	 | d|t
  W d Q R X | d|t  | t|td  | t|t | t|t | t|td  | d|d | t|t d S )Nr   )	getargs_LgQ	@Hellor   r7   r9   )r   rT   r:   r;   r<   r   r!   r"   r=   r>   r#   r$   r?   	LLONG_MIN	LLONG_MAXr@   )r   rT   r   r   r   test_L6  s    zLongLong_TestCase.test_Lc             C   s   ddl m} | t|d | t|t  | d|t  | t|t  | t|t  | d|t	  | t
|t
 | d|d | d|t
d  | d|d | tt
@ |t d S )Nr   )	getargs_KgQ	@r7   r9   )r   rY   r:   r;   r   r<   r!   r"   r#   r$   
ULLONG_MAXr@   )r   rY   r   r   r   test_KK  s    zLongLong_TestCase.test_KN)r   r   r    rX   r[   r   r   r   r   rS   5  s   rS   c               @   s:   e Zd Zdd Zdd Zejdd Zdd Zd	d
 Z	dS )Float_TestCasec             C   s,   |  || |  td|td| d S )Nr7   )r<   mathZcopysign)r   actualZexpectedr   r   r   assertEqualWithSign_  s    z"Float_TestCase.assertEqualWithSignc          	   C   s  ddl m} | |dd | |dd | t|d | |t d | |tdd | |tdd | t|t  | 	t
 | |t d W d Q R X | |tdd x.tt tt tt fD ]}| ||| qW ttk r| |tt | |t t  ttkrJ| |td | |t d	 | |dd | |d	d	 |t}| || d S )
Nr   )	getargs_fg      @   g      @y      @        g      @g        g       )r   r`   r<   r:   r;   r%   r'   r(   r)   r=   r>   r*   r+   r   r   INFr   r   r_   NANassertNotEqual)r   r`   xrr   r   r   test_fc  s.    

zFloat_TestCase.test_fc             C   s2   ddl m} | |dt | |dt  d S )Nr   )r`   gnGgn)r   r`   r<   r   )r   r`   r   r   r   test_f_rounding}  s    zFloat_TestCase.test_f_roundingc          	   C   sL  ddl m} | |dd | |dd | t|d | |t d | |tdd | |tdd | t|t  | 	t
 | |t d W d Q R X | |tdd x.tt tt tt fD ]}| ||| qW | t|dt>  | t|d	t>  | |d
d
 | |dd |t}| || d S )Nr   )	getargs_dg      @ra   g      @y      @        g      @r7   r8   g        g       )r   ri   r<   r:   r;   r%   r'   r(   r)   r=   r>   r*   r+   r   r   rb   r?   DBL_MAX_EXPr_   rc   rd   )r   ri   re   rf   r   r   r   test_d  s&    zFloat_TestCase.test_dc          	   C   sz  ddl m} | |dd | |dd | |dd | |t d | |tdd | |tdd | t|t  | 	t
 | |t d W d Q R X | |tdd xRtt tt tt fD ]8}t|d	}| ||| td	|}| ||| qW | |td
d	jd
 | |tdd	jd | |td	d
jd
 | |td	djd d S )Nr   )	getargs_Dy      @      ?g      @y      @        ra   y      @        y      @      ?g      ?g        g       )r   rl   r<   r,   r.   r/   r:   r;   r0   r=   r>   r1   r2   r   r   rb   complexr_   realimag)r   rl   re   cr   r   r   test_D  s(    

zFloat_TestCase.test_DN)
r   r   r    r_   rg   r   Zrequires_IEEE_754rh   rk   rq   r   r   r   r   r\   ^  s
   r\   c               @   s   e Zd Zdd ZdS )Paradoxc             C   s   t d S )N)NotImplementedError)r   r   r   r   __bool__  s    zParadox.__bool__N)r   r   r    rt   r   r   r   r   rr     s   rr   c               @   s   e Zd Zdd ZdS )Boolean_TestCasec             C   sH  ddl m} | d|d | d|d  | d|d | d|d | d|d | d|d | d|d | d|g  | d|i  | d|d	 | d|d | d|d
 | d|d | d|d | d|d | d|dg | d|ddi | d|tj | t|t  d S )Nr   )	getargs_pFg        y                 r   r7   Tg      ?y              ?re   )r7      )r   rv   r<   unittestTestCaser:   rs   rr   )r   rv   r   r   r   test_p  s(    zBoolean_TestCase.test_pN)r   r   r    r{   r   r   r   r   ru     s   ru   c               @   s   e Zd Zdd Zdd ZdS )Tuple_TestCasec             C   s  ddl m} |dd}| |d | t|t |d
d }| |d | t|t |ddg }| |d | t|t |tddg }| |d | t|t | }| |d | t|ttd f |d	 }| |d | t|ttd f d S )Nr   )get_argsr7   rx   )r7   rx   )rx      )r7   rx   r~   )r   Nr   )r7   )r   r}   r<   assertIstypetupler3   assertIn)r   r}   retr   r   r   	test_args  s&    
zTuple_TestCase.test_argsc             C   sF   ddl m} |dd}| |d G dd d}| t|d|  d S )Nr   )getargs_tupler7   )rx   r~   )r7   rx   r~   c               @   s   e Zd Zdd Zdd ZdS )z&Tuple_TestCase.test_tuple.<locals>.seqc             S   s   dS )Nrx   r   )r   r   r   r   __len__  s    z.Tuple_TestCase.test_tuple.<locals>.seq.__len__c             S   s   t d S )N)
ValueError)r   nr   r   r   __getitem__  s    z2Tuple_TestCase.test_tuple.<locals>.seq.__getitem__N)r   r   r    r   r   r   r   r   r   seq  s   r   )r   r   r<   r:   r;   )r   r   r   r   r   r   r   
test_tuple  s
    
zTuple_TestCase.test_tupleN)r   r   r    r   r   r   r   r   r   r|     s   r|   c               @   sT   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S )Keywords_TestCasec             C   s  ddl m} |ddd}| |ddd | t|t |f ddiddd}| |dddd	 | t|t |f tddd}| |ddd | t|t | }| |i d f | t|ttd f |f i }| |i d f | t|ttd f d S )
Nr   )
get_kwargsr7   rx   )abr   r~   )r   rp   )r   r   rp   )r   r   r<   r   r   dictr4   r   )r   r   r   r   r   r   test_kwargs  s     
zKeywords_TestCase.test_kwargsc             C   s   |  tdddddd d S )N)r7   rx   r~   )ra   )      )      	   
   )
r7   rx   r~   ra   r   r   r   r   r   r   )r<   r   )r   r   r   r   test_positional_args  s    z&Keywords_TestCase.test_positional_argsc          	   C   s   |  tddddddd d S )N)r7   rx   r~   )ra   )r   r   )r   r   r   r   )arg4arg5)
r7   rx   r~   ra   r   r   r   r   r   r   )r<   r   )r   r   r   r   test_mixed_args  s    z!Keywords_TestCase.test_mixed_argsc          	   C   s   |  tddddddd d S )N)r7   rx   r~   )ra   )r   r   )r   r   r   r   )arg1arg2Zarg3r   r   )
r7   rx   r~   ra   r   r   r   r   r   r   )r<   r   )r   r   r   r   test_keyword_args   s    z#Keywords_TestCase.test_keyword_argsc             C   s   |  tddddd d S )N)r7   rx   r~   r   )r   r   r   )
r7   rx   r~   r8   r8   r8   r8   r8   r8   r   )r<   r   )r   r   r   r   test_optional_args'  s    z$Keywords_TestCase.test_optional_argsc          
   C   sP   yt dd W n2 tk
r@ } z| t|d W d d }~X Y nX | d d S )N)r7   rx   )r   z1function missing required argument 'arg2' (pos 2)z!TypeError should have been raised)r   r;   r<   strfail)r   errr   r   r   test_required_args.  s    z$Keywords_TestCase.test_required_argsc          
   C   sX   yt dddddd W n2 tk
rH } z| t|d W d d }~X Y nX | d d S )	N)r7   rx   r~   )ra   )r   r   )r   r   r   r   o   z,function takes at most 5 arguments (6 given)z!TypeError should have been raised)r   r;   r<   r   r   )r   r   r   r   r   test_too_many_args8  s
    "z$Keywords_TestCase.test_too_many_argsc          
   C   sV   yt ddddd W n2 tk
rF } z| t|d W d d }~X Y nX | d d S )N)r7   rx   r~   r   i  )r   Zarg666z9'arg666' is an invalid keyword argument for this functionz!TypeError should have been raised)r   r;   r<   r   r   )r   r   r   r   r   test_invalid_keyword@  s
    "z&Keywords_TestCase.test_invalid_keywordc          
   C   sT   yt d	ddi W n2 tk
rD } z| t|d W d d }~X Y nX | d d S )
Nr7   rx   r~   ra   )r   r   r   r   r   u   r   u6   '' is an invalid keyword argument for this functionz!TypeError should have been raised)r   r~   r   r   )r   r;   r<   r   r   )r   r   r   r   r   test_surrogate_keywordI  s
    "z(Keywords_TestCase.test_surrogate_keywordN)r   r   r    r   r   r   r   r   r   r   r   r   r   r   r   r   r     s   
	r   c               @   sL   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S )KeywordOnly_TestCasec             C   s   |  tddd d S )Nr7   rx   )r7   rx   r8   )r<   r   )r   r   r   r   r   R  s    z)KeywordOnly_TestCase.test_positional_argsc             C   s   |  tddddd d S )Nr7   rx   r~   )keyword_only)r7   rx   r~   )r<   r   )r   r   r   r   r   Y  s    z$KeywordOnly_TestCase.test_mixed_argsc             C   s   |  tddddd d S )Nr7   rx   r~   )requiredoptionalr   )r7   rx   r~   )r<   r   )r   r   r   r   r   `  s    z&KeywordOnly_TestCase.test_keyword_argsc             C   s,   |  tdddd |  tdddd d S )Nr7   rx   )r   r   )r7   rx   r8   r~   )r   r   )r7   r8   r~   )r<   r   )r   r   r   r   r   g  s    

z'KeywordOnly_TestCase.test_optional_argsc          	   C   sj   |  tdd |  tddd | td tdd W d Q R X | td tdd W d Q R X d S )	Nr7   )r7   r8   r8   )r   z7function missing required argument 'required' \(pos 1\)rx   )r   r~   )r   )r<   r   assertRaisesRegexr;   )r   r   r   r   r   r  s    z'KeywordOnly_TestCase.test_required_argsc          	   C   sP   |  td tddd W d Q R X |  td tddddd W d Q R X d S )Nz9function takes at most 2 positional arguments \(3 given\)r7   rx   r~   z.function takes at most 3 arguments \(4 given\)r   )r   )r   r;   r   )r   r   r   r   r     s    z'KeywordOnly_TestCase.test_too_many_argsc          	   C   s*   |  td tdddd W d Q R X d S )Nz:'monster' is an invalid keyword argument for this functionr7   rx   i  )Zmonster)r   r;   r   )r   r   r   r   r     s    z)KeywordOnly_TestCase.test_invalid_keywordc          	   C   s*   |  td tdddi W d Q R X d S )Nu6   '' is an invalid keyword argument for this functionr7   rx   u   r   )r7   rx   )r   r;   r   )r   r   r   r   r     s    z+KeywordOnly_TestCase.test_surrogate_keywordN)r   r   r    r   r   r   r   r   r   r   r   r   r   r   r   r   Q  s   	r   c               @   s@   e Zd ZddlmZ dd Zdd Zdd Zd	d
 Z	dd Z
dS )"PositionalOnlyAndKeywords_TestCaser   )$getargs_positional_only_and_keywordsc             C   s   |  | dddd d S )Nr7   rx   r~   )r7   rx   r~   )r<   getargs)r   r   r   r   r     s    z7PositionalOnlyAndKeywords_TestCase.test_positional_argsc             C   s   |  | jddddd d S )Nr7   rx   r~   )keyword)r7   rx   r~   )r<   r   )r   r   r   r   r     s    z2PositionalOnlyAndKeywords_TestCase.test_mixed_argsc             C   s.   |  | ddd |  | jdddd d S )Nr7   rx   )r7   rx   r8   r~   )r   )r7   r8   r~   )r<   r   )r   r   r   r   r     s    z5PositionalOnlyAndKeywords_TestCase.test_optional_argsc          	   C   sZ   |  | dd | td |   W d Q R X | td | jdd W d Q R X d S )Nr7   )r7   r8   r8   z:function takes at least 1 positional arguments \(0 given\)r~   )r   )r<   r   r   r;   )r   r   r   r   r     s    z5PositionalOnlyAndKeywords_TestCase.test_required_argsc          	   C   s,   |  td | jdddi W d Q R X d S )Nz3'' is an invalid keyword argument for this functionr7   rx   rw   i  )r7   rx   )r   r;   r   )r   r   r   r   test_empty_keyword  s    z5PositionalOnlyAndKeywords_TestCase.test_empty_keywordN)r   r   r    r   r   r   r   r   r   r   r   r   r   r   r   r     s   r   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )Bytes_TestCasec             C   s~   ddl m} | t|d | |dd | |tdd | t|td | t|d | t|d | t|d  d S )Nr   )	getargs_cs   abc   aa   s)r   r   r:   r;   r<   	bytearray
memoryview)r   r   r   r   r   test_c  s    zBytes_TestCase.test_cc             C   sn   ddl m} | t|d | |dd | t|d | t|td | t|td | t|d  d S )Nr   )	getargs_yu   abcés   bytess   nul: s	   bytearrays
   memoryview)r   r   r:   r;   r<   r   r   r   )r   r   r   r   r   test_y  s    zBytes_TestCase.test_yc             C   st   ddl m} | t|d | |dd | |dd | |tdd | |tdd | t|d  d S )Nr   )getargs_y_staru   abcés   bytess   nul: s	   bytearrays
   memoryview)r   r   r:   r;   r<   r   r   )r   r   r   r   r   test_y_star  s    zBytes_TestCase.test_y_starc             C   sp   ddl m} | t|d | |dd | |dd | t|td | t|td | t|d  d S )Nr   )getargs_y_hashu   abcés   bytess   nul: s	   bytearrays
   memoryview)r   r   r:   r;   r<   r   r   )r   r   r   r   r   test_y_hash  s    zBytes_TestCase.test_y_hashc             C   s   ddl m} | t|d | t|d | t|d | t|td td}| ||d | |td td}| |t|d	 | |td	 | t|d  d S )
Nr   )getargs_w_staru   abcés   bytess   nul: s	   bytearrays	   [ytearra]s
   memoryviews
   [emoryvie])r   r   r:   r;   r   r   r<   )r   r   bufr   r   r   test_w_star  s    zBytes_TestCase.test_w_starN)r   r   r    r   r   r   r   r   r   r   r   r   r     s
   
			r   c               @   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S ) String_TestCasec             C   s   ddl m} | t|d | |dd | |dd | |dd	 | t|d
 | t|td
 | t|td
 | t|d | t|d  d S )Nr   )	getargs_Cabcr   r   u   €i   u   🐍i r   )r   r   r:   r;   r<   r   r   )r   r   r   r   r   test_C  s    zString_TestCase.test_Cc             C   sn   ddl m} | |dd | t|d | t|d | t|td | t|td | t|d  d S )	Nr   )	getargs_su   abcés   abcéznul: s   bytess	   bytearrays
   memoryview)r   r   r<   r:   r   r;   r   r   )r   r   r   r   r   test_s  s    zString_TestCase.test_sc             C   sv   ddl m} | |dd | |dd | |dd | |tdd | |td	d	 | t|d  d S )
Nr   )getargs_s_staru   abcés   abcéznul: s   nul: s   bytess	   bytearrays
   memoryview)r   r   r<   r   r   r:   r;   )r   r   r   r   r   test_s_star  s    zString_TestCase.test_s_starc             C   sr   ddl m} | |dd | |dd | |dd | t|td | t|td	 | t|d  d S )
Nr   )getargs_s_hashu   abcés   abcéznul: s   nul: s   bytess	   bytearrays
   memoryview)r   r   r<   r:   r;   r   r   )r   r   r   r   r   test_s_hash  s    zString_TestCase.test_s_hashc             C   sn   ddl m} | |dd | t|d | t|d | t|td | t|td | |d  d S )	Nr   )	getargs_zu   abcés   abcéznul: s   bytess	   bytearrays
   memoryview)	r   r   r<   r:   r   r;   r   r   assertIsNone)r   r   r   r   r   test_z  s    zString_TestCase.test_zc             C   sv   ddl m} | |dd | |dd | |dd | |tdd | |td	d	 | |d  d S )
Nr   )getargs_z_staru   abcés   abcéznul: s   nul: s   bytess	   bytearrays
   memoryview)r   r   r<   r   r   r   )r   r   r   r   r   test_z_star!  s    zString_TestCase.test_z_starc             C   sr   ddl m} | |dd | |dd | |dd | t|td | t|td	 | |d  d S )
Nr   )getargs_z_hashu   abcés   abcéznul: s   nul: s   bytess	   bytearrays
   memoryview)r   r   r<   r:   r;   r   r   r   )r   r   r   r   r   test_z_hash*  s    zString_TestCase.test_z_hashc             C   s   ddl m} | |dd | |ddd | t|dd | t|dd | t|d	d | t|td
d | t|tdd | t|d d | t|dd d S )Nr   )
getargs_esu   abcés   abcélatin1s   abcasciispams   bytess	   bytearrays
   memoryviewznul: )	r   r   r<   r:   UnicodeEncodeErrorLookupErrorr;   r   r   )r   r   r   r   r   test_es3  s    zString_TestCase.test_esc             C   s   ddl m} | |dd | |ddd | t|dd | t|dd | |d	dd	 | |td
dd
 | t|tdd | t|d d | t|dd | t|dd | t|tdd d S )Nr   )
getargs_etu   abcés   abcér   s   abcr   r   s   bytess	   bytearrays
   memoryviewznul: s   nul: )	r   r   r<   r:   r   r   r   r;   r   )r   r   r   r   r   test_et?  s    zString_TestCase.test_etc             C   sF  ddl m} | |dd | |ddd | t|dd | t|dd | t|d	d | t|td
d | t|tdd | t|d d | |ddd td}| |dd|d | |td td}| |dd|d | |td td}| t	|dd| | |td t }| t	|dd| d S )Nr   )getargs_es_hashu   abcés   abcér   s   abcr   r   s   bytess	   bytearrays
   memoryviewznul: s   nul: s   xxxxxxxxs   abc xxxs   xxxxxs   abc s   xxxx)
r   r   r<   r:   r   r   r;   r   r   r   )r   r   r   r   r   r   test_es_hashM  s*    zString_TestCase.test_es_hashc             C   sr  ddl m} | |dd | |ddd | t|dd | t|dd | |d	dd	 | |td
dd
 | t|tdd | t|d d | |ddd | |ddd | |tddd td}| |dd|d | |td td}| |dd|d | |td td}| t	|dd| | |td t }| t	|dd| d S )Nr   )getargs_et_hashu   abcés   abcér   s   abcr   r   s   bytess	   bytearrays
   memoryviewznul: s   nul: s   xxxxxxxxs   abc xxxs   xxxxxs   abc s   xxxx)
r   r   r<   r:   r   r   r   r;   r   r   )r   r   r   r   r   r   test_et_hashe  s.    zString_TestCase.test_et_hashc             C   sn   ddl m} | |dd | t|d | t|d | t|td | t|td | t|d  d S )Nr   )	getargs_uu   abcéznul: s   bytess	   bytearrays
   memoryview)r   r   r<   r:   r   r;   r   r   )r   r   r   r   r   test_u  s    zString_TestCase.test_uc             C   sp   ddl m} | |dd | |dd | t|d | t|td | t|td | t|d  d S )Nr   )getargs_u_hashu   abcéznul: s   bytess	   bytearrays
   memoryview)r   r   r<   r:   r;   r   r   )r   r   r   r   r   test_u_hash  s    zString_TestCase.test_u_hashc             C   sn   ddl m} | |dd | t|d | t|d | t|td | t|td | |d  d S )Nr   )	getargs_Zu   abcéznul: s   bytess	   bytearrays
   memoryview)	r   r   r<   r:   r   r;   r   r   r   )r   r   r   r   r   test_Z  s    zString_TestCase.test_Zc             C   sp   ddl m} | |dd | |dd | t|d | t|td | t|td | |d  d S )Nr   )getargs_Z_hashu   abcéznul: s   bytess	   bytearrays
   memoryview)r   r   r<   r:   r;   r   r   r   )r   r   r   r   r   test_Z_hash  s    zString_TestCase.test_Z_hashN)r   r   r    r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s   									r   c               @   s$   e Zd Zdd Zdd Zdd ZdS )Object_TestCasec             C   sd   ddl m} d}| ||| | t|td | t|d | t|d  | t|t| d S )Nr   )	getargs_Ss   bytess	   bytearrayr   )r   r   r   r:   r;   r   r   )r   r   objr   r   r   test_S  s    zObject_TestCase.test_Sc             C   sd   ddl m} td}| ||| | t|d | t|d | t|d  | t|t| d S )Nr   )	getargs_Ys	   bytearrays   bytesr   )r   r   r   r   r:   r;   r   )r   r   r   r   r   r   test_Y  s    zObject_TestCase.test_Yc             C   sR   ddl m} d}| ||| | t|d | t|td | t|d  d S )Nr   )	getargs_Ur   s   bytess	   bytearray)r   r   r   r:   r;   r   )r   r   r   r   r   r   test_U  s    zObject_TestCase.test_UN)r   r   r    r   r   r   r   r   r   r   r     s   		r   c               @   s   e Zd Zdd ZdS )Test6012c             C   s   |  tddd d S )NrU   ZWorldr7   )r<   r   Z
argparsing)r   r   r   r   test  s    zTest6012.testN)r   r   r    r   r   r   r   r   r     s   r   c               @   s   e Zd Zdd Zdd ZdS )SkipitemTestc             C   s&  d}d}ddi}ddg}xt ddD ]}t|}|dkr<q&|d	 }yt|||| d
}W nH tk
r }	 zd}
t|	|
k}W d d }	~	X Y n tk
r   d
}Y nX d| }yt|||| d
}W n8 tk
r }	 zd|}
t|	|
k}W d d }	~	X Y nX d||||}| ||| q&W d S )Nr   )r   r   r7   r          z()e|$iFz(argument 1 (impossible<bad format char>)|z!impossible<bad format char>: '{}'ztest_skipitem_parity: detected mismatch between convertsimple and skipitem for format unit '{}' ({}), not skipped {}, skipped {})	rangechrr   parse_tuple_and_keywordsSystemErrorr   r;   formatr   )r   empty_tupletuple_1dict_bkeywordsr   rp   r   Zwhen_not_skippeder   optional_formatZwhen_skippedmessager   r   r   test_skipitem  s:    

zSkipitemTest.test_skipitemc             C   s2  t j}d}d}ddi}ddg}d}xtjD ]|}xvdD ]n}|| }	| j|	dP d	|	 d
 }
|	|krr||||
| n&| td ||||
| W d Q R X W d Q R X q4W q*W xttt	ddD ]n}d| }	d	|	 d
 }
| j|	dD |dkr||||
| n&| td ||||
| W d Q R X W d Q R X qW d S )Nr   )r   r   r7   r   )
zs#zs*zz#zz*zu#zZ#zy#zy*zw#zw*z#*)r   r   r   zimpossible<bad format char>r      r  st)
r   r   stringZascii_lettersZsubTestr   r   mapr   r   )r   parser   r  r  r  Z	supportedrp   Zc2fr  r   r   r   test_skipitem_with_suffix  s2    
*z&SkipitemTest.test_skipitem_with_suffixN)r   r   r    r  r  r   r   r   r   r     s   Dr   c               @   s$   e Zd Zdd Zdd Zdd ZdS )ParseTupleAndKeywords_Testc          	   C   sd   |  ttjdi dg  |  ttjdi dd |  ttjdi ddgd  |  ttjdi ddg d S )Nr   r9   rw   )r:   r;   r   r   r   )r   r   r   r   test_parse_tuple_and_keywords.  s    



z8ParseTupleAndKeywords_Test.test_parse_tuple_and_keywordsc          	   C   s  |  ttjdi ddg |  ttjdi dddg |  ttjdddid	dg |  ttjddd
ddddg |  ttjdddiddg |  ttjddd
ddddg |  ttjdi dddg |  ttjdi ddg |  ttjdi ddg |  ttjdi dddg d S )N)r7   z||Or   )r7   rx   z|O|Or   r   r7   z$$Orx   )r   r   z$O$Oz$|Oz$O|Oz|Oz|OOz|$Orw   )r:   r   r   r   )r   r   r   r   test_bad_use9  s(    









z'ParseTupleAndKeywords_Test.test_bad_usec          	   C   s  t j}|di ddddg |dddiddddg | td |dddiddddg W d Q R X |di d	dddg | td
 |di d	dddg W d Q R X |dddiddddg | td |dddiddddg W d Q R X |di ddddg | td
 |di ddddg W d Q R X | td |di ddddg W d Q R X | td |di d	dddg W d Q R X d S )N)r7   rx   r~   ZOOOrw   r   )r7   rx   r~   z:function takes at least 2 positional arguments \(1 given\))r7   zO|OOz:function takes at least 1 positional arguments \(0 given\)r   zOO$Oz9function takes exactly 2 positional arguments \(1 given\)zO|O$OzEmpty parameter name after \$zO|$OOzEmpty keyword)r   r   r   r;   r   )r   r  r   r   r   test_positional_onlyQ  s,    ""z/ParseTupleAndKeywords_Test.test_positional_onlyN)r   r   r    r  r  r  r   r   r   r   r  ,  s   r  c               @   s&   e Zd Ze dd eeD  dS )Test_testcapic             c   s0   | ](}| d r|dr|tt|fV  qdS )Ztest__codeN)
startswithendswithgetattrr   ).0namer   r   r   	<genexpr>l  s   zTest_testcapi.<genexpr>N)r   r   r    localsupdatedirr   r   r   r   r   r  k  s   r  __main__)Pry   r]   r
  sysr   r   import_moduler   r   r   ZLARGEr@   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   
float_infomax_exprj   floatrb   rc   rW   rV   rZ   r   intr!   r"   r#   r$   r%   r'   r(   r)   r*   r+   r,   rm   r.   r/   r0   r1   r2   r   r3   r   r4   rz   r5   rJ   rS   r\   rr   ru   r|   r   r   r   r   r   r   r   r   r  r  r   mainr   r   r   r   <module>   sl   
 HcN)S*WH!6 5f?
