o
    ib+                     @   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   lplp_copy r   j/var/www/edux/Edux_v2/venv/lib/python3.10/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Abad2Dbad3Dr   r   r   test_too_many_dimensionsQ   s   r6   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   r0   r1   ravelr(   r*   r   r   )badr2   r   r   r   test_too_few_dimensions]   s   r9   c               
   C   s   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ttt|ddgdd	gd	dgg d
gd d S )Nr    r.   r,   r
   r   r
   r&   r'   )r   r   r-   )r.         r/   )mnr   AgoodAbadbgoodbbad	boundsbadr   r   r   test_inconsistent_dimensionsd   s   0rD   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    r:   r   hellor%   r   r   r   r   r   hi)r
    r
   r    i     )	r   r   r#   r(   r)   r   _replacer*   r	   )r   r8   r   r   r   test_type_errorsv   s,   " rP   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    r:   r   r   r%   rF   rG   rH   rI   )	r   r   r#   r(   r*   r   rO   r   nanr   r   r   r   test_non_finite_errors   s     $rS   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    rL   )r    r    )r   r   r   r   r   r#   r   r   r   r   r   r   r   r   shaper   
lp_cleanedr   r   r   test__clean_inputs1   s(   	rX   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
   r:   r   )r
   rL   )r
   r
   )r   r   r   r   r   r#   r   r   r   r   r   r   r   rU   rV   r   r   r   test__clean_inputs2   s(   	rY   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    r:   r   rT   rL   )r   r   r0   r1   r   r   r   r#   r   r   r   r   r   rU   rV   r   r   r   test__clean_inputs3   s    

	rZ   c                  C   s   t ddgd} ttt| jdd ttt| jdgd ttt| jddgd 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    rJ   rM   )rM   rM   rM   r,   )r   r(   r*   r   rO   rR   r   r   r   test_bad_bounds   s   r[   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   rJ   rM   )r
   Nr!   )NNr,   r.   )r   r   r   r   r   r   rO   rV   r   r   r   test_good_bounds   s<   0 r\   )__doc__numpyr   numpy.testingr   r   r   pytestr   r(   scipy.optimize._linprog_utilr   r   copyr   datetimer	   r   r$   r+   r6   r9   rD   rP   rS   rX   rY   rZ   r[   r\   r   r   r   r   <module>   s(    