3
Kd^                 @   sz  d dl Zd dlZd dlZd dlZ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 d dlmZmZmZmZmZ ejd*kZdd ZG dd	 d	ZG d
d dZG dd dZG dd dZ G dd dZ!G dd dZ"G dd dZ#G dd dZ$G dd dZ%G dd dZ&G dd dZ'G dd dZ(G d d! d!Z)G d"d# d#Z*G d$d% d%Z+G d&d' d'Z,d(d) Z-dS )+    N)apply_along_axisapply_over_axesarray_splitsplithsplitdsplitvsplitdstackcolumn_stackkrontileexpand_dimstake_along_axisput_along_axis)assert_assert_equalassert_array_equalassert_raisesassert_warns       c                s   t j  fdd}|S )z: hack in keepdims behavior into a function taking an axis c                s.    | fd|i|}|d kr d}t j||dS )Naxisr   )r   )npr   )ar   kwargsres)func S/var/www/html/virt/lib64/python3.6/site-packages/numpy/lib/tests/test_shape_base.pywrapped   s    z_add_keepdims.<locals>.wrapped)	functoolswraps)r   r   r   )r   r   _add_keepdims   s    r"   c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestTakeAlongAxisc       
   	   C   s   ddl m} |ddd}tjtjt fttjttjt fttj	ttj
t ftjtjtddfg}xl|D ]d\}}}xXtt|jdg D ]@}||fd	|i|}||fd	|i|}	t|t||	|d
 qW qnW dS )z- Test it translates from arg<func> to <func> r   )rand         r   )ZkthNr   )r   )numpy.randomr$   r   sortZargsortdictr"   minargminmaxargmax	partitionZargpartitionlistrangendimr   r   )
selfr$   r   funcsr   Zargfuncr   r   Za_funcZai_funcr   r   r   test_argequivalent   s    z$TestTakeAlongAxis.test_argequivalentc             C   s   t jd}t jdt jd}t||dd ttt|t jddd ttt||jt	dd ttt||jt
dd tt jt||dd dS )	z4 Test it errors when indices has too few dimensions 
   r   )dtype   )r   N)r6   r6   )r6   r   )r   onesintpr   r   
ValueErrorarray
IndexErrorZastypeboolfloat	AxisError)r3   r   air   r   r   test_invalid1   s    
zTestTakeAlongAxis.test_invalidc             C   s:   t jd	}t jd
t jd}t||dd}t|j|j dS )zC Test everything is ok with empty results, even with inserted dims r%   r&   r'   r   )r7   r8   )r   N)r%   r&   r'   )r%   r   r'   )r   r9   r:   r   r   shape)r3   r   rA   actualr   r   r   
test_emptyB   s    
zTestTakeAlongAxis.test_emptyc             C   s8   t jd	}t jd
t jd}t||dd}t|jd dS )zD Test that non-indexing dimensions are broadcast in both directions r%   r&   r8   r   r'   )r7   )r   N)r%   r&   r8   )r8   r   r'   )r%   r   r'   )r   r9   r:   r   r   rC   )r3   r   rA   rD   r   r   r   test_broadcastJ   s    
z TestTakeAlongAxis.test_broadcastN)__name__
__module____qualname__r5   rB   rE   rF   r   r   r   r   r#      s   r#   c               @   s   e Zd Zdd Zdd ZdS )TestPutAlongAxisc             C   s   t jdddgdddgg}xbtt|jd g D ]J}|j }tt j||d}t||d	|d tt j	||d}t
|| q0W d S )
Nr6         <   (   2   )r   c   i)r   r<   r0   r1   r2   copyr"   r.   r   r,   r   )r3   Za_baser   r   Zi_maxZi_minr   r   r   test_replace_maxS   s    z!TestPutAlongAxis.test_replace_maxc             C   sL   t jd}t jdt jdjdd }t||ddd	 tt||dd	d d
S )zD Test that non-indexing dimensions are broadcast in both directions r%   r&   r8   r6   )r7   r   r'   rL   )r   N)r%   r&   r8   )r8   r   r'   )r   r9   aranger:   reshaper   r   r   )r3   r   rA   r   r   r   rF   c   s    
zTestPutAlongAxis.test_broadcastN)rG   rH   rI   rR   rF   r   r   r   r   rJ   R   s   rJ   c               @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	fddZ
ej	fddZej	fddZdd Zdd Zdd Zdd Zdd ZdS )TestApplyAlongAxisc             C   s6   t jdd}tttd|t|t j|jd   d S )NrL   r6   dr   r8   )rL   r6   )r   r9   r   r   lenrC   )r3   r   r   r   r   test_simplel   s    zTestApplyAlongAxis.test_simplec             C   s6   t jdd}tttd|t|t j|jd   d S )Nr6   e   rV   r   r8   )r6   rY   )r   r9   r   r   rW   rC   )r3   r   r   r   r   test_simple101q   s    z!TestApplyAlongAxis.test_simple101c             C   s@   t jdjd}ttt jd|dddgdddgd	d
dgg d S )N   r%   r   rK   !   $   '   *   -   0   3   )r%   r%   r%   )r   rS   rT   r   r   sum)r3   r   r   r   r   test_3dv   s    zTestApplyAlongAxis.test_3dc             C   s   dd }G dd dt j}t jddgddggj|}t jddgd	d
ggj|}t|d|}tt|| t|| t|d|}tt|| t|| d S )Nc             S   s   | d S )Nr   r   )rowr   r   r   double|   s    z9TestApplyAlongAxis.test_preserve_subclass.<locals>.doublec               @   s   e Zd ZdS )z<TestApplyAlongAxis.test_preserve_subclass.<locals>.MyNDArrayN)rG   rH   rI   r   r   r   r   	MyNDArray   s   rg   r   r8   r   r%   r&      )r   ndarrayr<   viewr   r   
isinstancer   )r3   rf   rg   mexpectedresultr   r   r   test_preserve_subclass{   s    
z)TestApplyAlongAxis.test_preserve_subclassc             C   sL   G dd dt j}dd }t jd	j|}tt|d|t jdddg d S )
Nc               @   s   e Zd ZdZdS )z9TestApplyAlongAxis.test_subclass.<locals>.MinimalSubclassr8   N)rG   rH   rI   datar   r   r   r   MinimalSubclass   s   rq   c             S   s   | j S )N)rp   )r<   r   r   r   minimal_function   s    z:TestApplyAlongAxis.test_subclass.<locals>.minimal_functionrh   r%   r   r8   )rh   r%   )r   ri   zerosrj   r   r   r<   )r3   rq   rr   r   r   r   r   test_subclass   s
    z TestApplyAlongAxis.test_subclassc             C   sL   t jdj|}tt jd|}tt|| t|t jdddgj| d S )Nrh   r%   r   )rh   r%   )	r   r9   rj   r   rc   r   rk   r   r<   )r3   clsr   r   r   r   r   test_scalar_array   s    z$TestApplyAlongAxis.test_scalar_arrayc          	   C   s   dd }t jdj|}t|d|}tt|| t|t jdddgj| t|d|}tt|| t|t jddddddgj| d S )Nc             S   s    t | jd tjtj| ddS )z/ Sum x, returning a 0d array of the same class r8   T)Zkeepdims)r   r2   r   squeezerc   )xr   r   r   	sum_to_0d   s    z3TestApplyAlongAxis.test_0d_array.<locals>.sum_to_0drh   r%   r   r8   )rh   r%   )r   r9   rj   r   r   rk   r   r<   )r3   ru   ry   r   r   r   r   r   test_0d_array   s    z TestApplyAlongAxis.test_0d_arrayc                s2  fddt jdjd td }t j fddt jd D dd	j}tt	|t	| t|| td }t j fd
dt jd D dd	j}tt	|t	| t|| t jdjdtd}t jfddtjd D dd	j}tt	|t	| t|| d S )Nc                s0   t | jd | ddd | dddf  j S )z/produces an asymmetric non-square matrix from xr8   N)r   r2   rj   )rx   )ru   r   r   f1to2   s    z5TestApplyAlongAxis.test_axis_insertion.<locals>.f1to2rh   r%   r   c                s    g | ]} d d |f qS )Nr   ).0i)a2dr|   r   r   
<listcomp>   s    z:TestApplyAlongAxis.test_axis_insertion.<locals>.<listcomp>r8   )r   c                s    g | ]} |d d f qS )Nr   )r}   r~   )r   r|   r   r   r      s    r'   c                s6   g | ]. t j fd dtjd D ddqS )c                s"   g | ]} |d d f qS )Nr   )r}   r~   )a3dr|   jr   r   r      s    zETestApplyAlongAxis.test_axis_insertion.<locals>.<listcomp>.<listcomp>r   )r   )r   stackr1   rC   )r}   )r   r|   )r   r   r      s   r      )rh   r%   r{   rK   Z   )rh   r'   r%   r{   )
r   rS   rT   r   r   r1   rC   rj   r   type)r3   ru   rD   rm   r   )r   r   ru   r|   r   test_axis_insertion   s,    

z&TestApplyAlongAxis.test_axis_insertionc             C   s4   G dd dt j}| j| | j| | j| d S )Nc               @   s   e Zd ZdS )zFTestApplyAlongAxis.test_subclass_preservation.<locals>.MinimalSubclassN)rG   rH   rI   r   r   r   r   rq      s   rq   )r   ri   rv   rz   r   )r3   rq   r   r   r   test_subclass_preservation   s    

z-TestApplyAlongAxis.test_subclass_preservationc             C   s   dd }t jdjd	}t|d|}tt|t jj t|j	d t
|d d d d df j||d d df j t
|d d d d df j||d d df j t
|d d d d df j||d d df j d S )
Nc             S   s@   t | jd | ddd | dddf  }tjj|d dk|S )z/produces an asymmetric non-square matrix from xr8   Nr'   r   r{   )r   r2   r   maZmasked_where)rx   r   r   r   r   r|      s    z8TestApplyAlongAxis.test_axis_insertion_ma.<locals>.f1to2rh   r%   r   r8   r   r   )rh   r%   )r   rS   rT   r   r   rk   r   Zmasked_arrayr   r2   r   mask)r3   r|   r   r   r   r   r   test_axis_insertion_ma   s    00z)TestApplyAlongAxis.test_axis_insertion_mac             C   sH   dd }t j|dt jddgddgg}t|t jddgddgg d S )Nc             S   s   | d | d fS )Nr8   r   r   )rx   r   r   r   	sample_1d   s    z7TestApplyAlongAxis.test_tuple_func1d.<locals>.sample_1dr8   r   r%   r&   )r   r   r<   r   )r3   r   r   r   r   r   test_tuple_func1d   s     z$TestApplyAlongAxis.test_tuple_func1dc             C   s|   dd }t jd}ttt j|d| ttt j|d| dd }t jd	}t j|d|}t|t jd ttt j|d| d S )
Nc             S   s   t d d S )NF)r   )rx   r   r   r   
never_call   s    z1TestApplyAlongAxis.test_empty.<locals>.never_callr   r8   c             S   s   t t| dk dS )Nr   r8   )r   rW   )rx   r   r   r   
empty_to_1   s    z1TestApplyAlongAxis.test_empty.<locals>.empty_to_1r6   )r   r   )r6   r   )r   emptyr   r;   r   r   r9   )r3   r   r   r   rD   r   r   r   rE      s    

zTestApplyAlongAxis.test_emptyc             C   s   t jddhddhddhgddhd	d
hddhgg}t jdd d|}t jddddhddd	d
hddddhg}t|| x.t j|jD ]}tt|| t||  qW d S )Nr8      r      r%   r\   r&   ,   r'   7   rh   B   c             S   s
   t j|  S )N)setunion)r   r   r   r   <lambda>  s    z>TestApplyAlongAxis.test_with_iterable_object.<locals>.<lambda>r   )r   r<   r   r   ZndindexrC   r   )r3   rV   rD   rm   r~   r   r   r   test_with_iterable_object  s    (
z,TestApplyAlongAxis.test_with_iterable_objectN)rG   rH   rI   rX   rZ   rd   ro   rt   r   ri   rv   rz   r   r   r   r   rE   r   r   r   r   r   rU   k   s   %rU   c               @   s   e Zd Zdd ZdS )TestApplyOverAxesc             C   sH   t jdjddd}tt j|ddg}t|t jdgdgdggg d S )	N   r   r%   r&   r   rM   \   |   )r   rS   rT   r   rc   r   r<   )r3   r   Zaoa_ar   r   r   rX     s    zTestApplyOverAxes.test_simpleN)rG   rH   rI   rX   r   r   r   r   r     s   r   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestExpandDimsc             C   sV   d}t j|}xBtddD ]4}t||}t|j| dk tt j|j|k qW d S )Nr   r%   r&   r'   r8   )r   r%   r&   r'   )r   r   r1   r   r   rC   rw   )r3   sr   r   br   r   r   test_functionality  s    

z!TestExpandDims.test_functionalityc             C   sn   t jd}t j|ddjd	ks"tt j|ddjdks:tt j|ddjdksRtt j|ddjdksjtd S )Nr%   r   r8   r   )r   r'   )r%   r%   r%   )r   r8   r   )r8   r8   r8   r%   r%   r%   r{   )r   r{   r   )r8   r%   r%   r%   r8   r8   )r   r%   r'   )r8   r%   r%   r8   r%   r8   r   )r   r   r   )r8   r8   r%   r8   r%   r%   )r   r   r   rC   AssertionError)r3   r   r   r   r   test_axis_tuple!  s
    
zTestExpandDims.test_axis_tuplec             C   s\   d}t j|}tt jt|d tt jt|d t jd	}tt jt|d tt jt|d d S )Nr   r%   r&   r'   rh   r   )r   r%   r&   r'   i)r%   r%   r%   )r   r   )r   r'   )r   r   r   r@   r   )r3   r   r   r   r   r   test_axis_out_of_range(  s    

z%TestExpandDims.test_axis_out_of_rangec             C   s   t jd}ttt|dd d S )Nr%   r8   )r   )r%   r%   r%   )r8   r8   )r   r   r   r;   r   )r3   r   r   r   r   test_repeated_axis2  s    
z!TestExpandDims.test_repeated_axisc             C   sf   t jdjd	}t jj||d dkd}t j|dd}tt|t jj t	|j
d
 t	|jj
d d S )Nr6   r   r'   r%   r   )r   r8   )r   )r   r'   )r   r8   r'   )r   r8   r'   )r   rS   rT   r   r<   r   r   rk   ZMaskedArrayr   rC   r   )r3   r   Zexpandedr   r   r   test_subclasses6  s    zTestExpandDims.test_subclassesN)rG   rH   rI   r   r   r   r   r   r   r   r   r   r     s
   
r   c               @   sf   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	j
e dddd Zdd Zdd Zdd ZdS )TestArraySplitc             C   s   t jd}ttt|d d S )Nr6   r   )r   rS   r   r;   r   )r3   r   r   r   r   test_integer_0_splitA  s    
z#TestArraySplit.test_integer_0_splitc             C   s  t jd}t|d}t jdg}t|| t|d}t jdt jddg}t|| t|d}t jdt jddt jddg}t|| t|d}t jdt jddt jdd	t jd	dg}t|| t|d}t jdt jddt jddt jdd	t jd	dg}t|| t|d}t jdt jddt jddt jdd	t jd	d
t jd
dg}t|| t|d}t jdt jddt jddt jddt jdd	t jd	d
t jd
dg}t|| t|d	}t jdt jddt jddt jddt jddt jdd	t jd	d
t jd
dg}t|| t|d
}t jdt jddt jddt jddt jddt jddt jdd	t jd	d
t jd
dg	}t|| t|d}t jdt jddt jddt jddt jddt jddt jddt jdd	t jd	d
t jd
dg
}t|| t|d}t jdt jddt jddt jddt jddt jddt jddt jdd	t jd	d
t jd
dt jg g}t|| d S )Nr6   r8   r   r'   r%   r&      rh      	   r   )r   rS   r   compare_resultsr<   )r3   r   r   desiredr   r   r   test_integer_splitE  sb    





 





"





"



z!TestArraySplit.test_integer_splitc             C   s   t jt jdt jdg}t|ddd}t jt jdgt jt jdgt jdg}t|| t|jj|d jjk t|dddgdd}t jd	t jt jdgt jt jdgg}t|| t|jj|d
 jjk d S )Nr6   r%   r   )r   r8   r   )r   r6   r{   )r   r6   r{   )	r   r<   rS   r   rs   r   r   r7   r   )r3   r   r   tgtr   r   r   test_integer_split_2D_rows  s     

z)TestArraySplit.test_integer_split_2D_rowsc             C   s   t jt jdt jdg}t|ddd}t jt jdt jdgt jt jddt jddgt jt jddt jddgg}t|| d S )Nr6   r%   r8   )r   r&   r   r{   )r   r<   rS   r   r   )r3   r   r   r   r   r   r   test_integer_split_2D_cols  s     z)TestArraySplit.test_integer_split_2D_colsc             C   sv   t jt jdt jdg}t|d}t jt jdgt jt jdgt jdg}t|| t|jj|d jjk dS )z2 This will fail if we change default axis
        r6   r%   r   r8   N)r   r6   r{   )	r   r<   rS   r   rs   r   r   r7   r   )r3   r   r   r   r   r   r   test_integer_split_2D_default  s    
 
z,TestArraySplit.test_integer_split_2D_defaultzNeeds 64bit platform)reasonc             C   s`   t jdgd}t|d}t jdgd
}|gd }x*tt|D ]}t|| j|| j q>W d S )Nr   r8   r   r   r&   rK           )r   r      @)r   r   )r   Zbroadcast_tor   r1   rW   r   rC   )r3   r   r   chunkr   r~   r   r   r   ,test_integer_split_2D_rows_greater_max_int32  s    

z;TestArraySplit.test_integer_split_2D_rows_greater_max_int32c             C   s\   t jd}dddg}t||dd}t jddt jddt jddt jddg}t|| d S )Nr6   r8   r'   r   )r   r   r{   )r   rS   r   r   )r3   r   indicesr   r   r   r   r   test_index_split_simple  s    

z&TestArraySplit.test_index_split_simplec             C   sZ   t jd}dddg}t||dd}t jg t jddt jddt jddg}t|| d S )Nr6   r   r'   r   r8   )r   r{   )r   rS   r   r<   r   )r3   r   r   r   r   r   r   r   test_index_split_low_bound  s    

z)TestArraySplit.test_index_split_low_boundc             C   sn   t jd}dddddg}t||dd}t jg t jddt jddt jddt jg t jg g}t|| d S )	Nr6   r   r'   r      r8   )r   r{   )r   rS   r   r<   r   )r3   r   r   r   r   r   r   r   test_index_split_high_bound  s    
z*TestArraySplit.test_index_split_high_boundN)rG   rH   rI   r   r   r   r   r   pytestmarkZskipifIS_64BITr   r   r   r   r   r   r   r   r   @  s   =	r   c               @   s   e Zd Zdd Zdd ZdS )	TestSplitc             C   s8   t jd}t|d}t jdt jddg}t|| d S )Nr6   r   r'   )r   rS   r   r   )r3   r   r   r   r   r   r   test_equal_split  s    

zTestSplit.test_equal_splitc             C   s   t jd}ttt|d d S )Nr6   r%   )r   rS   r   r;   r   )r3   r   r   r   r   test_unequal_split  s    
zTestSplit.test_unequal_splitN)rG   rH   rI   r   r   r   r   r   r   r     s   r   c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestColumnStackc             C   s   t ttd d S )Nr8   )r   	TypeErrorr
   )r3   r   r   r   test_non_iterable  s    z!TestColumnStack.test_non_iterablec             C   sL   t jd}t jd}t jddgddgddgg}t j||f}t|| d S )Nr8   r   r%   r&   )r8   r   r%   )r   r%   r&   )r   r<   r
   r   )r3   r   r   rm   rD   r   r   r   test_1D_arrays  s    


zTestColumnStack.test_1D_arraysc             C   sd   t jdgdgdgg}t jdgdgdgg}t jddgddgddgg}t j||f}t|| d S )Nr8   r   r%   r&   )r   r<   r
   r   )r3   r   r   rm   rD   r   r   r   test_2D_arrays  s    
zTestColumnStack.test_2D_arraysc             C   s.   t t tdd tdD  W d Q R X d S )Nc             s   s   | ]}t jd V  qdS )r%   N)r   rS   )r}   _r   r   r   	<genexpr>  s    z1TestColumnStack.test_generator.<locals>.<genexpr>r   )r   FutureWarningr
   r1   )r3   r   r   r   test_generator  s    
zTestColumnStack.test_generatorN)rG   rH   rI   r   r   r   r   r   r   r   r   r     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 )
TestDstackc             C   s   t ttd d S )Nr8   )r   r   r	   )r3   r   r   r   r     s    zTestDstack.test_non_iterablec             C   s@   t jd}t jd}t||g}t jddggg}t|| d S )Nr8   r   )r   r<   r	   r   )r3   r   r   r   r   r   r   r   test_0D_array  s
    

zTestDstack.test_0D_arrayc             C   sD   t jdg}t jdg}t||g}t jddggg}t|| d S )Nr8   r   )r   r<   r	   r   )r3   r   r   r   r   r   r   r   test_1D_array  s
    zTestDstack.test_1D_arrayc             C   sX   t jdgdgg}t jdgdgg}t||g}t jddggddggg}t|| d S )Nr8   r   )r   r<   r	   r   )r3   r   r   r   r   r   r   r   test_2D_array  s
    zTestDstack.test_2D_arrayc             C   sN   t jddg}t jddg}t||g}t jddgddggg}t|| d S )Nr8   r   )r   r<   r	   r   )r3   r   r   r   r   r   r   r   test_2D_array2  s
    zTestDstack.test_2D_array2c             C   s.   t t tdd tdD  W d Q R X d S )Nc             s   s   | ]}t jd V  qdS )r%   N)r   rS   )r}   r   r   r   r   r     s    z,TestDstack.test_generator.<locals>.<genexpr>r   )r   r   r	   r1   )r3   r   r   r   r     s    
zTestDstack.test_generatorN)	rG   rH   rI   r   r   r   r   r   r   r   r   r   r   r     s   r   c               @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )
TestHsplitz&Only testing for integer splits.

    c             C   s   t ttdd d S )Nr8   )r   r;   r   )r3   r   r   r   r     s    zTestHsplit.test_non_iterablec             C   s:   t jd}yt|d td W n tk
r4   Y nX d S )Nr8   r   r   )r   r<   r   r   r;   )r3   r   r   r   r   r   !  s    

zTestHsplit.test_0D_arrayc             C   sF   t jddddg}t|d}t jddgt jddgg}t|| d S )Nr8   r   r%   r&   )r   r<   r   r   )r3   r   r   r   r   r   r   r   )  s    
zTestHsplit.test_1D_arrayc             C   sb   t jddddgddddgg}t|d}t jddgddggt jddgddggg}t|| d S )Nr8   r   r%   r&   )r   r<   r   r   )r3   r   r   r   r   r   r   r   /  s
    
,zTestHsplit.test_2D_arrayN)rG   rH   rI   __doc__r   r   r   r   r   r   r   r   r     s
   r   c               @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )
TestVsplitz&Only testing for integer splits.

    c             C   s   t ttdd d S )Nr8   )r   r;   r   )r3   r   r   r   r   ;  s    zTestVsplit.test_non_iterablec             C   s   t jd}ttt|d d S )Nr8   r   )r   r<   r   r;   r   )r3   r   r   r   r   r   >  s    
zTestVsplit.test_0D_arrayc             C   sB   t jddddg}yt|d td W n tk
r<   Y nX d S )Nr8   r   r%   r&   r   )r   r<   r   r   r;   )r3   r   r   r   r   r   B  s    
zTestVsplit.test_1D_arrayc             C   s^   t jddddgddddgg}t|d}t jddddggt jddddggg}t|| d S )Nr8   r   r%   r&   )r   r<   r   r   )r3   r   r   r   r   r   r   r   J  s
    
(zTestVsplit.test_2D_arrayN)rG   rH   rI   r   r   r   r   r   r   r   r   r   r   7  s
   r   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )
TestDsplitc             C   s   t ttdd d S )Nr8   )r   r;   r   )r3   r   r   r   r   T  s    zTestDsplit.test_non_iterablec             C   s   t jd}ttt|d d S )Nr8   r   )r   r<   r   r;   r   )r3   r   r   r   r   r   W  s    
zTestDsplit.test_0D_arrayc             C   s$   t jddddg}ttt|d d S )Nr8   r   r%   r&   )r   r<   r   r;   r   )r3   r   r   r   r   r   [  s    zTestDsplit.test_1D_arrayc             C   sN   t jddddgddddgg}yt|d td W n tk
rH   Y nX d S )Nr8   r   r%   r&   r   )r   r<   r   r   r;   )r3   r   r   r   r   r   _  s    
zTestDsplit.test_2D_arrayc             C   s   t jddddgddddggddddgddddggg}t|d}t jddgddggddgddgggt jddgddggddgddgggg}t|| d S )Nr8   r   r%   r&   )r   r<   r   r   )r3   r   r   r   r   r   r   test_3D_arrayh  s    

$(zTestDsplit.test_3D_arrayN)rG   rH   rI   r   r   r   r   r   r   r   r   r   r   R  s
   	r   c               @   s   e Zd Zdd ZdS )TestSqueezec             C   s   ddl m} |ddddd}|ddddd}|dddd}ttj|tj|d ttj|tj|d ttj|tj|d	 dggg}tj|}t|d t|jd tt|tj	 d S )
Nr   )r$   rL   r6   r8   g      ?)rL   r6   r6   )rL   r6   rL   )rL   r6   )
r(   r$   r   r   rw   rT   r   r2   r   ri   )r3   r$   r   r   cr   r   r   r   
test_basict  s    


zTestSqueeze.test_basicN)rG   rH   rI   r   r   r   r   r   r   s  s   r   c               @   s   e Zd Zdd ZdS )TestKronc             C   s   G dd dt j}t jddg}||j|j|j}ttt||t j ttt||| ttt||t j ttt||| d S )Nc               @   s   e Zd ZdZdS )z*TestKron.test_return_type.<locals>.myarrayg        N)rG   rH   rI   Z__array_priority__r   r   r   r   myarray  s   r   r   )	r   ri   r9   rC   r7   rp   r   r   r   )r3   r   r   r   r   r   r   test_return_type  s    zTestKron.test_return_typeN)rG   rH   rI   r   r   r   r   r   r     s   r   c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestTilec          	   C   s  t jdddg}ddgddgg}tt|dddddddg tt|dddddddgddddddgg tt|dddddddgg tt|dddddgddddgg tt|dddgddgddgddgg tt|d	ddddgddddgddddgddddgg d S )
Nr   r8   r   r%   r&   )r   r   )r8   r   )r   r8   )r   r   )r   r<   r   r   )r3   r   r   r   r   r   r     s    ,$(zTestTile.test_basicc             C   s0   t jd}t|d}|d7 }t|t jd d S )Nr'   r8   r   )r   rS   r   r   )r3   r   r   r   r   r   (test_tile_one_repetition_on_array_gh4679  s    

z1TestTile.test_tile_one_repetition_on_array_gh4679c             C   sL   t jg gg}t jg g g}t|dj}t|dj}t|d t|d d S )Nr   r%   r'   r   )r%   r   r'   )r   r   )r%   r   r   )r   r<   r   rC   r   )r3   r   r   r   rV   r   r   r   rE     s    
zTestTile.test_emptyc       
      C   s   ddl m} d	d
ddddg}ddddddg}xT|D ]L}|dd|d}x8|D ]0}tj||j}t||}t||}	t||	 qJW q2W d S )Nr   )randintr   r8   r%   r&   r6   )size)r   )r8   r   )r   r8   )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   r9   r7   r   r   r   )
r3   r   ZrepsrC   r   r   rr   ZlargeZklarger   r   r   test_kroncompare  s    



zTestTile.test_kroncompareN)rG   rH   rI   r   r   rE   r   r   r   r   r   r     s   r   c               @   s   e Zd Zdd ZdS )TestMayShareMemoryc             C   s   t jd}t jd}tt j|| tt j||d d d	  tt j||d d d  tt j||dd d d d
f  tt j|d d d |  tt j|d d d |  tt j|dd d d df |  tt j|dd d d df | d S )NrO   rM   rK   rh   r8   r   )rO   rM   )rK   rM   rh   r{   r{   r{   r{   r{   )r   r9   r   Zmay_share_memory)r3   rV   Zd2r   r   r   r     s    

"$zTestMayShareMemory.test_basicN)rG   rH   rI   r   r   r   r   r   r     s   r   c             C   s,   x&t t|D ]}t| | ||  qW d S )N)r1   rW   r   )r   r   r~   r   r   r   r     s    r   l        ).Znumpyr   r    sysr   Znumpy.lib.shape_baser   r   r   r   r   r   r   r	   r
   r   r   r   r   r   Znumpy.testingr   r   r   r   r   maxsizer   r"   r#   rJ   rU   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s4   @
4 '( '!(