U
    Pe                      @   s   d Z ddlZddlZzddlmZ W n   ddlmZ Y nX 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 ddlmZ G dd dejZdS )z
utils tests
===========
    N)patch)boundaryescape_markupformat_bytes_to_humanis_color_transparentSafeListget_random_colorget_hex_from_colorget_color_from_hex
strtotuple	QueryDictintersection
differenceinterpolate_get_platform
deprecatedreify)utilsc                   @   s$  e Zd Zdd Zdd Zdd Zdd Ze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ed+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Z d9d: Z!d;d< Z"d=d> Z#d?d@ Z$dAdB Z%dCdD Z&dES )F	UtilsTestc                 C   s   t d}| |d d S )NzSun [1] & Moon [2].z#Sun &bl;1&br; &amp; Moon &bl;2&br;.)r   assertEqual)selfescaped r   9/tmp/pip-unpacked-wheel-xzebddm3/kivy/tests/test_utils.pytest_escape_markup   s    zUtilsTest.test_escape_markupc                 C   sD   t d}| |d t ddd}| |d t d}| |d d S )Ni?  z6.31 KB   )Z	precisionz	6.3115 KBl   -\(}Yz	601.98 GB)r   r   )r   abcr   r   r   test_format_bytes_to_human   s    z$UtilsTest.test_format_bytes_to_humanc                 C   sL   t ddd}| |d t ddd}| |d t ddd}| |d d S )Nir   d   i  2   )r   r   )r   xr   r   r   test_boundary"   s    zUtilsTest.test_boundaryc                 C   sP   dddg}|  t| ddddg}|  t| ddddg}| t| d S )N   r   )ZassertFalser   
assertTrue)r   r   r   r   r   test_is_color_transparent*   s    
z#UtilsTest.test_is_color_transparentc                 C   s   dS )z This one has doc string. Nr   r   r   r   r   a_deprecated_function2   s    zUtilsTest.a_deprecated_functionc                 C   s   |    d S N)r(   r'   r   r   r   test_deprecated7   s    zUtilsTest.test_deprecatedc                 C   sZ   t dddg}| t|t | }| t|d | t|d | t|d d S )N1         @r   r%   
isinstancelistZiterater   nextr   slitr   r   r   test_SafeList_iterate:   s    zUtilsTest.test_SafeList_iteratec                 C   s^   t dddg}| t|t |jdd}| t|d | t|d | t|d d S )Nr+   r,   r-   T)reverser.   r2   r   r   r   test_SafeList_iterate_reverseB   s    z'UtilsTest.test_SafeList_iterate_reversec                 C   s:   t dddg}| t|t |  | t|d d S )Nr+   r,   r-   r   )r   r%   r/   r0   clearr   len)r   r3   r   r   r   test_SafeList_clearJ   s    zUtilsTest.test_SafeList_clearc                 C   sT   t  }| t|d | |d d t dd}| t|d | |d d d S )Nr            ?      ?alphar   r   r9   r   actualr   r   r   !test_get_random_color_fixed_alphaP   s    
z+UtilsTest.test_get_random_color_fixed_alphac                 C   s   t dd}| t|d d S )Nrandomr>   r   r@   rA   r   r   r   "test_get_random_color_random_alphaY   s    
z,UtilsTest.test_get_random_color_random_alphac                 C   s"   t dddg}d}| || d S )Nr   r$   z#00ff00r	   r   r   rB   expectedr   r   r   test_get_hex_from_color_noalpha]   s    z)UtilsTest.test_get_hex_from_color_noalphac                 C   s$   t ddddg}d}| || d S )Ng      ?gp=
ף?g?r=   z	#3fc4e57frF   rG   r   r   r   test_get_hex_from_color_alphab   s    z'UtilsTest.test_get_hex_from_color_alphac                 C   s:   t d}ddddg}tdD ]}| || ||  qd S )Nz#d1a9c4g8::?gtN055?g?r<   r   r
   rangeZassertAlmostEqualr   rB   rH   ir   r   r   test_get_color_from_hex_noalphag   s    z)UtilsTest.test_get_color_from_hex_noalphac                 C   s:   t d}ddddg}tdD ]}| || ||  qd S )Nz	#00FF7F7F        r<   g?r   rK   rM   r   r   r   test_get_color_from_hex_alpham   s    z'UtilsTest.test_get_color_from_hex_alphac                 C   sT   |  ttd |  ttd |  ttd |  ttd td}d}| || d S )Nzadis!_m%*+-=|z((12, 8, 473)z[12, 8, 473]]Z128473z(12, 8, 473))      i  )assertRaises	Exceptionr   r   rG   r   r   r   test_strtotuples   s    zUtilsTest.test_strtotuplec              	   C   s`   t  }| t|t d|_| |dd |j}| |d | t |j	}W 5 Q R X d S )Nr$   toto)
r   r%   r/   dictrW   r   getrT   AttributeErrorZnot_an_attribute)r   ZqdrW   Zfoor   r   r   test_QueryDict|   s    zUtilsTest.test_QueryDictc                 C   s   ddddg}ddddg}ddddg}ddddg}|  t||g  |  t||ddg |  t||| |  tg g g  |  t||| |  t||dddg |  t||dddg d S 	Nr   r   r   defgh)r   r   r   ZabcdZefghZfedcfeedr   r   r   test_intersection   s    zUtilsTest.test_intersectionc                 C   s   ddddg}ddddg}ddddg}ddddg}|  t||ddddg |  t||ddg |  tg g g  |  t||g  |  t||dg |  t||dddg |  t||dddg d S r\   )r   r   rb   r   r   r   test_difference   s    zUtilsTest.test_differencec                 C   s<   dddg}d}t ddD ]}t|d}| |||  qd S )N      $@      3@皙;@rP   r   r;   r    rL   r   r   )r   valuesr   rN   r   r   r   test_interpolate_solo   s
    

zUtilsTest.test_interpolate_soloc                 C   sR   dddg}dddg}d}t dd	D ]*}t|d
dg}| ||| || g q"d S )Nrf   rg   rh   g      $g      3g;)rP   rP   r   r;   r    iri   )r   r"   yprN   r   r   r   test_interpolate_multi   s    

z UtilsTest.test_interpolate_multic                 C   s*   d\}}t ddD ]}|||  }}q|S )zZ return 100th Fibonacci number
        This uses modern view of F sub 1 = 0, F sub 2 = 1. )r   r$   r,   e   )rL   )r   r   r   nr   r   r   fib_100   s    zUtilsTest.fib_100c                 C   s   | j }| j }||kstd S r)   )rq   AssertionError)r   firstsecondr   r   r   
test_reify   s    zUtilsTest.test_reifyc              	   C   s<   t dddi | t d W 5 Q R X | dtj d S )N
os.environ
KIVY_BUILDandroidr   rX   r   r   assertNotInosenvironr'   r   r   r   test_Platform_android   s    zUtilsTest.test_Platform_androidc              	   C   s<   t dddi | t d W 5 Q R X | dtj d S )Nrv   ZP4A_BOOTSTRAPZsdl2rx   ry   r'   r   r   r   test_Platform_android_with_p4a   s    z(UtilsTest.test_Platform_android_with_p4ac              	   C   s<   t dddi | t d W 5 Q R X | dtj d S )Nrv   ZANDROID_ARGUMENT rx   ry   r'   r   r   r   +test_Platform_android_with_android_argument   s    z5UtilsTest.test_Platform_android_with_android_argumentc              	   C   s@   t dddi t }| |d W 5 Q R X | dtj d S )Nrv   rw   Zios)r   rX   r   r   rz   r{   r|   )r   pfr   r   r   test_Platform_ios   s    zUtilsTest.test_Platform_iosc                 C   s   |  dd d S )Nwin32win_test_platformsr'   r   r   r   test_Platform_win32   s    zUtilsTest.test_Platform_win32c                 C   s   |  dd d S )Ncygwinr   r   r'   r   r   r   test_Platform_cygwin   s    zUtilsTest.test_Platform_cygwinc                 C   s   |  dd d S )NZlinux2linuxr   r'   r   r   r   test_Platform_linux2   s    zUtilsTest.test_Platform_linux2c                 C   s   |  dd d S )Ndarwinmacosxr   r'   r   r   r   test_Platform_darwin   s    zUtilsTest.test_Platform_darwinc                 C   s   |  dd d S )NZfreebsdr   r   r'   r   r   r   test_Platform_freebsd   s    zUtilsTest.test_Platform_freebsdc                 C   s   |  dd d S )NZ
randomdataunknownr   r'   r   r   r   test_Platform_unknown   s    zUtilsTest.test_Platform_unknownc                 C   s   |t _t }| ||k d S r)   )r   Z_sys_platformr   r%   )r   inputZtestvalr   r   r   r   r      s    zUtilsTest._test_platformsN)'__name__
__module____qualname__r   r   r#   r&   r   r(   r*   r5   r7   r:   rC   rE   rI   rJ   rO   rQ   rV   r[   rd   re   rk   rn   r   rq   ru   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r      sH   
		
	r   )__doc__r{   ZunittestZunittest.mockr   ZmockZ
kivy.utilsr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   Zkivyr   ZTestCaser   r   r   r   r   <module>   s   H