
    xf,                         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 Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)z9
Unit test for Linear Programming via Simplex Algorithm.
    N)assert_assert_allcloseassert_equal)raises)_clean_inputs
_LPProblem)deepcopy)datec            	      @   t        ddggdgdggdgt        j                   t        j                  f      } 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       y	)
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_copys     Q/usr/lib/python3/dist-packages/scipy/optimize/tests/test__linprog_clean_inputs.pytest_aliasingr       s     

cUScUS 
B rlG"BDDGII<=BGGw||#%EFBGGw||#%EFBGGw||#%EFBGGw||#%EFBII')KL    c            	         t        t        j                  ddg      t        j                  ddgddgg      t        j                  dgdgg      t        j                  ddgg      t        j                  dg      t        j                   t        j                  fdg      } t	        |       }t        |        t        | j                  |j                  d       t        | j                  |j                  d       t        | j                  |j                  d       t        | j                  |j                  d	       t        | j                  |j                  d
       t        | j                  |j                  k(  d       y)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   s     r   test_aliasing2r'   &   s    

((Aq6
XX1v1v&'XXsQCj!XX1vhXXqc]&&"&&!9-
B rlG"BDD'))-JKBGGW\\3STBGGW\\3STBGGW\\3STBGGW\\3STBII')KLr!   c            	      B   ddg} t        j                  ddgddgg      }t        j                  ddg      }t        j                  ddgddgg      }t        j                  ddg      }t        t        t               t        t        t        t        d              t        t        t        t        | |             t        t        t        t        | |d              t        t        t        t        | |             t        t        t        t        | d |             t        t        t        t        | |             t        t        t        t        | |d              t        t        t        t        | |	             t        t        t        t        | d |             y )
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   s        r   test_missing_inputsr/   >   s    	
AA88aVaV$%D88QFD88aVaV$%D88QFD)]+)]J,>?*mZ!$-GH*mZ!$T-RS*mZ!$-GH*mZ!$T-RS*mZ!$-GH*mZ!$T-RS*mZ!$-GH*mZ!$T-RSr!   c            	         g d} t         j                  j                  dd      }ddgddgg}t         j                  j                  ddd      }t        t        t
        t        |||              t        t        t
        t        | ||              t        t        t
        t        | ||             t        t        t
        t        | ||              t        t        t
        t        | ||             y )Nr   r#         r3   r   r#   r2   r*   r+   )r   randomrandr,   r.   r   r   )cbAbad2Dbad3Ds       r   test_too_many_dimensionsr:   Q   s    	B
		q!AVaVEIINN1a#E*mZ%ab-QR*mZ"5r-RS*mZ"15-QR*mZ"5r-RS*mZ"15-QRr!   c            	      "   t         j                  j                  dd      j                         } t         j                  j                  d      }t	        t
        t        t        || |             t	        t
        t        t        || |             y )Nr3   r*   r+   )r   r4   r5   ravelr,   r.   r   r   )badr6   s     r   test_too_few_dimensionsr>   ]   s[    
))..A

$
$
&C		B*mZ"3R-PQ*mZ"3R-PQr!   c                  t   d} d}g d}t         j                  j                  | |      }t         j                  j                  | |dz         }t         j                  j                  |       }t         j                  j                  | dz         }dg|dz   z  }t        t        t
        t        |||             t        t        t
        t        |||             t        t        t
        t        |||             t        t        t
        t        |||             t        t        t
        t        ||             t         j                  j                         5 }|j                  t         j                  d	       t        t        t
        t        |ddgdd
gd
dgg dg             d d d        y # 1 sw Y   y xY w)Nr#   r3   r1   r   r   r   r*   r+   )r   r   Creating an ndarray from raggedr2   )r3         )r   r4   r5   r,   r.   r   r   testingsuppress_warningsfilterVisibleDeprecationWarning)	mnr   AgoodAbadbgoodbbad	boundsbadsups	            r   test_inconsistent_dimensionsrP   d   sH   	A	AAIINN1a E99>>!QU#DIINN1E99>>!a% DAE"I*mZ!$U-ST*mZ!%d-ST*mZ!$U-ST*mZ!%d-ST*mZ!I-NO		%	%	' S3

2//1RSj- 1q!fq!fq!fi-PQ	SS S Ss   AF..F7c                     t        ddgt        j                  ddgddgg      t        j                  ddg      t        j                  ddgddgg      t        j                  ddg      dg      } d}t        t        t
        | j                  |             t        t        t
        | j                  |             t        t        t
        | j                  |             t        t        t
        | j                  |	             t        t        t
        | j                  |
             t        t        t
        | j                  |             t        t        t
        | j                  d             t        t        t
        | j                  dg             t        t        t
        | j                  dg             t        t        t
        | j                  dg             t        t        t
        | j                  ddg             t        t        t
        | j                  dt        ddd      fg             t        t        t
        | j                  ddggg             y )Nr   r#   r@   r   hellor)   r   r   r   r   r   hi)r    r   r#   i     )	r   r   r&   r,   r-   r   _replacer.   r
   )r   r=   s     r   test_type_errorsr]   y   s   	a&XX1v1v&'XXq!fXX1v1v&'XXq!fx
B C)]BKK#K,>?)]BKKSK,AB)]BKKSK,AB)]BKKSK,AB)]BKKSK,AB*mR[[[-DE*mR[[[-EF*mR[[[-GH*mR[[$[-IJ*mR[[	[-JK*mR[[@Q[-RS)]BKKDqRTDU@V?WK,XY*mR[[1a&
[-KLr!   c            
         t        ddgt        j                  ddgddgg      t        j                  ddg      t        j                  ddgddgg      t        j                  ddg      dg      } t        t        t
        | j                  dd g             t        t        t
        | j                  t        j                  dg             t        t        t
        | j                  dt        j                   g             t        t        t
        | j                  t        j                  dg             t        t        t
        | j                  ddgd dgg             t        t        t
        | j                  t        j                  dg             t        t        t
        | j                  ddgdt        j                   gg	             t        t        t
        | j                  dt        j                  g
             y )Nr   r#   r@   r   r   r)   rS   rT   rU   rV   )	r   r   r&   r,   r.   r   r\   r   nan)r   s    r   test_non_finite_errorsr`      sr   	a&XX1v1v&'XXq!fXX1v1v&'XXq!fx
B *mR[[At9[-EF*mR[[BFFA;[-GH*mR[[Aw<[-HI*mR[[BFFA;[-GH*mR[[1vay>Q[-RS*mR[[rvvqk[-JK*mR[[1vBFF7|>T[-UV*mR[[q"&&k[-JKr!   c                     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       } t        |       }t        |j                  t	        j
                  | j                               t        |j                  t	        j
                  | j                               t        |j                  t	        j
                  | j                               t        |j                  t	        j
                  | j                               t        |j                  t	        j
                  | j                               t        |j                  dt        j                  fgdz         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       y )Nr   r#   r   r   r#   rY   )r#   r#   )r   r   r   r   r   r&   r   r   r   r   r   r   r   r   shaper   
lp_cleaneds     r   test__clean_inputs1rf      sr   	a&!fq!fV!fq!fV
B r"JJLL"((244.1JOORXXbgg%67JOORXXbgg%67JOORXXbgg%67JOORXXbgg%67""a[MA$56JLL$&+JOO!!V+R0JOO!!T)2.JOO!!V+R0JOO!!T)2.r!   c                     t        ddggddggdd      } t        |       }t        |j                  t	        j
                  | j                               t        |j                  t	        j
                  | j                               t        |j                  t	        j
                  | j                               t        |j                  t	        j
                  | j                               t        |j                  t	        j
                  | 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       y )Nr   r@   r   )r   rY   )r   r   )r   r   r   r   r   r&   r   r   r   r   r   r   r   rc   rd   s     r   test__clean_inputs2rh      sG   	
cUcU
B r"JJLL"((244.1JOORXXbgg%67JOORXXbgg%67JOORXXbgg%67JOORXXbgg%67""VH-JLL$&+JOO!!V+R0JOO!!T)2.JOO!!V+R0JOO!!T)2.r!   c            	         t        ddggt        j                  j                  dd      dgdggt        j                  j                  dd      dgdggdg      } t	        |       }t        |j                  t        j                  ddg             t        |j                  t        j                  ddg             t        |j                  t        j                  ddg             t        |j                  dgdz         t        |j                  j                  dk(  d       t        |j                  j                  dk(  d       t        |j                  j                  dk(  d       y )Nr   r#   r@   r   rb   rY   )r   r   r4   r5   r   r   r   r&   r   r   r   r   r   rc   rd   s     r   test__clean_inputs3rj      s   	q6(YY^^Aq!cA3ZYY^^Aq!cA3Zx
B r"JJLL"((Aq6"23JOORXXq!f%56JOORXXq!f%56""VHqL1JLL$&+JOO!!T)2.JOO!!T)2.r!   c            	      b   t        ddg      } t        t        t        | j	                  d             t        t        t        | j	                  dg             t
        j                  j                         5 }|j                  t
        j                  d       t        t        t        | j	                  ddg             d d d        t        t        t        | j	                  g d             t        g d	      } t        t        t        | j	                  d	d	g             y # 1 sw Y   fxY w)
Nr   r#   r)   )r   r#   r#   rW   rA   rZ   )rZ   rZ   rZ   r1   )
r   r,   r.   r   r\   r   rD   rE   rF   rG   )r   rO   s     r   test_bad_boundsrl      s    	q!f	B*mR[[	[-JK*mR[[[-LM		%	%	' ?3

2//1RSj-kk&))<k=	?? *mR[[@X[-YZ	l	#B*mR[[|@\[-]^? ?s   8AD%%D.c            	         t        ddg      } t        |       }t        |j                  dt        j
                  fgdz         t        | j                  g             }t        |j                  dt        j
                  fgdz         t        | j                  g g            }t        |j                  dt        j
                  fgdz         t        | j                  d            }t        |j                  dgdz         t        | j                  dg            }t        |j                  dgdz         t        | j                  dg            }t        |j                  dt        j
                  fgdz         t        | j                  dg            }t        |j                  t        j
                   dfgdz         t        | j                  d	t        j
                   d fg            }t        |j                  t        j
                   t        j
                  fgdz         t        g d
      } t        |       }t        |j                  dt        j
                  fgdz         t        | j                  d            }t        |j                  dgdz         t        | j                  dg            }t        |j                  dgdz         t        | j                  dg            }t        |j                  dt        j
                  fgdz         t        | j                  dg            }t        |j                  t        j
                   dfgdz         t        | j                  d	t        j
                   d fd t        j
                  ft        j
                   t        j
                  fg            }t        |j                  t        j
                   t        j
                  fgdz         y )Nr   r#   r)   r   rW   rZ   )r   Nr$   )NNr1   r3   )r   r   r   r   r   r   r\   rd   s     r   test_good_boundsrn     s   	q!f	Br"J""a[MA$56r{{"{56J""a[MA$56r{{2${78J""a[MA$56r{{&{9:J""VHqL1r{{6({;<J""VHqL1r{{9+{>?J""a[MA$56r{{9+{>?J""rvvgq\NQ$67r{{<266'42Q{RSJ""rvvgrvv%6$7!$;<	l	#Br"J""a[MA$56r{{&{9:J""VHqL1r{{6({;<J""VHqL1r{{9+{>?J""a[MA$56r{{9+{>?J""rvvgq\NQ$67r{{<266'4SWY[Y_Y_R`dfdjdjcjlnlrlrbs2t{uvJ""rvvgrvv%6$7!$;<r!   )__doc__numpyr   numpy.testingr   r   r   pytestr   r,   scipy.optimize._linprog_utilr   r   copyr	   datetimer
   r    r'   r/   r:   r>   rP   r]   r`   rf   rh   rj   rl   rn    r!   r   <module>rw      sk     @ @ * B  M4M0T&	SRS*M6L(/4/4/,_ -=r!   