o
    h-                     @   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   lplp_copy r   c/var/www/vscode/kcb/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_dimensionsR   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 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   r0   r1   r)   r+   r   r   testingsuppress_warningsfilterr   )	mnr   AgoodAbadbgoodbbad	boundsbadsupr   r   r   test_inconsistent_dimensionse   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!   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_errorsz   s0    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!   r:   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   r:   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!   r:   r   rX   rQ   )r   r   r0   r1   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	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  sD   

 r`   ) __doc__numpyr   numpy.testingr   r   r   pytestr   r)   scipy.optimize._linprog_utilr   r   scipy._lib._utilr   copyr	   datetimer
   r    r%   r,   r6   r9   rI   rU   rW   r\   r]   r^   r_   r`   r   r   r   r   <module>   s*    