U
    O8cD                     @   s   d dl Zd dlmZmZmZ d dlZd dlmZ dd Z	dd Z
dd	 Zejd
ddd Zdd Zdd Zdd Zdd Zdd Zdd ZG dd dZdS )    N)assert_array_equalassert_equalassert_raises)chainc                  C   s   dddgdddggdddgdddggg} dD ]R}t j| |d}t j|dd}t|jt j t|t dgdggd	gd
ggg q,ttt jt j| t	d d S )N   r   ?bBhHiIlLqQdtypeaxis   @          )
nparraypackbitsr   r	   uint8r   r   	TypeErrorfloat)adtarrb r   A/tmp/pip-unpacked-wheel-fd_gsd75/numpy/lib/tests/test_packbits.pytest_packbits   s    &r   c                  C   s^   ddddddddg} d	D ]@}| D ]6}t j||d
}t |}t|jt j t|jd q qd S )Nr   
      r   r    r   r!   r   r    r!   r!   r   r   r   r!   r   r   r   r!   r   r   r   r   r   )r   emptyr   r   r	   r   shape)shapesr   r)   r   r   r   r   r   test_packbits_empty   s          
r+   c                  C   s   ddgfddddgfddddgfddd	d
gfddddgfddddgfddddgfddddgfg} dD ]Z}| D ]P\}}t |D ]>\}}tj||d}tj||d}t|jtj t|j| q|qlqdd S )Nr   r   )   r!   r   )r       r   r"   )r,   r   r!   )r    r   r-   r#   )r   r,   r!   )r   r    r-   r$   r-   r   r   r%   r   r-   r   r&   r   r   r-   r'   r   r   r   )	enumerater   r(   r   r   r	   r   r)   )r*   r   in_shapeZ
out_shapesax	out_shaper   r   r   r   r   test_packbits_empty_with_axis    s     
r5   bitorderlittlebigc              .     s
  t ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddg,}|d}dD ]}t j||d t j d | d}t|jt j ddd	dd
dddddddddddddddd	ddd	ddddddddddddddddddddddddddddddddddddddddddddd	ddddddddddddddd	dddddddddddddddddddddddddddddgq}| d krt|| tt j|| d!d d" |  fd#d$t	dd%D }t|ddddd&dd'd%ddddd(d)d	g  
d*d+ t j dd,}t|jt j t|d-d.d/d/d0d1d2d3d3d4dd5d6d6d7d7d8d8d9d:d;d<d=d>d?gd@dAdddd4dBdCdCd3d3dDddEdFdGdHdIdJdKdLdMdNdCdOgddPddAdQd'dRdSdTd0d0d0dUdVdVdWdddXdYdZd[d[d\d]gd^dVdVdGd_d`d`dd@d?dadadbdcdddedfdgdhdididBdjdkdlgdddd	dmddndododddHdpddodddHdpdpdqddd	dgg t j dd,}t|jt j t|ddd	dgddddgddddgddddgd	dddgddddgddddgddddgddddgddddgddddgddddgddddgddddgddddgddddgddddgddddgddd	dgddd
dgddddgddddgddddgddddgddddgddddgddddgddddgddddgddddgddddgddddgddddgddddgddddgddddgg$  j  t j dd,}t|jt j t|ddddd	dddddddddddddddddddddddddddddddg$ddddddddddddddddddddddddddddddddddddg$d	dddddddddddddddddd	d
ddddddddddddddddg$ddddddddddddddddddddddddddddddddddddg$g t j dd,}t|jt j t|d-d@dd^dgd.dAdPdVdgd/dddVdgd/ddAdGd	gd0ddQd_dmgd1d4d'd`dgd2dBdRd`dngd3dCdSddogd3dCdTd@dogd4d3d0d?dgdd3d0dadgd5dDd0dadHgd6ddUdbdpgd6dEdVdcdgd7dFdVdddogd7dGdWdedgd8dHddfdgd8dIddgdHgd9dJdXdhdpgd:dKdYdidpgd;dLdZdidqgd<dMd[dBdgd=dNd[djdgd>dCd\dkd	gd?dOd]dldgg qrdrD ]z}t j||d t jjt |jt |j j|ds}d||dk<  ||9  t j dtd,}tt |d d" | 	qpttt jt j|td d S )uNr   r   r-   r   r   r   r6         r                     q         ~            ?   8         p               r9   r6   c                    s(   g | ] }t j d |  d dd qS )Nr   r
   )r   r   ).0ir   r   r   
<listcomp>Y   s     z'test_packbits_large.<locals>.<listcomp>               $      r                  W   S                     (   i   k   K   J   X   H         Z   w   m   I   r            -   )   h   z      x      <   4                                    D      \   N   n   '                           P   0   r         Z
bBhHiIlLqQ)lowhighsizer	   r
   )r   r   repeatr   r   r	   r   r   
unpackbitsrangeZreshapeTcopyrandomrandintZiinfominmaxr   Zastyper   r   r   )r6   r   r	   r   rZrndr   rW   r   test_packbits_large4   sD   ,                                                                                                                                                                                                                                                                          

                                                                                           

                                                                  


































%
                                                                                         

 r   c                  C   s>   t ddD ].} dD ]$}tjd| ftd}tj|dd qq
d S )Ni  i  r      r   r   r   )r   r   Zonesboolr   )sr   xr   r   r   test_packbits_very_large   s    r   c                  C   s   t jdgdgdggt jd} t j| dd}t|jt j t|t ddddddddgddddddddgddddddddgg d S )Nr,   r>      r   r   r   r   )r   r   r   r   r   r	   r   r   r   r   r   r   test_unpackbits   s    r   c                  C   s   t jdgdgdggt jd} t j| dd}t|jt j t j| ddd}t j| dd	d}t|| t| t j|ddd t|d d d d d
f | t| t j|dd	d tt	t j| dd tt
t j| dd d S )Nr,   r>   r   r   r   r   r8   r:   r9   r
   r   rS   r    )r   r   r   r   r   r	   r   r   r   
ValueErrorr   )r   r   Zb_littleZb_bigr   r   r   test_pack_unpack_order   s    
r   c                  C   s<   t jdt jd} t | }t|jt j t|t d d S )Nr   r   )r   r(   r   r   r   r	   r   r   r   r   r   test_unpackbits_empty   s    
r   c               
   C   s   dgdfdddgdfdddgdfdd	d
gdfdddgdfdddgdfdddgdfdddgdfg} | D ]R\}}t |D ]@\}}tj|tjd}tj||d}t|jtj t|j| qtqdd S )Nr   )r,   r[   r   )rY   r-   r   )rY   r[   r   )r,   r   r[   )rY   r   r[   )rY   r   r-   )r   rY   r[   )r   r,   r[   )r   rY   r-   r.   )r[   r   r   )r   r[   r   r/   )r   r   r[   r0   r'   r   r   )r1   r   r(   r   r   r   r	   r)   )r*   Z	in_shapesr4   r3   r2   r   r   r   r   r   test_unpackbits_empty_with_axis   s    
r   c               	   C   s   t jdt jd} tt t | |  tt t | d d d | d d d  t | d} tt jt j| dddd|  | j } tt jt j| dddd|  d S )Ni  r   r,   )r-   r   r   r   r   )	r   Zaranger   r   r   r   Ztiler   r   )dr   r   r   test_unpackbits_large  s    *
r   c                   @   s  e Zd ZejdddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddggejdZejdejdZe	 edd< ejdejdZ
eddd  	 e
dd< ejdejdZeedd	dd	f< ejd
dejdeededdddd Zejdi ddigdd Zejd
dejdeededdddd Zejdi ddid
didddd
didddgdd Zdd ZdS )	TestCountr   r   r   9   N1   r
   )	   r   r>   r6   r7   count:   c                 C   s\   |dk r|d }n|}t j| j|d}t j|||d}t|jt j t|| jd |  d S )Nr   r   rS   )r   r6   	r   r   r   r   r   r	   r   r   padded1)selfr6   r   cutoffpackedunpackedr   r   r   test_roundtrip.  s    
zTestCount.test_roundtripkwargsc                 C   s@   t | j}t j|f|}t|jt j t|| jd d  d S )Nr
   r   )r   r   r   r   r   r   r   
test_count<  s    zTestCount.test_countrl   c                 C   s   |dk r|d }n|}t j| jd|d}t j|d||d}t|jt j t|| jd |d | jj	d f  t j| jd|d}t j|d||d}t|jt j t|| jd | jj	d d |f  d S )Nr   r   r:   )r   r   r6   )
r   r   r   r   r   r	   r   r   padded2r)   )r   r6   r   r   packed0	unpacked0packed1	unpacked1r   r   r   test_roundtrip_axisE  s    

$
zTestCount.test_roundtrip_axisr8   )r6   r   r9   c                 C   sF  t j| jdd}t j|fddi|}t|jt j |dddkrjt|| j	d dd | jj
d f  n6t|d d dd d f | j	d dd | jj
d f  t j| jdd}t j|fddi|}t|jt j |dddkrt|| j	d | jj
d d df  n6t|d d d d df | j	d | jj
d d df  d S )Nr   r   r   r6   r9   r
   r   )r   r   r   r   r   r	   r   getr   r   r)   )r   r   r   r   r   r   r   r   r   test_axis_countZ  s    &6&zTestCount.test_axis_countc                 C   sj   t j| jdd}ttt j|ddd t j| jdd}ttt j|ddd t | j}ttt j|dd d S )Nr   r   r   )r   r   r   r   )r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   test_bad_countr  s    zTestCount.test_bad_count)__name__
__module____qualname__r   r   r   r   zerosr   ZravelZpadded1br   r   pytestmarkparametrizer   r   r   r   r   r   r   r   r   r   r   r     sL   	 
 
r   )Znumpyr   Znumpy.testingr   r   r   r   	itertoolsr   r   r+   r5   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s    
 "		