B
    F0d                 @   sd   d Z ddlZddlmZ ddlmZmZ G dd dZG dd dZG d	d
 d
Z	G dd dZ
dS )zfTest functions for fftpack.helper module

Copied from fftpack.helper by Pearu Peterson, October 2005

    N)assert_array_almost_equal)fftpic               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestFFTShiftc          
   C   s   ddddddddd	g	}dddd	dddddg	}t t|| t t|| dddddd
dddd	g
}d
dddd	dddddg
}t t|| t t|| d S )Nr               )r   r   fftshift	ifftshift)selfxy r   M/var/www/html/venv/lib/python3.7/site-packages/numpy/fft/tests/test_helper.pytest_definition   s    zTestFFTShift.test_definitionc             C   s6   x0dD ](}t j|f}ttt|| qW d S )N)r   r	   	   d      )nprandomr   r   r   r   )r   nr   r   r   r   test_inverse   s    
zTestFFTShift.test_inversec             C   s   dddgdddgddd	gg}d	ddgdddgdddgg}t tj|d
d| t tj|ddtj|dd t tj|d
d| t tj|ddtj|dd t t|| t t|| d S )Nr   r   r   r   r	   r
   r   r   r   )r   r   )axes)r   )r   r   r   r   )r   freqsZshiftedr   r   r   test_axes_keyword   s    zTestFFTShift.test_axes_keywordc             C   sv  ddgddgddgg}ddgddgddgg}t tj|dd| t tj|dd| t tj|dd| t tj|dgd| ddgddgddgg}t tj|dd| t tj|dd| ddgddgddgg}t tj|d	d| t tj|d	d| t tj|ddgd| t tj|ddgd| t tj|d
d| t tj|d
d| t t|| t t|| d
S )z1 Test 2D input, which has uneven dimension sizes r   r   r   r   r	      )r   )r   )r   r   N)r   r   r   r   )r   r   Z
shift_dim0Z
shift_dim1Zshift_dim_bothr   r   r   test_uneven_dims)   s4    



zTestFFTShift.test_uneven_dimsc                s   ddl mmm m d
 fdd	}d fdd	}xntdD ]b}x\tdD ]P}xJd	D ]B}tj||}t	t
||||| t	t
||||| qbW qXW qJW dS )z\ Test that the new (>=v1.15) implementation (see #10073) is equal to the original (<=v1.14) r   )asarrayconcatenatearangetakeNc       	         s   | }|j }|dkr$tt|}nt|tr4|f}|}xD|D ]<}|j| }|d d } || |f}|||}q>W |S )z& How fftshift was implemented in v1.14Nr   r   )ndimlistrange
isinstanceintshape)	r   r   tmpr'   r   kr   p2mylist)r%   r#   r$   r&   r   r   original_fftshiftZ   s    


z>TestFFTShift.test_equal_to_original.<locals>.original_fftshiftc       	         s   | }|j }|dkr$tt|}nt|tr4|f}|}xH|D ]@}|j| }||d d  } || |f}|||}q>W |S )z( How ifftshift was implemented in v1.14 Nr   r   )r'   r(   r)   r*   r+   r,   )	r   r   r-   r'   r   r.   r   r/   r0   )r%   r#   r$   r&   r   r   original_ifftshiftj   s    


z?TestFFTShift.test_equal_to_original.<locals>.original_ifftshift   )r   r   N)r   )r   r   )N)N)Z
numpy.corer#   r$   r%   r&   r)   r   r   Zrandr   r   r   r   )r   r1   r2   ijZaxes_keywordZinpr   )r%   r#   r$   r&   r   test_equal_to_originalV   s    
z#TestFFTShift.test_equal_to_originalN)__name__
__module____qualname__r   r   r    r"   r6   r   r   r   r   r      s
   
-r   c               @   s   e Zd Zdd ZdS )TestFFTFreqc          
   C   s   ddddddddd	g	}t d
td
 | t d
t td
t | dddddddddd	g
}t dtd | t dt tdt | d S )Nr   r   r   r   r	   r
   r   r   r   r   r   
   )r   r   Zfftfreqr   )r   r   r   r   r   r      s    zTestFFTFreq.test_definitionN)r7   r8   r9   r   r   r   r   r   r:      s   r:   c               @   s   e Zd Zdd ZdS )TestRFFTFreqc             C   s~   dddddg}t dtd | t dt tdt | ddddddg}t dtd | t dt tdt | d S )	Nr   r   r   r   r	   r   r!   r;   )r   r   Zrfftfreqr   )r   r   r   r   r   r      s    zTestRFFTFreq.test_definitionN)r7   r8   r9   r   r   r   r   r   r<      s   r<   c               @   s   e Zd Zdd ZdS )
TestIRFFTNc             C   s2   t jd\}}|d|  }d}tj||d d S )N)r   r3          y              ?)r   )r   )r   r   r   Zirfftn)r   arZaiar   r   r   r   test_not_last_axis_success   s    z%TestIRFFTN.test_not_last_axis_successN)r7   r8   r9   rB   r   r   r   r   r=      s   r=   )__doc__numpyr   Znumpy.testingr   r   r   r   r:   r<   r=   r   r   r   r   <module>   s   }