
    lh                         d dl Z d dlmZmZmZmZ 	 d dlZd dlmZ d Z
defdZ G d de j                        Zy# e	$ r dZY (w xY w)	    N)GUROBI	LpProblem
LpVariableconst)GRBc                  `    t        j                  ddi      5  	 d d d        y # 1 sw Y   y xY w)N
OutputFlagr   params)gpEnv     /var/www/html/SchoolMeal/SchoolMeal/pds_admin_SchoolMeal/Backend/venv/lib/python3.12/site-packages/pulp/tests/test_gurobipy_env.pycheck_dummy_envr      s+    	a(	)   s   $-returnc                      t        dt        j                        } t        ddd      }t        ddd      }t        ddd      }| ||z   |z   dfz  } | ||z   |z   dk  dfz  } | S )	Ntestxr      yzobjc1)r   r   
LpMaximizer   )probr   r   r   s       r   generate_lpr      su    VU--.D31A31A31AAEAIuDAEAIND  DKr   c                       e Zd Zd Zd Zej                  d        Zd Zej                  d        Z	d Z
d Zej                  d        Zy	)
GurobiEnvTestsc                 X    t         | j                  d       ddi| _        ddd| _        y )Nz*Skipping all tests in test_gurobipy_env.pyMethodr   r   )MemLimitr	   )r   skipTestoptionsenv_options)selfs    r   setUpzGurobiEnvTests.setUp   s,    :MMFG !}();r   c                    t        j                  | j                        5 }t               }t	        dd|d| j
                  }|j                  |       |j                          d d d        t                y # 1 sw Y   t                y xY wNr
   Fmsgenvr   )	r   r   r%   r   r   r$   solvecloser   r&   r,   r   solvers       r   test_gp_envzGurobiEnvTests.test_gp_env"   sj    VV4++, 	=D?3?$,,?FJJvLLN		
 		
 	s   AA88Bc                    t        j                  | j                        5 }t               }t	        dd|d| j
                  }|j                  |       d d d        | j                  t         j                  t               y # 1 sw Y   .xY wr)   )
r   r   r%   r   r   r$   r-   assertRaisesGurobiErrorr   r/   s       r   test_gp_env_no_closez#GurobiEnvTests.test_gp_env_no_close+   sn     VV4++, 	=D?3?$,,?FJJv	 	"../:		 	s   4BBc                 v   t        j                  | j                        5 }t        d|      }t	               }|j                  |       |j                          t        d|      }t	               }|j                  |       |j                          d d d        t                y # 1 sw Y   t                y xY w)Nr
   Fr*   )r   r   r%   r   r   r-   r.   r   )r&   r,   r0   r   solver2prob2s         r   test_multiple_gp_envz#GurobiEnvTests.test_multiple_gp_env4   s    VV4++, 		3/F=DJJvLLNC0GMEKK MMO		 			 	s   A1B%%B8c                     t        dddi| j                  }t               }|j                  |       | j	                  t
        j                  t               t        j                          |j                          y)z
        Backward compatibility check as previously the environment was not being
        freed. On a single-use license this passes (fails to initialise a dummy
        env).
        r+   FNr   )
r   r$   r   r-   r3   r   r4   r   disposeDefaultEnvr.   r&   r0   r   s      r   test_backward_compatibilityz*GurobiEnvTests.test_backward_compatibilityC   sV     2E2T\\2}

6"../:
r   c                     t        dddd| j                  }t               }|j                  |       |j	                          t                y NFT)r+   	manageEnvr   r   r$   r   r-   r.   r   r<   s      r   test_manage_envzGurobiEnvTests.test_manage_envR   s<    BETBT\\B}

6r   c                 $   t        dddd| j                  }t               }|j                  |       |j	                          t                t        dddd| j                  }|j                  |       |j	                          t                y r?   rA   )r&   r0   r   r7   s       r   test_multiple_solvesz#GurobiEnvTests.test_multiple_solvesZ   so    BETBT\\B}

6CUdCdllC

7r   c                 L   t        dddi| j                  }t               }|j                  |       |j                  }|j                          t        dddi| j                  }t               }|j                  |       | j                  t        j                  t               y)z
        Check that we cannot initialise environments after a memory leak. On a
        single-use license this passes (fails to initialise a dummy env with a
        memory leak).
        r+   FNr   )
r   r$   r   r-   modelr.   r3   r   r4   r   )r&   r0   r   tmpr7   r8   s         r   	test_leakzGurobiEnvTests.test_leakh   s|     2E2T\\2}

6ll3U3dll3G"../:r   N)__name__
__module____qualname__r'   r1   unittestSkipTestr5   r9   r=   rB   rD   rH   r   r   r   r   r      si    < ; ;   ; ;r   r   )rL   pulpr   r   r   r   gurobipyr   r   ImportErrorr   r   TestCaser   r   r   r   <module>rR      sT     5 5

Y _;X&& _;'  	Bs   
; AA