o
    i-                     @   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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)VisibleDeprecationWarning)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   i/home/kim/smarthome/.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AZbad2DZbad3Dr   r   r   test_too_many_dimensionsR   s   r3   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   Zravelr(   r*   r   r   )badr1   r   r   r   test_too_few_dimensions^   s   r5   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 j %}|	t
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filterr   )	mnr   ZAgoodZAbadZbgoodZbbadZ	boundsbadsupr   r   r   test_inconsistent_dimensionse   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    r6   r   Zhellor%   r   r   r   r   r   hi)r    r   r    i     )	r   r   r#   r(   r)   r   _replacer*   r
   )r   r4   r   r   r   test_type_errorsz   s0    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    r6   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   r6   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    r6   r   rN   rG   )r   r   r/   r0   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 }|t	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    rE   r7   rH   )rH   rH   rH   r,   )
r   r(   r*   r   rJ   r   r:   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  sD   

 rU   ) __doc__numpyr   Znumpy.testingr   r   r   Zpytestr   r(   Zscipy.optimize._linprog_utilr   r   Zscipy._lib._utilr   copyr	   datetimer
   r   r$   r+   r3   r5   r@   rK   rM   rQ   rR   rS   rT   rU   r   r   r   r   <module>   s*    