B
    2*\F9                 @   s   d dl Z d dlZd dlmZ yd dlZW n ek
r@   dZY nX d dlZd dlZd dlZG dd dej	Z
G dd dej	ZeG dd dej	Zd	d
 Zdd ZG dd dZe Ze ZeG dd dej	Zedkre  dS )    N)cpython_onlyc               @   s   e Zd Zdd ZdS )FunctionCallsc             C   sZ   t ddg}|d t| }dd }|f |}| |t | t| | d S )N)a   )b   r   c              [   s   | S )N )kwr   r   9C:\ALexclude\prg\programme\Python37\Lib\test\test_call.pyfn   s    z+FunctionCalls.test_kwargs_order.<locals>.fn)collectionsOrderedDictmove_to_endlistitemsZassertIsInstancedictassertEqual)selfZodexpectedr   resr   r   r
   test_kwargs_order   s    

zFunctionCalls.test_kwargs_orderN)__name__
__module____qualname__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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d5S )6CFunctionCallsc             C   s   |  ti j d S )N)assertRaises	TypeError__contains__)r   r   r   r
   test_varargs0$   s    zCFunctionCalls.test_varargs0c             C   s   i  d d S )Nr   )r   )r   r   r   r
   test_varargs1'   s    zCFunctionCalls.test_varargs1c             C   s   |  ti jdd d S )Nr   r   )r   r   r   )r   r   r   r
   test_varargs2*   s    zCFunctionCalls.test_varargs2c             C   s(   yi j d  W n tk
r"   Y nX d S )Nr   )r   r   )r   r   r   r
   test_varargs0_ext-   s    z CFunctionCalls.test_varargs0_extc             C   s   i j d  d S )N)r   )r   )r   r   r   r
   test_varargs1_ext3   s    z CFunctionCalls.test_varargs1_extc             C   s,   yi j d  W n tk
r"   Y nX td S )N)r   r   )r   r   RuntimeError)r   r   r   r
   test_varargs2_ext6   s
    z CFunctionCalls.test_varargs2_extc             C   s   | j ti jdd d S )Nr   )x)r   r   r   )r   r   r   r
   test_varargs1_kw>   s    zCFunctionCalls.test_varargs1_kwc             C   s   | j ti jddd d S )Nr   )r%   y)r   r   r   )r   r   r   r
   test_varargs2_kwA   s    zCFunctionCalls.test_varargs2_kwc             C   s   i    d S )N)keys)r   r   r   r
   test_oldargs0_0D   s    zCFunctionCalls.test_oldargs0_0c             C   s   |  ti jd d S )Nr   )r   r   r)   )r   r   r   r
   test_oldargs0_1G   s    zCFunctionCalls.test_oldargs0_1c             C   s   |  ti jdd d S )Nr   r   )r   r   r)   )r   r   r   r
   test_oldargs0_2J   s    zCFunctionCalls.test_oldargs0_2c             C   s   i j d  d S )Nr   )r)   )r   r   r   r
   test_oldargs0_0_extM   s    z"CFunctionCalls.test_oldargs0_0_extc             C   s,   yi j d  W n tk
r"   Y nX td S )N)r   )r)   r   r#   )r   r   r   r
   test_oldargs0_1_extP   s
    z"CFunctionCalls.test_oldargs0_1_extc             C   s,   yi j d  W n tk
r"   Y nX td S )N)r   r   )r)   r   r#   )r   r   r   r
   test_oldargs0_2_extX   s
    z"CFunctionCalls.test_oldargs0_2_extc             C   s.   yi j dd W n tk
r$   Y nX td S )Nr   )r%   )r)   r   r#   )r   r   r   r
   test_oldargs0_0_kw`   s
    z!CFunctionCalls.test_oldargs0_0_kwc             C   s   | j ti jdd d S )Nr   )r%   )r   r   r)   )r   r   r   r
   test_oldargs0_1_kwh   s    z!CFunctionCalls.test_oldargs0_1_kwc             C   s   | j ti jddd d S )Nr   )r%   r'   )r   r   r)   )r   r   r   r
   test_oldargs0_2_kwk   s    z!CFunctionCalls.test_oldargs0_2_kwc             C   s   |  tg j d S )N)r   r   count)r   r   r   r
   test_oldargs1_0n   s    zCFunctionCalls.test_oldargs1_0c             C   s   g  d d S )Nr   )r3   )r   r   r   r
   test_oldargs1_1q   s    zCFunctionCalls.test_oldargs1_1c             C   s   |  tg jdd d S )Nr   r   )r   r   r3   )r   r   r   r
   test_oldargs1_2t   s    zCFunctionCalls.test_oldargs1_2c             C   s,   yg j d  W n tk
r"   Y nX td S )Nr   )r3   r   r#   )r   r   r   r
   test_oldargs1_0_extw   s
    z"CFunctionCalls.test_oldargs1_0_extc             C   s   g j d  d S )N)r   )r3   )r   r   r   r
   test_oldargs1_1_ext   s    z"CFunctionCalls.test_oldargs1_1_extc             C   s,   yg j d  W n tk
r"   Y nX td S )N)r   r   )r3   r   r#   )r   r   r   r
   test_oldargs1_2_ext   s
    z"CFunctionCalls.test_oldargs1_2_extc             C   s   | j tg jdd d S )Nr   )r%   )r   r   r3   )r   r   r   r
   test_oldargs1_0_kw   s    z!CFunctionCalls.test_oldargs1_0_kwc             C   s   | j tg ji dd d S )Nr   )r%   )r   r   r3   )r   r   r   r
   test_oldargs1_1_kw   s    z!CFunctionCalls.test_oldargs1_1_kwc             C   s   | j tg jddd d S )Nr   )r%   r'   )r   r   r3   )r   r   r   r
   test_oldargs1_2_kw   s    z!CFunctionCalls.test_oldargs1_2_kwN)r   r   r   r   r   r    r!   r"   r$   r&   r(   r*   r+   r,   r-   r.   r/   r0   r1   r2   r4   r5   r6   r7   r8   r9   r:   r;   r<   r   r   r   r
   r   "   s4   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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;S )<CFunctionCallsErrorMessagesc             C   s   d}|  t|i j d S )Nz7__contains__\(\) takes exactly one argument \(0 given\))assertRaisesRegexr   r   )r   msgr   r   r
   r      s    z)CFunctionCallsErrorMessages.test_varargs0c             C   s   d}|  t|i jdd d S )Nz7__contains__\(\) takes exactly one argument \(2 given\)r   r   )r>   r   r   )r   r?   r   r   r
   r       s    z)CFunctionCallsErrorMessages.test_varargs2c             C   s   d}|  t|tjddd d S )Nz@^from_bytes\(\) takes at most 2 positional arguments \(3 given\)   alittleF)r>   r   int
from_bytes)r   r?   r   r   r
   test_varargs3   s    z)CFunctionCallsErrorMessages.test_varargs3c             C   s   d}| j t|i jdd d S )Nz+__contains__\(\) takes no keyword argumentsr   )r%   )r>   r   r   )r   r?   r   r   r
   r&      s    z,CFunctionCallsErrorMessages.test_varargs1_kwc             C   s   d}| j t|i jddd d S )Nz+__contains__\(\) takes no keyword argumentsr   )r%   r'   )r>   r   r   )r   r?   r   r   r
   r(      s    z,CFunctionCallsErrorMessages.test_varargs2_kwc             C   s   d}| j t|tdd d S )Nz#bool\(\) takes no keyword argumentsr   )r%   )r>   r   bool)r   r?   r   r   r
   test_varargs3_kw   s    z,CFunctionCallsErrorMessages.test_varargs3_kwc             C   s   d}| j t|g jdd d S )Nz&^index\(\) takes no keyword arguments$r   )r%   )r>   r   index)r   r?   r   r   r
   test_varargs4_kw   s    z,CFunctionCallsErrorMessages.test_varargs4_kwc             C   s   d}| j t|tdd d S )Nz(^hasattr\(\) takes no keyword arguments$r   )r%   )r>   r   hasattr)r   r?   r   r   r
   test_varargs5_kw   s    z,CFunctionCallsErrorMessages.test_varargs5_kwc             C   s   d}| j t|tdd d S )Nz(^getattr\(\) takes no keyword arguments$r   )r%   )r>   r   getattr)r   r?   r   r   r
   test_varargs6_kw   s    z,CFunctionCallsErrorMessages.test_varargs6_kwc             C   s   d}| j t|tdd d S )Nz%^next\(\) takes no keyword arguments$r   )r%   )r>   r   next)r   r?   r   r   r
   test_varargs7_kw   s    z,CFunctionCallsErrorMessages.test_varargs7_kwc             C   s   d}| j t|tjdd d S )Nz%^pack\(\) takes no keyword arguments$r   )r%   )r>   r   structpack)r   r?   r   r   r
   test_varargs8_kw   s    z,CFunctionCallsErrorMessages.test_varargs8_kwc             C   s   d}| j t|tjdd d S )Nz*^pack_into\(\) takes no keyword arguments$r   )r%   )r>   r   rO   	pack_into)r   r?   r   r   r
   test_varargs9_kw   s    z,CFunctionCallsErrorMessages.test_varargs9_kwc             C   s    d}| j t|t jdd d S )Nz&^index\(\) takes no keyword arguments$r   )r%   )r>   r   r   dequerG   )r   r?   r   r   r
   test_varargs10_kw   s    z-CFunctionCallsErrorMessages.test_varargs10_kwc             C   s&   d}| j t|tjjtddd d S )Nz%^pack\(\) takes no keyword arguments$ r   )r%   )r>   r   rO   StructrP   )r   r?   r   r   r
   test_varargs11_kw   s    z-CFunctionCallsErrorMessages.test_varargs11_kwc             C   s   d}| j t|ttd d S )Nz-^staticmethod\(\) takes no keyword arguments$)func)r>   r   staticmethodid)r   r?   r   r   r
   test_varargs12_kw   s    z-CFunctionCallsErrorMessages.test_varargs12_kwc             C   s   d}| j t|ttd d S )Nz,^classmethod\(\) takes no keyword arguments$)rY   )r>   r   classmethodr[   )r   r?   r   r   r
   test_varargs13_kw   s    z-CFunctionCallsErrorMessages.test_varargs13_kwc             C   s    d}| j t|tjdddd d S )Nz:^product\(\) takes at most 1 keyword argument \(2 given\)$r   r   r   )repeatfoo)r>   r   	itertoolsproduct)r   r?   r   r   r
   test_varargs14_kw   s    z-CFunctionCallsErrorMessages.test_varargs14_kwc          	   C   s    d}| j t|tddddd d S )Nz?^ImportError\(\) takes at most 2 keyword arguments \(3 given\)$r   r   r      )namepathr`   )r>   r   ImportError)r   r?   r   r   r
   test_varargs15_kw   s    z-CFunctionCallsErrorMessages.test_varargs15_kwc          	   C   s    d}| j t|tddddd d S )Nz7^min\(\) takes at most 2 keyword arguments \(3 given\)$r   r   r   rd   )defaultkeyr`   )r>   r   min)r   r?   r   r   r
   test_varargs16_kw   s    z-CFunctionCallsErrorMessages.test_varargs16_kwc             C   s$   d}| j t|tddddddd	 d S )	Nz9^print\(\) takes at most 4 keyword arguments \(5 given\)$r   r   r   rd         )sependfileflushr`   )r>   r   print)r   r?   r   r   r
   test_varargs17_kw   s    z-CFunctionCallsErrorMessages.test_varargs17_kwc             C   s   d}|  t|i jd d S )Nz'keys\(\) takes no arguments \(1 given\)r   )r>   r   r)   )r   r?   r   r   r
   r+      s    z+CFunctionCallsErrorMessages.test_oldargs0_1c             C   s   d}|  t|i jdd d S )Nz'keys\(\) takes no arguments \(2 given\)r   r   )r>   r   r)   )r   r?   r   r   r
   r,      s    z+CFunctionCallsErrorMessages.test_oldargs0_2c             C   s   d}| j t|i jdd d S )Nz#keys\(\) takes no keyword argumentsr   )r%   )r>   r   r)   )r   r?   r   r   r
   r1      s    z.CFunctionCallsErrorMessages.test_oldargs0_1_kwc             C   s   d}| j t|i jddd d S )Nz#keys\(\) takes no keyword argumentsr   )r%   r'   )r>   r   r)   )r   r?   r   r   r
   r2      s    z.CFunctionCallsErrorMessages.test_oldargs0_2_kwc             C   s   d}|  t|g j d S )Nz0count\(\) takes exactly one argument \(0 given\))r>   r   r3   )r   r?   r   r   r
   r4      s    z+CFunctionCallsErrorMessages.test_oldargs1_0c             C   s   d}|  t|g jdd d S )Nz0count\(\) takes exactly one argument \(2 given\)r   r   )r>   r   r3   )r   r?   r   r   r
   r6      s    z+CFunctionCallsErrorMessages.test_oldargs1_2c             C   s   d}| j t|g jdd d S )Nz$count\(\) takes no keyword argumentsr   )r%   )r>   r   r3   )r   r?   r   r   r
   r:     s    z.CFunctionCallsErrorMessages.test_oldargs1_0_kwc             C   s   d}| j t|g ji dd d S )Nz$count\(\) takes no keyword argumentsr   )r%   )r>   r   r3   )r   r?   r   r   r
   r;     s    z.CFunctionCallsErrorMessages.test_oldargs1_1_kwc             C   s   d}| j t|g jddd d S )Nz$count\(\) takes no keyword argumentsr   )r%   r'   )r>   r   r3   )r   r?   r   r   r
   r<     s    z.CFunctionCallsErrorMessages.test_oldargs1_2_kwN) r   r   r   r   r    rD   r&   r(   rF   rH   rJ   rL   rN   rQ   rS   rU   rX   r\   r^   rc   rh   rl   rt   r+   r,   r1   r2   r4   r6   r:   r;   r<   r   r   r   r
   r=      s:   r=   c             C   s   | |gS )Nr   )arg1arg2r   r   r
   pyfunc  s    rw   c               C   s   dS )Nnoargr   r   r   r   r
   pyfunc_noarg  s    ry   c               @   s4   e Zd Zdd Zdd Zedd Zedd Zd	S )
PythonClassc             C   s   ||gS )Nr   )r   ru   rv   r   r   r
   method  s    zPythonClass.methodc             C   s   dS )Nrx   r   )r   r   r   r
   method_noarg  s    zPythonClass.method_noargc             C   s   dS )Nr]   r   )clsr   r   r
   class_method  s    zPythonClass.class_methodc               C   s   dS )NrZ   r   r   r   r   r
   static_method#  s    zPythonClass.static_methodN)	r   r   r   r{   r|   r]   r~   rZ   r   r   r   r   r
   rz     s   rz   c               @   sH  e Zd Zedddgfeddfejddfejddfej	dddgfej
ddfejddfejddfedefedefed	efed
dfeddfejddfejjdeffZed	ddiddgfeddddddgfej	d	ddiddgfej	ddddddgfeg fddidfejdddidfejdddddffZdd Zdd Zdd Zdd Zd S )!FastCallTests)r   r   r   r   r   rx   r]   rZ   )Zhello)r   )rn   	   rn   )i  !   )   
   )s    rA   rv   )ru   rv   ri   r   )s    	byteorderrA   s    )bytesr   c             C   s   |t krd S | || d S )N)IGNORE_RESULTr   )r   resultr   r   r   r
   check_resulto  s    zFastCallTests.check_resultc          
   C   sh   xb| j D ]X\}}}| j||d: t||}| || |sVt|d }| || W d Q R X qW d S )N)rY   args)CALLS_POSARGSsubTest	_testcapiZpyobject_fastcallr   )r   rY   r   r   r   r   r   r
   test_fastcallt  s    zFastCallTests.test_fastcallc          
   C   s   x| j D ]\}}}| j||dr t||d }| || t||i }| || |st|d d }| || t|d i }| || W d Q R X qW xL| jD ]B\}}}}| j|||d  t|||}| || W d Q R X qW d S )N)rY   r   )rY   r   kwargs)r   r   r   Zpyobject_fastcalldictr   CALLS_KWARGS)r   rY   r   r   r   r   r   r   r
   test_fastcall_dict  s    z FastCallTests.test_fastcall_dictc          
   C   s
  x| j D ]\}}}| j||dr t||d }| || t||d}| || |st|d d }| || t|d d}| || W d Q R X qW xh| jD ]^\}}}}| j|||d< t| }|t|  }t|||}| || W d Q R X qW d S )N)rY   r   r   )rY   r   r   )	r   r   r   Zpyobject_fastcallkeywordsr   r   tupler)   values)r   rY   r   r   r   r   Zkwnamesr   r   r
   test_fastcall_keywords  s"    z$FastCallTests.test_fastcall_keywordsN)r   r   r   rw   ry   rz   r~   r   PYTHON_INSTANCEr{   r|   globalsr   r[   dirrk   divmodrB   rC   datetimeZnowr   maxr   r   r   r   r   r   r   r   r
   r   .  s4   





r   __main__)r   ZunittestZtest.supportr   r   rg   rO   r   ra   ZTestCaser   r   r=   rw   ry   rz   r   objectr   r   r   mainr   r   r   r
   <module>   s.   
r
{
 