U
    ÉZj†:  ã                   @   sÞ   d dl Zd dlZd dlmZmZmZ d dlmZm	Z	m
Z
mZmZmZ d dlmZ d dlm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S )é    N)ÚmatrixÚasmatrixÚbmat)Úassert_Úassert_equalÚassert_almost_equalÚassert_array_equalÚassert_array_almost_equalÚassert_raises)Úmatrix_power)Úmatc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestCtorc           
   	   C   s  t  ddgddgg¡}t|ƒ}tt  |j|k¡ƒ tdƒ}t||g||ggƒ}t  ddddgddddgddddgddddgg¡}tt  |j|k¡ƒ tt  |j|k¡ƒ t  ddgdd	gg¡}tddddgdddd	ggƒ}tt  t||gƒ|k¡ƒ t  d¡}t|ƒ}	t|	jd
kƒ d S )Né   é   é   é   úA,A;A,Aé   é   é   é   )r   r   )	ÚnpÚarrayr   r   ÚallÚAr   ÚarangeÚshape)
Úselfr   ÚmAÚBÚCÚDÚEZAEresultZvecZmvec© r#   úg/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/numpy/matrixlib/tests/test_defmatrix.pyÚ
test_basic   s$    


ý
zTestCtor.test_basicc                 C   s   t ttdƒ d S )NÚinvalid)r
   Ú
ValueErrorr   ©r   r#   r#   r$   Útest_exceptions#   s    zTestCtor.test_exceptionsc              	   C   s,  t  ddgddgg¡}t  ddgddgg¡}t  ddddgddddgddddgddddgg¡}t  ddddgddddgddddgddddgg¡}tt  td	ƒ|k¡ƒ tt  td	d
|id�|k¡ƒ tttd	d
|id� tt  td	d
|id
|id�|k¡ƒ td||dœ||dœd�}tt  ||k¡ƒ d S )Nr   r   r   r   r   r   r   r   r   r   )Úldict)Úgdict)r*   r+   zA,B;C,D)r   r   )r    r!   )r   r   r   r   r   r
   Ú	TypeError)r   r   r   ZAresultZ	mixresultÚb2r#   r#   r$   Útest_bmat_nondefault_str'   s(    


ý


ýÿz!TestCtor.test_bmat_nondefault_strN)Ú__name__Ú
__module__Ú__qualname__r%   r)   r.   r#   r#   r#   r$   r      s   r   c                   @   st   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d„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestPropertiesc                 C   sÄ   t ddddgddddgddddgddddggƒ}t ddddgƒ}t dd	dd
gƒj}d}t||jdd�ƒ t||jdd�ƒ t|| ¡ ƒ t|tj|dd�ƒ t|tj|dd�ƒ t|t |¡ƒ dS )zeTest whether matrix.sum(axis=1) preserves orientation.
        Fails in NumPy <= 0.9.6.2127.
        r   r   r   r   r   r   é   r   r   é   é   ©ZaxisN)r   ÚTr   Úsumr   r   )r   ÚMZsum0Zsum1Zsumallr#   r#   r$   Útest_sum<   s    


ýzTestProperties.test_sumc                 C   sÐ   t dddgdddggƒ}t| ¡ dƒ t| d¡t dd	d
ggƒƒ t| d¡t dgdggƒƒ tt |¡dƒ ttj|dd�t dd	d
ggƒƒ ttj|dd�t dgdggƒƒ t dddgƒ}t| ¡ dkƒ d S )Nr   r   r   r   r   r   iÐ  r   é
   é   éx   r6   )r   r   Úprodr   r   ©r   ÚxÚyr#   r#   r$   Ú	test_prodO   s      zTestProperties.test_prodc                 C   s²   t dddgdddggƒ}t| ¡ dƒ t| d¡t dddggƒƒ t| d¡t dgdggƒƒ tt |¡dƒ ttj|dd�t dddggƒƒ ttj|dd�t dgdggƒƒ d S ©	Nr   r   r   r   r   r   r   r6   )r   r   Úmaxr   ©r   r@   r#   r#   r$   Útest_max\   s     zTestProperties.test_maxc                 C   s²   t dddgdddggƒ}t| ¡ dƒ t| d¡t dddggƒƒ t| d¡t dgdggƒƒ tt |¡dƒ ttj|dd�t dddggƒƒ ttj|dd�t dgdggƒƒ d S rC   )r   r   Úminr   rE   r#   r#   r$   Útest_minf   s     zTestProperties.test_minc                 C   sh   t  d¡ d¡}t| ¡ dkƒ tt  | d¡t  ddg¡k¡ƒ tt  | d¡t  ddg¡k¡ƒ d S )Nr   )r   r   r   r   r   r   )r   r   Úreshaper   Úptpr   r   rE   r#   r#   r$   Útest_ptpp   s    "zTestProperties.test_ptpc                 C   sT   t  d¡ d¡}| t j¡}t|jdd�|jdd�ƒ t|jdd�|jdd�ƒ d S )Né	   )r   r   r   )Zddofr   )r   r   rI   Úviewr   r   Úvar)r   r@   Zmxr#   r#   r$   Útest_varv   s    zTestProperties.test_varc                 C   s
  dd l m} t ddgddgg¡}t|ƒ}tt | |¡|j¡ƒ tt 	t t 
|¡|jk¡¡ƒ tt 	t t 
|¡|jk¡¡ƒ tt 	||jk¡ƒ |d|  }t|ƒ}tt | |¡|j¡ƒ tt 	t t 
|¡|jk¡¡ƒ tt 	t t 
|¡ ¡ |jk¡¡ƒ d S )Nr   ç      ð?ç       @ç      @ç      @y               @)Únumpy.linalgÚlinalgr   r   r   r   ÚallcloseÚinvÚIr   Z	transposer7   ÚHr   Zconj)r   rU   r   r   r   ÚmBr#   r#   r$   r%   |   s    
ÿ   zTestProperties.test_basicc                 C   s@   t t d¡ dd¡ƒ}t ddgddgdd	ggƒ}t|j|ƒ d S )
Nr   r   r   g·ù:Žãè¿gnó)tÇÑ?g#¬Çq¼¿g#¬Çq¼?gnó)tÇá?gç6ŸBÇq¬¿)r   r   r   rI   r   rX   )r   r@   Zxpinvr#   r#   r$   Ú	test_pinv�   s    þzTestProperties.test_pinvc                 C   sr  t  d¡ dd¡}t|ƒ}t|ƒd }tt  ||d k¡ƒ tt  |t|d ƒk¡ƒ tt  |t|d ƒk¡ ƒ tt  ||k ¡ƒ tt  ||k¡ƒ tt  ||k¡ƒ tt  ||k ¡ ƒ tt  ||k ¡ ƒ tt  ||k¡ƒ tt  ||k¡ƒ tt  ||k¡ ƒ tt  ||k¡ƒ tt  ||k¡ ƒ tt  ||k¡ƒ tt  t|ƒdk¡ ƒ tt  t|dkƒ¡ƒ d S )Néd   r;   çš™™™™™¹?r   )r   r   rI   r   r   r   ÚanyÚabs)r   r   r   rZ   r#   r#   r$   Útest_comparisons”   s&    zTestProperties.test_comparisonsc                 C   s:   t  d¡ dd¡}t|ƒ}d|d< t|d |d kƒ d S )Nr\   r;   iöÿÿÿ©r   r   )r   r   rI   r   r   )r   r   r   r#   r#   r$   Útest_asmatrix¬   s    zTestProperties.test_asmatrixc                 C   s@   t ddgddggƒ}t| ¡ t dƒkƒ t| ¡ t dƒkƒ d S )Nr   r   r   ç      à?)r   r   r8   Úmean©r   r   r#   r#   r$   Útest_noaxis²   s    zTestProperties.test_noaxisc                 C   s(   t ddgddggƒ}tt|ƒdkƒ d S )Nr   r   z matrix([[1, 0],
        [0, 1]]))r   r   Úreprre   r#   r#   r$   Ú	test_repr·   s    zTestProperties.test_reprc                 C   s*   t dƒ}t dgdgdggƒ}t||ƒ d S )NzTrue; True; FalseTF)r   r   )r   r   r   r#   r#   r$   Útest_make_bool_matrix_from_str»   s    z-TestProperties.test_make_bool_matrix_from_strN)r/   r0   r1   r:   rB   rF   rH   rK   rO   r%   r[   r`   rb   rf   rh   ri   r#   r#   r#   r$   r2   ;   s   

r2   c                   @   s   e Zd Zdd„ ZdS )ÚTestCastingc                 C   s¼   t  d¡ dd¡}t|ƒ}| ¡ }t  dt j¡d }|| }t|jj	t jkƒ tt  
||k¡ƒ tt  
||d k¡ƒ | ¡ }t  dt j¡}|| }t|jj	t jkƒ tt  
||k¡ƒ d S )Nr\   r;   )r;   r;   r]   )r   r   rI   r   ÚcopyZonesZfloat64r   ÚdtypeÚtyper   Z
complex128)r   r   r   rZ   ÚOZmCr#   r#   r$   r%   Á   s    zTestCasting.test_basicN©r/   r0   r1   r%   r#   r#   r#   r$   rj   À   s   rj   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestAlgebrac                 C   s&  dd l m} t ddgddgg¡}t|ƒ}t d¡}tdƒD ]&}tt || j	|¡ƒ t 
||¡}q<| |¡}t d¡}tdƒD ](}tt ||  j	|¡ƒ t 
||¡}q€tt || j	t 
||¡¡ƒ tt || j	|| ¡ƒ tt d| j	d| ¡ƒ t|ƒ}|d9 }tt |j	d| ¡ƒ d S )	Nr   rP   rQ   rR   rS   r   r   r   )rT   rU   r   r   r   ÚidentityÚranger   rV   r   ÚdotrW   )r   rU   r   r   r   ÚiZAinvZmA2r#   r#   r$   r%   Ô   s$    


zTestAlgebra.test_basicc                 C   st   t dƒ}| ¡ }|dC }| ¡ }|dC }| ¡ }|dC }t||d ƒ t|t ||¡ƒ tt ||¡t d¡ƒ dS )z<Test raising a matrix to an integer power works as expected.z1. 2.; 3. 4.r   éÿÿÿÿN)r   rk   r	   r   rs   Úeye)r   ÚmÚm2ÚmiZm4r#   r#   r$   Útest_powí   s    zTestAlgebra.test_powc                 C   sD   t ddgddggƒ}tjtjfD ]}|dƒ}t|d || ƒ q d S ©Nr   r   r   r   )r   r   Zint8Zuint8r	   )r   rw   Zscalar_tÚtwor#   r#   r$   Útest_scalar_type_powú   s    z TestAlgebra.test_scalar_type_powc              	   C   sR   t ddgddggƒ}ttƒ� d|  W 5 Q R X ttƒ� |tƒ   W 5 Q R X dS )z:Check that 'not implemented' operations produce a failure.rP   rQ   rR   rS   N)r   r
   r,   Úobjectre   r#   r#   r$   Útest_notimplemented   s    ÿ

zTestAlgebra.test_notimplementedN)r/   r0   r1   r%   rz   r}   r   r#   r#   r#   r$   rp   Ó   s   rp   c                   @   s   e Zd Zdd„ ZdS )ÚTestMatrixReturnc           
   &   C   s^  t dgdd�}dddgfdddt 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+d,d-d.g&}t|ƒD ]x}| d/¡s†||kržq†t||ƒ}t|tjj	ƒr†| 
d¡ | d¡ ||krÜ|| }nd0}||Ž }tt|ƒt kd1| ƒ q†tt|jƒt kƒ tt|jƒt kƒ t d2gƒ ¡ \}}	tt|ƒtjkƒ tt|	ƒtjkƒ d S )3NrP   Zf8)rl   )Zintc)ç        rP   r   )r   ra   )ÚastypeZclipÚcompressÚrepeatrI   Zswapaxesrs   ZargminÚchooseÚdumpÚdumpsÚfillZgetfieldZgetAZgetA1ÚitemÚnonzeroÚputZputmaskÚresizeZsearchsortedZsetflagsZsetfieldÚsortÚ	partitionZargpartitionZtakeÚtofileÚtolistÚtostringÚtobytesr   r^   r8   ZargmaxrG   rD   rd   rN   rJ   r>   ZstdÚctypesZitemsetÚ_r#   z%sr�   )r   r   r   ÚdirÚ
startswithÚgetattrÚ
isinstanceÚcollectionsÚabcÚCallabler‚   rˆ   r   rm   ÚrealÚimagrŠ   Úndarray)
r   ÚaZ
methodargsZexcluded_methodsZattribÚfÚargsÚbÚcÚdr#   r#   r$   Útest_instance_methods  s‚    
ù
                               ù	



z&TestMatrixReturn.test_instance_methodsN)r/   r0   r1   r¥   r#   r#   r#   r$   r€     s   r€   c                   @   s   e Zd Zdd„ ZdS )ÚTestIndexingc                 C   sf   t t dt¡ƒ}t dt¡}dddg|d d …df< |dk|d d …df< t|ddgddgddggƒ d S )	N©r   r   )r   r   gš™™™™™é?gš™™™™™É?g333333Ó?r   rc   r   ©r   r   ZzerosÚfloatr   r?   r#   r#   r$   r%   9  s
    zTestIndexing.test_basicNro   r#   r#   r#   r$   r¦   8  s   r¦   c                   @   sh   e Zd Zeddgddggƒ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S )ÚTestNewScalarIndexingr   r   r   r   c                 C   s   | j }|d }t|jdƒ d S )Nr   r   )rŸ   r   Úndim©r   rŸ   r@   r#   r#   r$   Útest_dimesionsD  s    z$TestNewScalarIndexing.test_dimesionsc                 C   s*   | j }t ||g¡}t|jdddgƒ d S )Nr   )rŸ   r   r   r   r   r¬   r#   r#   r$   Útest_array_from_matrix_listI  s    z1TestNewScalarIndexing.test_array_from_matrix_listc                 C   s$   | j }t| ¡ ddgddggƒ d S r{   )rŸ   r   r�   ©r   rŸ   r#   r#   r$   Útest_array_to_listN  s    z(TestNewScalarIndexing.test_array_to_listc                 C   s¼   | j }|ddddgf }tt|tƒƒ t|tdddggƒƒ |ddg }tt|tƒƒ t|tddgddggƒƒ |dgdggddgddggf }tt|tƒƒ t|tddgddggƒƒ d S )Nr   r   r   r   r   )rŸ   r   r˜   r   r   r¬   r#   r#   r$   Útest_fancy_indexingR  s     z)TestNewScalarIndexing.test_fancy_indexingc                 C   s´   t dddgdddggƒ}t|d d t dddggƒƒ t|d d jdƒ t|d jdƒ t|d d …df jd	ƒ t dƒ}t|d
 dƒ t|d dƒ t|d d …df j|jƒ d S )Nr   r   r   r   r   r   r   )r   r   ©r   r   ra   )r   r   r   rE   r#   r#   r$   Útest_matrix_element^  s    z)TestNewScalarIndexing.test_matrix_elementc                 C   s*   t t dt¡ƒ}t|d |d d ƒ d S )Nr§   ra   r   r¨   rE   r#   r#   r$   Útest_scalar_indexingj  s    z*TestNewScalarIndexing.test_scalar_indexingc                 C   s†   t t d¡ƒ}t|dd d …f ddggƒ t|dd d …f ddggƒ t|d d …df dgdggƒ t|d d …df dgdggƒ d S )Nr   r   r   )r   r   rv   r   rE   r#   r#   r$   Útest_row_column_indexingn  s
    z.TestNewScalarIndexing.test_row_column_indexingc                 C   sv   t  d¡}d|_t|ƒ}t|d d …t  ddg¡f |d d …df ƒ t|t  dddg¡d d …f |dd d …f ƒ d S )Nr   r§   TFr   )r   r   r   r   r   r   ©r   r   r@   r#   r#   r$   Útest_boolean_indexingu  s
    
,z+TestNewScalarIndexing.test_boolean_indexingc                 C   sv   t  d¡}d|_t|ƒ}t|d d …ddgf |d d …d d d…f ƒ t|dddgd d …f |d d d…d d …f ƒ d S )Nr   r§   r   r   ru   r   )r   r   r   r   r   r¶   r#   r#   r$   Útest_list_indexing|  s
    
,z(TestNewScalarIndexing.test_list_indexingN)r/   r0   r1   r   rŸ   r­   r®   r°   r±   r³   r´   rµ   r·   r¸   r#   r#   r#   r$   rª   A  s   rª   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	TestPowerc                 C   sP   t  ddgddgg¡}ttt|dƒƒt jkƒ t|ƒ}ttt|dƒƒtkƒ d S ©Nr   r   r   )r   r   r   rm   r   rž   r   r   r¯   r#   r#   r$   Útest_returntype…  s    zTestPower.test_returntypec                 C   s,   t tddgddggdƒddgddggƒ d S rº   )r   r   r(   r#   r#   r$   Ú	test_list‹  s    zTestPower.test_listN)r/   r0   r1   r»   r¼   r#   r#   r#   r$   r¹   „  s   r¹   c                   @   sv   e Zd Ze dgdgg¡Zedgdggƒ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S )Ú	TestShaper   r   c                 C   s    t | jjdƒ t | jjdƒ d S )Nr²   )r   rŸ   r   rw   r(   r#   r#   r$   Ú
test_shape”  s    zTestShape.test_shapec                 C   s,   t t | j¡jdƒ t t | j¡jdƒ d S )N©r   )r   r   ÚravelrŸ   r   rw   r(   r#   r#   r$   Útest_numpy_ravel˜  s    zTestShape.test_numpy_ravelc                 C   s(   t | j ¡ jdƒ t | j ¡ jdƒ d S ©Nr¿   )r   r   )r   rŸ   rÀ   r   rw   r(   r#   r#   r$   Útest_member_ravelœ  s    zTestShape.test_member_ravelc                 C   s(   t | j ¡ jdƒ t | j ¡ jdƒ d S rÂ   )r   rŸ   Úflattenr   rw   r(   r#   r#   r$   Útest_member_flatten   s    zTestShape.test_member_flattenc                 C   s.  t  dddgdddgg¡}tt  |¡ddddddgƒ tt j|dd�ddddddgƒ tt  |j¡ddddddgƒ tt j|jd	d�ddddddgƒ tdddgdddggƒ}tt  |¡ddddddgƒ tt j|dd�ddddddgƒ tt  |j¡ddddddgƒ tt j|jd	d�ddddddgƒ d S ©
Nr   r   r   r   r   r   ÚF)Úorderr   )r   r   r   rÀ   r7   r   rE   r#   r#   r$   Útest_numpy_ravel_order¤  s     " z TestShape.test_numpy_ravel_orderc                 C   s˜   t dddgdddggƒ}t| ¡ ddddddggƒ t|jdd�ddddddggƒ t|j ¡ ddddddggƒ t|jjd	d�ddddddggƒ d S rÆ   )r   r   rÀ   r7   rE   r#   r#   r$   Útest_matrix_ravel_order°  s
     z!TestShape.test_matrix_ravel_orderc                 C   s6   t t | j| j ¡ ¡ƒ t t | j| j ¡ ¡ ƒ d S ©N)r   r   Úmay_share_memoryrŸ   rÀ   rÄ   r(   r#   r#   r$   Útest_array_memory_sharing·  s    z#TestShape.test_array_memory_sharingc                 C   s6   t t | j| j ¡ ¡ƒ t t | j| j ¡ ¡ ƒ d S rË   )r   r   rÌ   rw   rÀ   rÄ   r(   r#   r#   r$   Útest_matrix_memory_sharing»  s    z$TestShape.test_matrix_memory_sharingc                 C   sH   t  d¡ d¡ t j¡}t j|dd�}t|jdƒ tt	|t jƒ ƒ d S )Nr;   )r   r   r   r6   r   )
r   r   rI   rM   r   Zexpand_dimsr   r«   r   r˜   )r   rŸ   Úexpandedr#   r#   r$   Útest_expand_dims_matrix¿  s    z!TestShape.test_expand_dims_matrixN)r/   r0   r1   r   r   rŸ   r   rw   r¾   rÁ   rÃ   rÅ   rÉ   rÊ   rÍ   rÎ   rÐ   r#   r#   r#   r$   r½   �  s   r½   )Úcollections.abcr™   Únumpyr   r   r   r   Znumpy.testingr   r   r   r   r	   r
   rT   r   Znumpy.matrixlibr   r   r2   rj   rp   r€   r¦   rª   r¹   r½   r#   r#   r#   r$   Ú<module>   s    / ;*	C