o
    g                     @   s   d dl mZ d dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ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ejdg ddd Zejdedd Zdd  ZdS )!    )assert_array_equalN)linear_sum_assignment)random)matrix)"min_weight_full_bipartite_matching) linear_sum_assignment_assertions linear_sum_assignment_test_casesc                   C   s@   t jtdd tg d W d    d S 1 sw   Y  d S )Nzexpected a matrixmatch         )pytestraises
ValueErrorr    r   r   i/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/scipy/optimize/tests/test_linear_assignment.py&test_linear_sum_assignment_input_shape   s   "r   c                  C   sB   g dg dg} t t| tt|  t t| tt|  d S )Nr   )         )r   r   npasarrayr   )Cr   r   r   'test_linear_sum_assignment_input_object   s   
r   c                  C   s(   t d} tt| t jt|  d S )Nr   )r   identityr   r   astypebool_Ir   r   r   %test_linear_sum_assignment_input_bool   s   
r!   c                  C   sL   t d} tjtdd t| t W d    d S 1 sw   Y  d S )Nr   zCannot cast array datar	   )r   r   r   r   	TypeErrorr   r   strr   r   r   r   'test_linear_sum_assignment_input_string%   s   
"r$   c                  C   sN   t t jddg} tjtdd t|  W d    d S 1 s w   Y  d S Nr   z contains invalid numeric entriesr	   )r   diagnanr   r   r   r   r   r   r   r   $test_linear_sum_assignment_input_nan+   s   
"r(   c                  C   sP   t dt j dg} tjtdd t|  W d    d S 1 s!w   Y  d S r%   )r   r&   infr   r   r   r   r   r   r   r   'test_linear_sum_assignment_input_neginf1   s   
"r*   c                  C   sX   t d} t j| d d df< tjtdd t|  W d    d S 1 s%w   Y  d S )Nr   r   zcost matrix is infeasibler	   )r   r   r)   r   r   r   r   r   r   r   r   $test_linear_sum_assignment_input_inf7   s
   

"r+   c                  C   sB   d} t | | f}t|\}}t|t |  t|t |  d S )N   )r   onesr   r   arange)nr   row_indcol_indr   r   r   test_constant_cost_matrix>   s
   r2   znum_rows,num_cols))r   r   )r   r   )r   r   c                 C   s@   t j|| fd}t|\}}t|dksJ t|dksJ d S )N)shaper   )r   emptyr   len)num_rowsnum_colsr   r0   r1   r   r   r   'test_linear_sum_assignment_trivial_costG   s   r8   zsign,test_casec                 C   s   t ttj| | d S )N)r   r   r   array)sign	test_caser   r   r   'test_linear_sum_assignment_small_inputsO   s   
r<   c            	   	   C   s   t jd tdD ]k} d}d}tddddd d}t |jt j}|j||j|j	f< |
 }zt|\}}|||f  }W n tyJ   d}Y nw zt|\}}|||f  }W n tyf   d}Y nw ||ksmJ |su||ksuJ q
d S )	Ni  d   FgQ?c                 S   s   t jdd| S )Nr   r=   )r   r   randint)sizer   r   r   <lambda>a   s    zItest_two_methods_give_same_result_on_many_sparse_inputs.<locals>.<lambda>)densitydata_rvsT)r   r   seedrangefullr3   r)   datarowcoltocsrr   sumr   r   )	_
lsa_raisesmwfbm_raisessparsedenser0   r1   lsa_cost
mwfbm_costr   r   r   7test_two_methods_give_same_result_on_many_sparse_inputsW   s6   rR   )numpy.testingr   r   numpyr   scipy.optimizer   scipy.sparser   scipy.sparse._sputilsr   scipy.sparse.csgraphr   (scipy.sparse.csgraph.tests.test_matchingr   r   r   r   r!   r$   r(   r*   r+   r2   markparametrizer8   r<   rR   r   r   r   r   <module>   s*   	

