o
    e,                     @   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   ^/var/www/myenv/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   r5   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/   r0   ravelr(   r*   r   r   )badr1   r   r   r   test_too_few_dimensions]   s   r8   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 &}|	t j
d	 tttt|ddgdd
gd
dgg dgd W d    d S 1 sw   Y  d S )Nr    r.   r,   r
   r   r
   r&   r'   )r   r   Creating an ndarray from raggedr-   )r.         )r   r/   r0   r(   r*   r   r   testingsuppress_warningsfilterVisibleDeprecationWarning)	mnr   AgoodAbadbgoodbbad	boundsbadsupr   r   r   test_inconsistent_dimensionsd   s&   ""rI   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    r9   r   hellor%   r   r   r   r   r   hi)r
    r
   r    i     )	r   r   r#   r(   r)   r   _replacer*   r	   )r   r7   r   r   r   test_type_errorsy   s,   " rU   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    r9   r   r   r%   rK   rL   rM   rN   )	r   r   r#   r(   r*   r   rT   r   nan)r   r   r   r   test_non_finite_errors   s     $rW   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    rQ   )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(   	r\   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
   r9   r   )r
   rQ   )r
   r
   )r   r   r   r   r   r#   r   r   r   r   r   r   r   rY   rZ   r   r   r   test__clean_inputs2   s(   	r]   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    r9   r   rX   rQ   )r   r   r/   r0   r   r   r   r#   r   r   r   r   r   rY   rZ   r   r   r   test__clean_inputs3   s    

	r^   c                  C   s   t ddgd} ttt| jdd ttt| jdgd tj }|tj	d ttt| jddgd W d    n1 s?w   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    rO   r:   rR   )rR   rR   rR   r,   )
r   r(   r*   r   rT   r   r=   r>   r?   r@   )r   rH   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   rO   rR   )r
   Nr!   )NNr,   r.   )r   r   r   r   r   r   rT   rZ   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+   r5   r8   rI   rU   rW   r\   r]   r^   r_   r`   r   r   r   r   <module>   s(    