a
    Re,                     @   s   d Z ddlZddlmZmZmZ ddlmZ	 ddl
mZmZ ddlmZ ddlm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 )"z9
Unit test for Linear Programming via Simplex Algorithm.
    N)assert_assert_allcloseassert_equal)raises)_clean_inputs
_LPProblem)deepcopy)datec                  C   s   t ddggdgdggdgtj tjfd} t| }t|  t| j|jkd t| j|jkd t| j|jkd t| j	|j	kd t| j
|j
kd t| j|jkd d	S )
z
    Test for ensuring that no objects referred to by `lp` attributes,
    `c`, `A_ub`, `b_ub`, `A_eq`, `b_eq`, `bounds`, have been modified
    by `_clean_inputs` as a side effect.
       cA_ubb_ubA_eqb_eqboundsc modified by _clean_inputsA_ub modified by _clean_inputsb_ub modified by _clean_inputsA_eq modified by _clean_inputsb_eq modified by _clean_inputs bounds modified by _clean_inputsN)r   npinfr   r   r   r   r   r   r   r   r   lpZlp_copy r   c/var/www/sunrise/env/lib/python3.9/site-packages/scipy/optimize/tests/test__linprog_clean_inputs.pytest_aliasing   s     r   c                  C   s   t tddgtddgddggtdgdggtddggtdgtj tjfdgd} t| }t|  t| j|jdd t| j|jdd t| j	|j	dd t| j
|j
d	d t| j|jd
d t| j|jkd dS )z3
    Similar purpose as `test_aliasing` above.
    r
      Nr
   r   r   )err_msgr   r   r   r   r   N)r   r   arrayr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   test_aliasing2&   s     
r#   c                  C   s  ddg} t ddgddgg}t ddg}t ddgddgg}t ddg}ttt ttttd d tttt| |d tttt| |d d tttt| |d tttt| d |d tttt| |d tttt| |d d tttt| |d	 tttt| d |d d S )
Nr
   r   r   )r   r   r   r   r   )r   r   )r   r   r   r   r   )r   r   )r   r"   assert_raises	TypeErrorr   r   
ValueError)r   r   r   r   r   r   r   r   test_missing_inputs>   s    
r*   c                  C   s   g d} t jdd}ddgddgg}t jddd}tttt||| d tttt| || d tttt| ||d tttt| || d tttt| ||d d S )Nr
   r         r-   r
   r   r,   r%   r&   )r   randomrandr'   r)   r   r   )cbAZbad2DZbad3Dr   r   r   test_too_many_dimensionsQ   s    r2   c                  C   sN   t jdd } t jd}tttt|| |d tttt|| |d d S )Nr-   r%   r&   )r   r.   r/   Zravelr'   r)   r   r   )badr0   r   r   r   test_too_few_dimensions]   s    r4   c            	      C   s0  d} d}g d}t j| |}t j| |d }t j| }t j| d }dg|d  }tttt|||d tttt|||d tttt|||d tttt|||d tttt||d t j J}|	t j
d	 tttt|ddgdd
gd
dgg dgd W d    n1 s"0    Y  d S )Nr   r-   r+   r
   r   r
   r%   r&   )r   r   Creating an ndarray from raggedr,   )r-         )r   r.   r/   r'   r)   r   r   testingsuppress_warningsfilterVisibleDeprecationWarning)	mnr   ZAgoodZAbadZbgoodZbbadZ	boundsbadsupr   r   r   test_inconsistent_dimensionsd   s$    "r@   c               	   C   s~  t ddgtddgddggtddgtddgddggtddgdgd} d}ttt| j|d ttt| j|d ttt| j|d ttt| j|d	 ttt| j|d
 ttt| j|d ttt| jdd ttt| jdgd ttt| jdgd ttt| jdgd ttt| jddgd ttt| jdtdddfgd ttt| jddgggd d S )Nr
   r   r5   r   Zhellor$   r   r   r   r   r   hi)r
    r
   r   i     )	r   r   r"   r'   r(   r   _replacer)   r	   )r   r3   r   r   r   test_type_errorsy   s,    "rK   c               	   C   s6  t ddgtddgddggtddgtddgddggtddgdgd} ttt| jdd gd ttt| jtjdgd ttt| jdtj gd ttt| jtjdgd ttt| jddgd dggd ttt| jtjdgd ttt| jddgdtj ggd	 ttt| jdtjgd
 d S )Nr
   r   r5   r   r   r$   rA   rB   rC   rD   )	r   r   r"   r'   r)   r   rJ   r   nan)r   r   r   r   test_non_finite_errors   s      $rM   c                  C   s  t ddgddgddggddgddgddggddgd d} t| }t|jt| j t|jt| j t|jt| j t|jt| j t|j	t| j	 t
|jdtjfgd  t|jjdkd t|jjdkd t|jjdkd t|jjdkd t|j	jdkd d S )Nr
   r   r   r   r   rG   )r   r   )r   r   r   r   r   r"   r   r   r   r   r   r   r   r   shaper   Z
lp_cleanedr   r   r   test__clean_inputs1   s(    	rQ   c                  C   s   t ddggddggddd} t| }t|jt| j t|jt| j t|jt| j t|jt| j t|j	t| j	 t
|jdg t|jjdkd t|jjdkd t|jjdkd t|jjdkd t|j	jdkd d S )Nr
   r5   r   )r
   rG   )r
   r
   )r   r   r   r   r   r"   r   r   r   r   r   r   r   rO   rP   r   r   r   test__clean_inputs2   s(    	rR   c                  C   s   t ddggtjdddgdggtjdddgdggdgd} t| }t|jtddg t|jtddg t|j	tddg t
|jdgd  t|jjdkd t|jjdkd t|j	jdkd d S )Nr
   r   r5   r   rN   rG   )r   r   r.   r/   r   r   r   r"   r   r   r   r   r   rO   rP   r   r   r   test__clean_inputs3   s     

	rS   c                  C   s   t ddgd} ttt| jdd ttt| jdgd tj 6}|tj	d ttt| jddgd W d    n1 s~0    Y  ttt| jg dd t g d	d} ttt| jd	d	gd d S )
Nr
   r   r$   )r
   r   r   rE   r6   rH   )rH   rH   rH   r+   )
r   r'   r)   r   rJ   r   r9   r:   r;   r<   )r   r?   r   r   r   test_bad_bounds   s    "rT   c                  C   sn  t ddgd} t| }t|jdtjfgd  t| jg d}t|jdtjfgd  t| jg gd}t|jdtjfgd  t| jdd}t|jdgd  t| jdgd}t|jdgd  t| jdgd}t|jdtjfgd  t| jdgd}t|jtj dfgd  t| jd	tj d fgd}t|jtj tjfgd  t g d
d} t| }t|jdtjfgd  t| jdd}t|jdgd  t| jdgd}t|jdgd  t| jdgd}t|jdtjfgd  t| jdgd}t|jtj dfgd  t| jd	tj d fd tjftj tjfgd}t|jtj tjfgd  d S )Nr
   r   r$   r   rE   rH   )r
   Nr    )NNr+   r-   )r   r   r   r   r   r   rJ   rP   r   r   r   test_good_bounds  s<    0rU   )__doc__numpyr   Znumpy.testingr   r   r   Zpytestr   r'   Zscipy.optimize._linprog_utilr   r   copyr   datetimer	   r   r#   r*   r2   r4   r@   rK   rM   rQ   rR   rS   rT   rU   r   r   r   r   <module>   s&   