U
    e»{jY  ã                   @   sR   d dl Zd dlZd dlmZmZmZ G dd„ dƒZG dd„ dƒZG dd„ dƒZ	dS )	é    N)Úblock_reduceÚblock_replicateÚreshape_as_blocksc                   @   sD   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S )ÚTestReshapeAsBlocksc                 C   sV   t  d¡}t|dƒ}|jdks"t‚t|dƒ}|jdks:t‚t|dƒ}|jdksRt‚d S )Né   é   )é   r   é   ©r	   r	   r   )r   r   )ÚnpÚaranger   ÚshapeÚAssertionError©ÚselfÚdataZreshaped© r   ú_/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/nddata/tests/test_blocks.pyÚtest_1d
   s    



zTestReshapeAsBlocks.test_1dc                 C   sp   t  d¡ dd¡}t|dƒ}|jdks*t‚t  d¡ dd¡}t|dƒ}|jdksTt‚t|dƒ}|jd	kslt‚d S )
Nr   r	   ©r   r   )r   r   r   r   é@   r   )r	   r	   r   r   r
   )r   r   r	   r	   ©r   r   Úreshaper   r   r   r   r   r   r   Útest_2d   s    


zTestReshapeAsBlocks.test_2dc                 C   s\   t  d¡ ddd¡}t|dƒ}|jdks,t‚t  d¡ ddd¡}t|dƒ}|jd	ksXt‚d 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   Útest_3d   s    

zTestReshapeAsBlocks.test_3dc                 C   s8   t  d¡ dd¡}t|dƒ}d|d< |d dks4t‚d S )Nr   r	   r   éd   )r   r   )r   r   r   r   )r   r   r   r   r   r   r   r   r   Ú	test_view'   s    
zTestReshapeAsBlocks.test_viewc              	   C   s@   t  d¡ ddd¡}d}tjt|d�� t|dƒ W 5 Q R X d S )Nr   r	   zTblock_size must be a scalar or have the same length as the number of data dimensions©Úmatchr   ©r   r   r   ÚpytestÚraisesÚ
ValueErrorr   ©r   r   r"   r   r   r   Útest_invalid_block_dim-   s
    ÿz*TestReshapeAsBlocks.test_invalid_block_dimc              	   C   s>   t  d¡ dd¡}d}tjt|d�� t|dƒ W 5 Q R X d S )Nr   r	   zXEach dimension of block_size must divide evenly into the corresponding dimension of datar!   )r   r   r#   r'   r   r   r   Útest_invalid_block_size6   s
    ÿz+TestReshapeAsBlocks.test_invalid_block_sizec              	   C   sf   t  d¡ dd¡}d}tjt|d�� t|dƒ W 5 Q R X d}tjt|d�� t|dƒ W 5 Q R X d S )Nr   r	   z$block_size elements must be integersr!   )gÍÌÌÌÌÌ @r   z-block_size elements must be strictly positive)éÿÿÿÿr   r#   r'   r   r   r   Útest_invalid_block_value?   s    z,TestReshapeAsBlocks.test_invalid_block_valueN)
Ú__name__Ú
__module__Ú__qualname__r   r   r   r    r(   r)   r+   r   r   r   r   r   	   s   				r   c                   @   sD   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S )ÚTestBlockReducec                 C   s8   t  d¡}t  ddg¡}t|dƒ}t  ||k¡s4t‚dS )úTest 1D array.r	   r   é   r   N)r   r   Úarrayr   Úallr   ©r   r   ÚexpectedÚresultr   r   r   r   K   s    

zTestBlockReduce.test_1dc                 C   sH   t  d¡}d}t||t jd�| }t||t jd�}t  ||k¡sDt‚dS )z Test 1D array with func=np.mean.r	   ç       @©ÚfuncN)r   r   r   ÚsumÚmeanr3   r   )r   r   Ú
block_sizer5   Zresult_meanr   r   r   Útest_1d_meanR   s
    
zTestBlockReduce.test_1d_meanc                 C   s@   t  d¡ dd¡}t  dgg¡}t|dƒ}t  ||k¡s<t‚dS )úTest 2D array.r	   r   é   N)r   r   r   r2   r   r3   r   r4   r   r   r   r   Z   s    
zTestBlockReduce.test_2dc                 C   sT   t  d¡ dd¡}d}t||t jd�|d  }t||t jd�}t  ||k¡sPt‚dS )z Test 2D array with func=np.mean.r	   r   r7   r8   N)r   r   r   r   r:   r;   r3   r   ©r   r   r<   r5   r6   r   r   r   Útest_2d_meana   s
    zTestBlockReduce.test_2d_meanc                 C   sP   t  d¡ dd¡}t|dƒ}|dd…dd…f }t|dƒ}t  ||k¡sLt‚dS )zg
        Test trimming of 2D array when size is not perfectly divisible
        by block_size.
        é   r1   r   r   r   r	   N©r   r   r   r   r3   r   )r   Zdata1Úresult1Zdata2Úresult2r   r   r   Útest_2d_trimi   s
    

zTestBlockReduce.test_2d_trimc                 C   s<   t  d¡ dd¡}t|dƒ}t|dƒ}t  ||k¡s8t‚dS )ú$Test scalar block_size broadcasting.r   r	   r   r   NrC   ©r   r   rD   rE   r   r   r   Útest_block_size_broadcastingu   s    

z,TestBlockReduce.test_block_size_broadcastingc              	   C   s.   t  d¡}t t¡� t|dƒ W 5 Q R X dS )úTest block_size length.r   r   N)r   Zonesr$   r%   r&   r   ©r   r   r   r   r   Útest_block_size_len|   s    
z#TestBlockReduce.test_block_size_lenN)
r,   r-   r.   r   r=   r   rA   rF   rI   rL   r   r   r   r   r/   J   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S )ÚTestBlockReplicatec                 C   s<   t  d¡}t  ddddg¡}t|dƒ}t  ||k¡s8t‚dS )r0   r   r   g      à?N)r   r   r2   r   r3   r   r4   r   r   r   r   „   s    

zTestBlockReplicate.test_1dc                 C   s@   t  d¡}d}t||ƒ| }t||dd�}t  ||k¡s<t‚dS )z&Test 1D array with conserve_sum=False.r   r7   F©Zconserve_sumN)r   r   r   r3   r   r@   r   r   r   Útest_1d_conserve_sum‹   s
    
z'TestBlockReplicate.test_1d_conserve_sumc                 C   sT   t  d¡ dd¡}t  ddgddgddgddgg¡}t|dƒ}t  ||k¡sPt‚dS )r>   r   r   r   g      Ð?N)r   r   r   r2   r   r3   r   r4   r   r   r   r   “   s    "
zTestBlockReplicate.test_2dc                 C   sL   t  d¡ dd¡}d}t||ƒ|d  }t||dd�}t  ||k¡sHt‚dS )z&Test 2D array with conserve_sum=False.r?   r   r   r7   FrN   N©r   r   r   r   r3   r   r@   r   r   r   Útest_2d_conserve_sumš   s
    z'TestBlockReplicate.test_2d_conserve_sumc                 C   s<   t  d¡ dd¡}t|dƒ}t|dƒ}t  ||k¡s8t‚dS )rG   r	   r   r   NrP   rH   r   r   r   rI   ¢   s    

z/TestBlockReplicate.test_block_size_broadcastingc              	   C   s.   t  d¡}t t¡� t|dƒ W 5 Q R X dS )rJ   r1   r   N)r   r   r$   r%   r&   r   rK   r   r   r   rL   ©   s    
z&TestBlockReplicate.test_block_size_lenN)	r,   r-   r.   r   rO   r   rQ   rI   rL   r   r   r   r   rM   ƒ   s   rM   )
Únumpyr   r$   Zastropy.nddatar   r   r   r   r/   rM   r   r   r   r   Ú<module>   s
   A9