U
    lª/eC)  ã                   @   sl   d dl Z d dlmZ d dlmZ d dlZddlmZ dddg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(dKS )LÚBuiltinsTestc                 Ã   s<   |   t dddg¡I d H ¡ |  t dddg¡I d H ¡ d S )NTr   Ústringr   )Ú
assertTrueÚaitÚallÚassertFalse©Úself© r   ú?/tmp/pip-unpacked-wheel-n_uj7zou/aioitertools/tests/builtins.pyÚtest_all_list   s    zBuiltinsTest.test_all_listc                 Ã   s0   |   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                 Ã   sD   |   t dd„ tD ƒ¡I d H ¡ |  t dd„ tD ƒ¡I d H ¡ d S )Nc                 s   s   | ]
}|V  qd S r   r   ©Ú.0Úxr   r   r   Ú	<genexpr>!   s     z2BuiltinsTest.test_all_generator.<locals>.<genexpr>c                 s   s   | ]
}|V  qd S r   r   r   r   r   r   r   "   s     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                 Ã   s<   |   t dddg¡I d H ¡ |  t dddg¡I d H ¡ d S )NFr   Ú r   )r   r   Úanyr   r   r   r   r   Útest_any_list+   s    zBuiltinsTest.test_any_listc                 Ã   sF   |   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                 Ã   sd   |   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   s   | ]
}|V  qd S r   r   r   r   r   r   r   8   s     z2BuiltinsTest.test_any_generator.<locals>.<genexpr>c                 s   s   | ]
}|V  qd S r   r   r   r   r   r   r   9   s     c                 s   s   | ]
}|V  qd S r   r   r   r   r   r   r   :   s     r%   r   r   r   r   Útest_any_generator6   s      zBuiltinsTest.test_any_generatorc                 Ã   sX   |   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                 Ã   sJ   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   s    
zBuiltinsTest.test_iter_listc                 Ã   sJ   t  t¡}|  |t¡ d}|2 z$3 d H W }|  |t| ¡ |d7 }q6 d S r*   )r   r    r   r,   r   r-   r.   r   r   r   Útest_iter_rangeM   s    
zBuiltinsTest.test_iter_rangec                 ƒ   s4   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   ˆ S r   r   r   ©Úsentinelr   r   Ú	__aiter__[   s    zABuiltinsTest.test_iter_iterable.<locals>.async_iterable.__aiter__N)Ú__name__Ú
__module__Ú__qualname__r6   r   r4   r   r   Úasync_iterableZ   s   r:   ©Úobjectr-   r   r    )r   r:   Úaiterr   r4   r   Útest_iter_iterableV   s    zBuiltinsTest.test_iter_iterablec                 ƒ   s4   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                    s   ˆ S r   r   r   r4   r   r   r6   f   s    zABuiltinsTest.test_iter_iterator.<locals>.async_iterator.__aiter__c                    s   ˆ S r   r   r   r4   r   r   Ú	__anext__i   s    zABuiltinsTest.test_iter_iterator.<locals>.async_iterator.__anext__N)r7   r8   r9   r6   r?   r   r4   r   r   Úasync_iteratore   s   r@   r;   )r   r@   r=   r   r4   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)r-   r   r    )r   rC   Zagenr   r   r   Útest_iter_async_generatoro   s    z&BuiltinsTest.test_iter_async_generatorc              	   Ã   s|   t  t¡}|  t  |¡I d H d¡ |  t  |¡I d H d¡ |  t  |¡I d H d¡ |  t¡ t  |¡I d H  W 5 Q R X d S )Nr   r   r   )r   r    r+   r-   ÚnextÚassertRaisesÚStopAsyncIteration©r   r/   r   r   r   Útest_next_listz   s    
zBuiltinsTest.test_next_listc              	   Ã   s|   t  t¡}|  t  |¡I d H d¡ |  t  |¡I d H d¡ |  t  |¡I d H d¡ |  t¡ t  |¡I d H  W 5 Q R X d S )Nr   r   rB   )r   r    r   r-   rE   rF   rG   rH   r   r   r   Útest_next_rangeƒ   s    
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 5 Q R X ttƒ}|  t  |¡I d H d¡ |  t  |¡I d H d¡ |  t  |¡I d H d¡ |  t¡ t  |¡I d H  W 5 Q R X 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   r6   ’   s    z=BuiltinsTest.test_next_iterable.<locals>.async_iter.__aiter__c                 S   s   | j dkrtƒ ‚|  ¡ S )NrB   )rK   rG   Ú	fake_nextr   r   r   r   r?   •   s    
z=BuiltinsTest.test_next_iterable.<locals>.async_iter.__anext__c                 Ó   s   t | j }|  jd7  _|S )Nr   )r+   rK   )r   Úvaluer   r   r   rM   š   s    
z=BuiltinsTest.test_next_iterable.<locals>.async_iter.fake_nextN)r7   r8   r9   rL   r6   r?   rM   r   r   r   r   Ú
async_iterŽ   s   rO   r   r   r   )r   r    r-   rE   rF   rG   r+   )r   rO   r/   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 5 Q R X d S )Nc                  S  s   t D ]
} | V  qd S r   ©r+   ©r1   r   r   r   rC   ¯   s    z9BuiltinsTest.test_next_async_generator.<locals>.async_genr   r   r   )r   r    r-   rE   rF   rG   )r   rC   r/   r   r   r   Útest_next_async_generator­   s    z&BuiltinsTest.test_next_async_generatorc                 Ã   sB   t dgƒ}|  t |d¡I d H d¡ |  t |d¡I d H d¡ d S ©Nr   ú?)r    r-   r   rE   rH   r   r   r   Útest_next_default_iterableº   s    
z'BuiltinsTest.test_next_default_iterablec                 Ã   sD   t  dg¡}|  t  |d¡I d H d¡ |  t  |d¡I d H d¡ d S rT   )r   r    r-   rE   rH   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   )r-   r   Úlistr    r+   r   r   r   r   Ú	test_listË   s    zBuiltinsTest.test_listc                 Ã   s&   |   t t t¡¡I d H ttƒ¡ d S r   )r-   r   Úsetr    r+   r   r   r   r   Útest_setÑ   s    zBuiltinsTest.test_setc                 Ã   s2   t  t¡2 z 3 d H W \}}|  |t| ¡ q
6 d S r   ©r   Ú	enumerater+   r-   ©r   rK   rN   r   r   r   Útest_enumerate×   s    zBuiltinsTest.test_enumeratec                 Ã   s8   t  td¡2 z$3 d H W \}}|  |t|d  ¡ q6 d S )Nr
   r\   r^   r   r   r   Útest_enumerate_startÜ   s    z!BuiltinsTest.test_enumerate_startc                 Ã   sB   d}t  tjt¡2 z(3 d H W }|  |t|  ¡ ¡ |d7 }q6 d S r*   )r   ÚmapÚstrÚlowerr+   r-   )r   r0   rN   r   r   r   Útest_map_function_listã   s    z#BuiltinsTest.test_map_function_listc                 Ã   sL   dd„ }d}t  tj|ƒ ¡2 z(3 d H W }|  |t|  ¡ ¡ |d7 }q6 d S )Nc                  S  s   t D ]
} | V  qd S r   rQ   rR   r   r   r   Úgenì   s    z;BuiltinsTest.test_map_function_async_generator.<locals>.genr   r   )r   ra   rb   rc   r-   r+   )r   re   r0   rN   r   r   r   Ú!test_map_function_async_generatorê   s
    z.BuiltinsTest.test_map_function_async_generatorc                 Ã   sH   dd„ }d}t  |t¡2 z(3 d H W }|  |t| d ¡ |d7 }q6 d S )Nc                 Ó   s   t  d¡I d H  | d S ©Ng-Cëâ6?rB   ©ÚasyncioÚsleep©r   r   r   r   Údouble÷   s    z4BuiltinsTest.test_map_coroutine_list.<locals>.doubler   rB   r   )r   ra   r+   r-   )r   rl   r0   rN   r   r   r   Útest_map_coroutine_listõ   s
    z$BuiltinsTest.test_map_coroutine_listc                 Ã   sR   dd„ }dd„ }d}t  ||ƒ ¡2 z(3 d H W }|  |t| d ¡ |d7 }q"6 d S )Nc                  S  s   t D ]
} | V  qd S r   rQ   rR   r   r   r   re     s    z6BuiltinsTest.test_map_coroutine_generator.<locals>.genc                 Ó   s   t  d¡I d H  | d S rg   rh   rk   r   r   r   rl     s    z9BuiltinsTest.test_map_coroutine_generator.<locals>.doubler   rB   r   )r   ra   r-   r+   )r   re   rl   r0   rN   r   r   r   Útest_map_coroutine_generator   s    z)BuiltinsTest.test_map_coroutine_generatorc              	   Ã   s–   dd„ }|   t |ƒ ¡I d H d¡ |   t tdƒ¡I d H d¡ |  td¡ t g ¡I d H  W 5 Q R X |  td¡ tjd dd	I d H  W 5 Q R X d S )
Nc                  S  s   t D ]
} | V  qd S r   rQ   rR   r   r   r   re     s    z(BuiltinsTest.test_max_basic.<locals>.genr   r
   r	   úiterable is emptyúkwarg .+ not supportedÚfoo©rq   )r-   r   ÚmaxÚrangeÚassertRaisesRegexÚ
ValueError©r   re   r   r   r   Útest_max_basic  s    zBuiltinsTest.test_max_basicc                 Ã   s\   |   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 )NrB   r   ©Údefaultr   )r-   r   rs   rt   r   r   r   r   Útest_max_default   s     zBuiltinsTest.test_max_defaultc                 Ã   sZ   dddg}dd„ }|   |dƒd¡ |   t |¡I d H d¡ |   tj||dI d H d¡ d S )	NÚstarÚbuzzÚguardc                 S   s   | d d d… S ©Néÿÿÿÿr   ©Úsr   r   r   Úreverse*  s    z*BuiltinsTest.test_max_key.<locals>.reverseÚpythonÚnohtyp©Úkey)r-   r   rs   ©r   Úwordsrƒ   r   r   r   Útest_max_key&  s
    
zBuiltinsTest.test_max_keyc              	   Ã   s–   dd„ }|   t |ƒ ¡I d H d¡ |   t tdƒ¡I d H d¡ |  td¡ t g ¡I d H  W 5 Q R X |  td¡ tjd dd	I d H  W 5 Q R X d S )
Nc                  S  s   t D ]
} | V  qd S r   rQ   rR   r   r   r   re   6  s    z(BuiltinsTest.test_min_basic.<locals>.genr   r
   r   ro   rp   rq   rr   )r-   r   Úminrt   ru   rv   rw   r   r   r   Útest_min_basic4  s    zBuiltinsTest.test_min_basicc                 Ã   s\   |   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 )NrB   r   ry   r   )r-   r   r‹   rt   r   r   r   r   Útest_min_defaultC  s     zBuiltinsTest.test_min_defaultc                 Ã   sZ   dddg}dd„ }|   |dƒd¡ |   t |¡I d H d¡ |   tj||dI d H d¡ d S )	Nr|   r}   r~   c                 S   s   | d d d… S r   r   r   r   r   r   rƒ   M  s    z*BuiltinsTest.test_min_key.<locals>.reverser„   r…   r†   )r-   r   r‹   rˆ   r   r   r   Útest_min_keyI  s
    
zBuiltinsTest.test_min_keyc                 Ã   s    |   t t¡I d H ttƒ¡ d S r   )r-   r   Úsumr   r   r   r   r   Útest_sum_range_defaultW  s    z#BuiltinsTest.test_sum_range_defaultc                 Ã   s   |   t td¡I d H d¡ d S )Nrq   ZfooABC)r-   r   r   r+   r   r   r   r   Útest_sum_list_string[  s    z!BuiltinsTest.test_sum_list_stringc                 Ã   sP   d}t  tt¡2 z83 d H W \}}|  |t| ¡ |  |t| ¡ |d7 }q6 d S r*   )r   Úzipr+   r   r-   )r   r0   ÚaÚbr   r   r   Útest_zip_equala  s
    zBuiltinsTest.test_zip_equalc                 Ã   sV   dddg}dddddg}t  t  ||¡¡I d H }ddgddgddgg}|  ||¡ d S )	Nr“   r”   Úcr   r   rB   r	   é   )r   rX   r’   ZassertListEqual)r   ÚshortÚlongÚresultÚexpectedr   r   r   Útest_zip_shortesti  s
    
zBuiltinsTest.test_zip_shortestN))r7   r8   r9   r   r   r   r   r!   r$   r'   r(   r)   r2   r3   r>   rA   rD   rI   rJ   rP   rS   rV   rW   rY   r[   r_   r`   rd   rf   rm   rn   rx   r{   rŠ   rŒ   r   rŽ   r   r‘   r•   rœ   r   r   r   r   r      s”   














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













r   )ri   Útypingr   Zunittestr   Zaioitertoolsr   Zhelpersr   r+   rt   r   r   r&   r   r   r   r   r   Ú<module>   s   

