o
    di)                     @   sj   d dl Z d dlmZ d dlmZ d dlZddlmZ g dZ	e
dZe
ddZe
dZG d	d
 d
eZdS )    N)AsyncIterator)TestCase   )
async_test)ABC      c                   @   s  e Zd Zedd Zedd Zedd Zedd Zed	d
 Zedd Z	edd Z
edd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd  Zed!d" Zed#d$ Zed%d& Zed'd( Zed)d* Zed+d, Zed-d. Zed/d0 Zed1d2 Zed3d4 Zed5d6 Zed7d8 Zed9d: Z ed;d< Z!ed=d> Z"ed?d@ Z#edAdB Z$edCdD Z%edEdF Z&edGdH Z'edIdJ Z(edKdL Z)dMS )NBuiltinsTestc                    :   |  tg dI d H  | tg dI d H  d S )N)Tr   string)Tr   r   )
assertTrueaitallassertFalseself r   O/home/ubuntu/.local/lib/python3.10/site-packages/aioitertools/tests/builtins.pytest_all_list      zBuiltinsTest.test_all_listc                    s2   |  ttI d H  | ttI d H  d S Nr   r   r   srange1r   sranger   r   r   r   test_all_range   s   zBuiltinsTest.test_all_rangec                    sF   |  tdd tD I d H  | tdd tD I d H  d S )Nc                 s       | ]}|V  qd S r   r   .0xr   r   r   	<genexpr>!       z2BuiltinsTest.test_all_generator.<locals>.<genexpr>c                 s   r   r   r   r   r   r   r   r!   "   r"   r   r   r   r   r   test_all_generator   s    $zBuiltinsTest.test_all_generatorc                    s>   |  tttI d H  | tttI d H  d S r   )r   r   r   iterr   r   r   r   r   r   r   test_all_async_generator$   s    z%BuiltinsTest.test_all_async_generatorc                    r   )N)Fr    )Fr   r&   )r   r   anyr   r   r   r   r   test_any_list+   r   zBuiltinsTest.test_any_listc                    sH   |  ttI d H  |  ttI d H  | ttI d H  d S r   r   r   r'   r   r   r   srange0r   r   r   r   test_any_range0   s   zBuiltinsTest.test_any_rangec                    sf   |  tdd tD I d H  |  tdd tD I d H  | tdd tD I d H  d S )Nc                 s   r   r   r   r   r   r   r   r!   8   r"   z2BuiltinsTest.test_any_generator.<locals>.<genexpr>c                 s   r   r   r   r   r   r   r   r!   9   r"   c                 s   r   r   r   r   r   r   r   r!   :   r"   r)   r   r   r   r   test_any_generator6   s     $zBuiltinsTest.test_any_generatorc                    sZ   |  tttI d H  |  tttI d H  | tttI d H  d S r   )r   r   r'   r$   r   r   r   r*   r   r   r   r   test_any_async_generator<   s    z%BuiltinsTest.test_any_async_generatorc                    L   t t}| |t d}|2 z3 d H W }| |t|  |d7 }q6 d S Nr   r   )r   r$   slistassertIsInstancer   assertEqualr   itidxitemr   r   r   test_iter_listD      

zBuiltinsTest.test_iter_listc                    r.   r/   )r   r$   r   r1   r   r2   r3   r   r   r   test_iter_rangeM   r8   zBuiltinsTest.test_iter_rangec                    s6   t   G  fddd}| }| t|  d S )Nc                       s   e Zd Z fddZdS )z7BuiltinsTest.test_iter_iterable.<locals>.async_iterablec                        S r   r   r   sentinelr   r   	__aiter__[      zABuiltinsTest.test_iter_iterable.<locals>.async_iterable.__aiter__N)__name__
__module____qualname__r=   r   r;   r   r   async_iterableZ   s    rB   objectr2   r   r$   )r   rB   aiterr   r;   r   test_iter_iterableV   s
   zBuiltinsTest.test_iter_iterablec                    s6   t   G  fddd}| }| t|| d S )Nc                       s$   e Zd Z fddZ fddZdS )z7BuiltinsTest.test_iter_iterator.<locals>.async_iteratorc                    r:   r   r   r   r;   r   r   r=   f   r>   zABuiltinsTest.test_iter_iterator.<locals>.async_iterator.__aiter__c                    r:   r   r   r   r;   r   r   	__anext__i   r>   zABuiltinsTest.test_iter_iterator.<locals>.async_iterator.__anext__N)r?   r@   rA   r=   rG   r   r;   r   r   async_iteratore   s    rH   rC   )r   rH   rE   r   r;   r   test_iter_iteratora   s
   zBuiltinsTest.test_iter_iteratorc                    s&   dd }| }|  t|| d S )Nc                   S  s   dV  dV  d S )Nr      r   r   r   r   r   	async_genq   s   
z9BuiltinsTest.test_iter_async_generator.<locals>.async_gen)r2   r   r$   )r   rK   agenr   r   r   test_iter_async_generatoro   s   z&BuiltinsTest.test_iter_async_generatorc                       t t}| t |I d H d | t |I d H d | t |I d H d | t t |I d H  W d    d S 1 sCw   Y  d S )Nr   r   r   )r   r$   r0   r2   nextassertRaisesStopAsyncIterationr   r4   r   r   r   test_next_listz      
"zBuiltinsTest.test_next_listc                    rN   )Nr   r   rJ   )r   r$   r   r2   rO   rP   rQ   rR   r   r   r   test_next_range   rT   zBuiltinsTest.test_next_rangec                    s.  G dd d}t | }| t |I d H d | t |I d H d | t |I d H d | t t |I d H  W d    n1 sJw   Y  tt}| t |I d H d | t |I d H d | t |I d H d | t t |I d H  W d    d S 1 sw   Y  d S )Nc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
z3BuiltinsTest.test_next_iterable.<locals>.async_iterc                 S   s
   d| _ d S )Nr   )indexr   r   r   r   __init__   s   
z<BuiltinsTest.test_next_iterable.<locals>.async_iter.__init__c                 S   s   | S r   r   r   r   r   r   r=      r>   z=BuiltinsTest.test_next_iterable.<locals>.async_iter.__aiter__c                 S   s   | j dkrt |  S )NrJ   )rV   rQ   	fake_nextr   r   r   r   rG      s   
z=BuiltinsTest.test_next_iterable.<locals>.async_iter.__anext__c                    s   t | j }|  jd7  _|S )Nr   )r0   rV   )r   valuer   r   r   rX      s   
z=BuiltinsTest.test_next_iterable.<locals>.async_iter.fake_nextN)r?   r@   rA   rW   r=   rG   rX   r   r   r   r   
async_iter   s
    rZ   r   r   r   )r   r$   r2   rO   rP   rQ   r0   )r   rZ   r4   r   r   r   test_next_iterable   s    "zBuiltinsTest.test_next_iterablec                    s   dd }t | }| t |I d H d | t |I d H d | t |I d H d | t t |I d H  W d    d S 1 sHw   Y  d S )Nc                  S     t D ]} | V  qd S r   r0   r6   r   r   r   rK         z9BuiltinsTest.test_next_async_generator.<locals>.async_genr   r   r   )r   r$   r2   rO   rP   rQ   )r   rK   r4   r   r   r   test_next_async_generator   s   "z&BuiltinsTest.test_next_async_generatorc                    sD   t dg}| t|dI d H d | t|dI d H d d S Nr   ?)r$   r2   r   rO   rR   r   r   r   test_next_default_iterable   s   
z'BuiltinsTest.test_next_default_iterablec                    sF   t dg}| t |dI d H d | t |dI d H d d S ra   )r   r$   r2   rO   rR   r   r   r    test_next_default_async_iterable   s   z-BuiltinsTest.test_next_default_async_iterablec                    s$   |  tttI d H t d S r   )r2   r   listr$   r0   r   r   r   r   	test_list   s   "zBuiltinsTest.test_listc                    (   |  tttI d H tt d S r   )r2   r   tupler$   r0   r   r   r   r   
test_tuple      &zBuiltinsTest.test_tuplec                    rg   r   )r2   r   setr$   r0   r   r   r   r   test_set   rj   zBuiltinsTest.test_setc                    s4   t t2 z3 d H W \}}| |t|  q6 d S r   r   	enumerater0   r2   r   rV   rY   r   r   r   test_enumerate   s   zBuiltinsTest.test_enumeratec                    s:   t td2 z3 d H W \}}| |t|d   q6 d S )Nr
   rm   ro   r   r   r   test_enumerate_start   s   z!BuiltinsTest.test_enumerate_startc                    sD   d}t tjt2 z3 d H W }| |t|   |d7 }q
6 d S r/   )r   mapstrlowerr0   r2   )r   r5   rY   r   r   r   test_map_function_list   s   
z#BuiltinsTest.test_map_function_listc                    sN   dd }d}t tj| 2 z3 d H W }| |t|   |d7 }q6 d S )Nc                  S  r\   r   r]   r^   r   r   r   gen   r_   z;BuiltinsTest.test_map_function_async_generator.<locals>.genr   r   )r   rr   rs   rt   r2   r0   )r   rv   r5   rY   r   r   r   !test_map_function_async_generator   s   
z.BuiltinsTest.test_map_function_async_generatorc                    sJ   dd }d}t |t2 z3 d H W }| |t| d  |d7 }q6 d S )Nc                       t dI d H  | d S Ng-C6?rJ   asynciosleepr    r   r   r   double      z4BuiltinsTest.test_map_coroutine_list.<locals>.doubler   rJ   r   )r   rr   r0   r2   )r   r~   r5   rY   r   r   r   test_map_coroutine_list   s   
z$BuiltinsTest.test_map_coroutine_listc                    sT   dd }dd }d}t || 2 z3 d H W }| |t| d  |d7 }q6 d S )Nc                  S  r\   r   r]   r^   r   r   r   rv     r_   z6BuiltinsTest.test_map_coroutine_generator.<locals>.genc                    rx   ry   rz   r}   r   r   r   r~   
  r   z9BuiltinsTest.test_map_coroutine_generator.<locals>.doubler   rJ   r   )r   rr   r2   r0   )r   rv   r~   r5   rY   r   r   r   test_map_coroutine_generator  s   
z)BuiltinsTest.test_map_coroutine_generatorc                       dd }|  t| I d H d |  ttdI d H d | td tg I d H  W d    n1 s9w   Y  | td tjd dd	I d H  W d    d S 1 sZw   Y  d S )
Nc                  S  r\   r   r]   r^   r   r   r   rv     r_   z(BuiltinsTest.test_max_basic.<locals>.genr   r
   r	   iterable is emptykwarg .+ not supportedfoor   )r2   r   maxrangeassertRaisesRegex
ValueErrorr   rv   r   r   r   test_max_basic     "zBuiltinsTest.test_max_basicc                    ^   |  tjtdddI d H d |  tjg ddI d H d |  tjg d dI d H d  d S )NrJ   r    defaultr   )r2   r   r   r   r   r   r   r   test_max_default$       zBuiltinsTest.test_max_defaultc                    Z   g d}dd }|  |dd |  t|I d H d |  tj||dI d H d d S )	Nstarbuzzguardc                 S      | d d d S Nr   sr   r   r   reverse.     z*BuiltinsTest.test_max_key.<locals>.reversepythonnohtypr   keyr   )r2   r   r   r   wordsr   r   r   r   test_max_key*      zBuiltinsTest.test_max_keyc                    r   )
Nc                  S  r\   r   r]   r^   r   r   r   rv   :  r_   z(BuiltinsTest.test_min_basic.<locals>.genr   r
   r   r   r   r   r   )r2   r   minr   r   r   r   r   r   r   test_min_basic8  r   zBuiltinsTest.test_min_basicc                    r   )NrJ   r    r   r   )r2   r   r   r   r   r   r   r   test_min_defaultG  r   zBuiltinsTest.test_min_defaultc                    r   )	Nr   c                 S   r   r   r   r   r   r   r   r   Q  r   z*BuiltinsTest.test_min_key.<locals>.reverser   r   r   r   r   )r2   r   r   r   r   r   r   test_min_keyM  r   zBuiltinsTest.test_min_keyc                    s"   |  ttI d H tt d S r   )r2   r   sumr   r   r   r   r   test_sum_range_default[  s    z#BuiltinsTest.test_sum_range_defaultc                    s    |  ttdI d H d d S )Nr   fooABC)r2   r   r   r0   r   r   r   r   test_sum_list_string_  s   z!BuiltinsTest.test_sum_list_stringc                    sR   d}t tt2 z3 d H W \}}| |t|  | |t|  |d7 }q	6 d S r/   )r   zipr0   r   r2   )r   r5   abr   r   r   test_zip_equale  s   
zBuiltinsTest.test_zip_equalc                    sB   g d}g d}t t ||I d H }g d}| || d S )N)r   r   c)r   r   rJ   r	      ))r   r   )r   r   )r   rJ   )r   re   r   assertListEqual)r   shortlongresultexpectedr   r   r   test_zip_shortestm  s   zBuiltinsTest.test_zip_shortestN)*r?   r@   rA   r   r   r   r#   r%   r(   r+   r,   r-   r7   r9   rF   rI   rM   rS   rU   r[   r`   rc   rd   rf   ri   rl   rp   rq   ru   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s    

















 






















r   )r{   collections.abcr   unittestr   aioitertoolsr   helpersr   r0   r   r   r   r*   r   r   r   r   r   <module>   s   
