ó
UY>[c           @   s­  d  d l  Z  d  d l Z d  d l Z d  d l m Z d  d l Z d  d l Z d  d l m Z m Z d   Z	 d   Z
 d   Z d   Z d d	 d
 d g d  d d d g d d g g Z Z d d  g d	 g g Z Z d d  d g d  d g d	 d g g Z Z g  Z d e j f d     YZ e j e  d e j f d     YZ e j e  d	 d	 d  Z e d k rŠe e  j  d	 k re   qŠx" e  j d	 D] Z e e  qWn  d S(   i˙˙˙˙N(   t   basename(   t   solvet	   itersolvec         C   s,  g  } xt  |   D]ó } | j   } | s | d d k rB q n  | d d k r˛ t |  d k sj t  | d d k s t  g  | d d !D] } t |  ^ q \ } } q n  | d d k rĆ Pn  | d	 d
 k sÜ t  | j g  | d	  D] } t |  ^ qí  q Wt |  | k s"t  | | f S(   sj   
    read a DIMACS cnf formatted file from `path`, and return the clauses
    and number of variables
    i    t   ct   pi   i   t   cnfi   t   %i˙˙˙˙t   0(   t   opent   splitt   lent   AssertionErrort   intt   append(   t   patht   clausest   linet   partst   nt   n_varst	   n_clausest   lit(    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   read_cnf   s     ,.c            sM   i    x* | D]" } t  | d k    t |  <q Wt   f d   |  D  S(   s0   
    evaluate the clauses with the solution
    i    c         3   s+   |  ]! } t    f d    | D  Vq d S(   c         3   s/   |  ]% }   t  |  t | d  k   AVq d S(   i    N(   t   abst   bool(   t   .0t   i(   t   sol_vars(    s+   lib/python2.7/site-packages/test_pycosat.pys	   <genexpr>)   s    N(   t   any(   R   t   clause(   R   (    s+   lib/python2.7/site-packages/test_pycosat.pys	   <genexpr>)   s   (   R   R   t   all(   R   t   solR   (    (   R   s+   lib/python2.7/site-packages/test_pycosat.pyt   evaluate"   s
     c         c   s\   xU t  rW t j |   } t | t  rP | V|  j g  | D] } | ^ q9  q d  Sq Wd  S(   N(   t   Truet   pycosatR   t
   isinstancet   listR   (   R   R   t   x(    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   py_itersolve,   s    	$c         C   sç   t  j j d t |    t  j j   t |   \ } } t  j j d | t |  f  t  j j   d } xS t | |  D]B } t  j j d  t  j j   t | |  s´ t	  | d 7} q| Wt  j j d |  t  j j   | S(   Ns   %30s:  s   vars: %6d   cls: %6d   i    t   .i   s   %d
(
   t   syst   stdoutt   writeR    t   flushR   R
   R   R    R   (   R   R   R   t   n_solR   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   process_cnf_file5   s     i   i   iű˙˙˙i   i   iý˙˙˙iü˙˙˙i   iţ˙˙˙t	   TestSolvec           B   s   e  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 d   Z d   Z RS(   c         C   sČ   |  j  t t d d g d g g d  |  j  t t d  |  j  t t d  |  j  t t t    |  j  t t d g  |  j  t t d d g d d  g g d  |  j  t t d d g d d	 g g  d  S(
   Ni   i   iý˙˙˙t   Ag      đ?t   ai   i   i    (   t   assertRaisest	   TypeErrorR   t   objectt   Nonet
   ValueError(   t   self(    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   test_wrong_args_   s    %(c         C   sU   xN t  d  D]@ } |  j t g  |  g  t  d | d  D] } | ^ q9  q Wd  S(   Ni   i   (   t   ranget   assertEqualR   (   R6   R   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   test_no_clausesh   s    c         C   s   |  j  t t  d d d d d g  t j d d k r g  t D]% } g  | D] } t |  ^ qL ^ q? } |  j  t |  d d d d d g  n  d  S(   Ni   iţ˙˙˙iý˙˙˙iü˙˙˙i   i    i   (   R9   R   t   clauses1R(   t   version_infot   long(   R6   R   R   t   cls(    (    s+   lib/python2.7/site-packages/test_pycosat.pyt	   test_cnf1l   s    %2c         C   s/   |  j  t t t   d d d d d g  d  S(   Ni   iţ˙˙˙iý˙˙˙iü˙˙˙i   (   R9   R   t   iterR;   (   R6   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   test_iter_clausesr   s    c         C   sB   |  j  t g  t D] } t |  ^ q  d d d d d g  d  S(   Ni   iţ˙˙˙iý˙˙˙iü˙˙˙i   (   R9   R   R;   R@   (   R6   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   test_each_clause_iteru   s    (c         C   s/   |  j  t t t   d d d d d g  d  S(   Ni   iţ˙˙˙iý˙˙˙iü˙˙˙i   (   R9   R   t   tupleR;   (   R6   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   test_tuple_calusesy   s    c         C   sB   |  j  t g  t D] } t |  ^ q  d d d d d g  d  S(   Ni   iţ˙˙˙iý˙˙˙iü˙˙˙i   (   R9   R   R;   RC   (   R6   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   test_each_clause_tuples|   s    (c         C   s5   d   } |  j  t |    d d d d d g  d  S(   Nc          s   s   x t  D] }  |  Vq Wd  S(   N(   R;   (   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   gen_clauses   s    i   iţ˙˙˙iý˙˙˙iü˙˙˙i   (   R9   R   (   R6   RF   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   test_gen_clauses   s    	c         C   sF   |  j  t g  t D] } d   | D ^ q  d d d d d g  d  S(   Nc         s   s   |  ] } | Vq d  S(   N(    (   R   R%   (    (    s+   lib/python2.7/site-packages/test_pycosat.pys	   <genexpr>   s    i   iţ˙˙˙iý˙˙˙iü˙˙˙i   (   R9   R   R;   (   R6   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   test_each_clause_gen   s    ,c         C   s-   d d d     Y} |  j  t t |    d  S(   Nt   Liarc           B   s   e  Z d    Z RS(   c         S   s   d  S(   N(   R4   (   R6   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   __iter__   s    (   t   __name__t
   __module__RJ   (    (    (    s+   lib/python2.7/site-packages/test_pycosat.pyRI      s   (    (   R1   R2   R   (   R6   RI   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   test_bad_iter   s    c         C   s   |  j  t t  d  d  S(   Nt   UNSAT(   R9   R   t   clauses2(   R6   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt	   test_cnf2   s    c         C   s    |  j  t t  d d g  d  S(   Ni˙˙˙˙iţ˙˙˙(   R9   R   t   clauses3(   R6   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt	   test_cnf3   s    c         C   s)   |  j  t t d d d d d g  d  S(   Nt   varsi   i˙˙˙˙iţ˙˙˙iý˙˙˙(   R9   R   RQ   (   R6   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   test_cnf3_3vars   s    c         C   s[   xT t  d d  D]C } |  j t t d | | d k  r= d n d d d d d	 g  q Wd  S(
   Ni   i   t
   prop_limiti   t   UNKNOWNiţ˙˙˙iý˙˙˙iü˙˙˙i   (   R8   R9   R   R;   (   R6   t   lim(    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   test_cnf1_prop_limit   s    c      	   C   s5   |  j  t t d d d d d d d d d	 g  d  S(
   NRS   i   i   iţ˙˙˙iý˙˙˙iü˙˙˙i   iú˙˙˙iů˙˙˙(   R9   R   R;   (   R6   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   test_cnf1_vars   s    (   RK   RL   R7   R:   R?   RA   RB   RD   RE   RG   RH   RM   RP   RR   RT   RX   RY   (    (    (    s+   lib/python2.7/site-packages/test_pycosat.pyR.   ]   s   															t   TestIterSolvec           B   s   e  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 d   Z d   Z RS(   c         C   sČ   |  j  t t d d g d g g d  |  j  t t d  |  j  t t d  |  j  t t t    |  j  t t d g  |  j  t t d d g d d  g g d  |  j  t t d d g d d	 g g  d  S(
   Ni   i   iý˙˙˙R/   g      đ?R0   i   i   i    (   R1   R2   R   R3   R4   R5   (   R6   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyR7   §   s    %(c         C   sG   x@ t  d  D]2 } |  j t t t g  d |   d |  q Wd  S(   Ni   RS   i   (   R8   R9   R
   R$   R   (   R6   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyR:   °   s    c         C   s-   |  j  t d   t t t   D   d  S(   Nc         s   s   |  ] } t  t |  Vq d  S(   N(   R    R;   (   R   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pys	   <genexpr>ľ   s    (   t
   assertTrueR   R   R@   R;   (   R6   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyRA   ´   s    c         C   s@   |  j  t d   t g  t D] } t |  ^ q  D   d  S(   Nc         s   s   |  ] } t  t |  Vq d  S(   N(   R    R;   (   R   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pys	   <genexpr>š   s    (   R[   R   R   R;   R@   (   R6   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyRB   ¸   s    c         C   s-   |  j  t d   t t t   D   d  S(   Nc         s   s   |  ] } t  t |  Vq d  S(   N(   R    R;   (   R   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pys	   <genexpr>˝   s    (   R[   R   R   RC   R;   (   R6   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyRD   ź   s    c         C   s@   |  j  t d   t g  t D] } t |  ^ q  D   d  S(   Nc         s   s   |  ] } t  t |  Vq d  S(   N(   R    R;   (   R   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pys	   <genexpr>Á   s    (   R[   R   R   R;   RC   (   R6   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyRE   Ŕ   s    c         C   s3   d   } |  j  t d   t |    D   d  S(   Nc          s   s   x t  D] }  |  Vq Wd  S(   N(   R;   (   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyRF   Ĺ   s    c         s   s   |  ] } t  t |  Vq d  S(   N(   R    R;   (   R   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pys	   <genexpr>Č   s    (   R[   R   R   (   R6   RF   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyRG   Ä   s    	c         C   sD   |  j  t d   t g  t D] } d   | D ^ q  D   d  S(   Nc         s   s   |  ] } t  t |  Vq d  S(   N(   R    R;   (   R   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pys	   <genexpr>Ě   s    c         s   s   |  ] } | Vq d  S(   N(    (   R   R%   (    (    s+   lib/python2.7/site-packages/test_pycosat.pys	   <genexpr>Í   s    (   R[   R   R   R;   (   R6   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyRH   Ë   s    c         C   s-   d d d     Y} |  j  t t |    d  S(   NRI   c           B   s   e  Z d    Z RS(   c         S   s   d  S(   N(   R4   (   R6   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyRJ   Ň   s    (   RK   RL   RJ   (    (    (    s+   lib/python2.7/site-packages/test_pycosat.pyRI   Ń   s   (    (   R1   R2   R   (   R6   RI   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyRM   Đ   s    c         C   s   x- t  t t  D] } |  j t t |   q Wt t  t d t  } |  j t |  d  |  j t t d   | D   d  d  S(   NRS   i   c         s   s   |  ] } t  |  Vq d  S(   N(   RC   (   R   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pys	   <genexpr>Ý   s    (	   R   R;   t   nvars1R[   R    R$   R9   R
   t   set(   R6   R   t   sols(    (    s+   lib/python2.7/site-packages/test_pycosat.pyR?   Ő   s
    c         C   sy   t  d   t t  D  } xV t d  D]H } t j t  } t j |  |  j t  d   t |  D  |  q) Wd  S(   Nc         s   s   |  ] } t  |  Vq d  S(   N(   RC   (   R   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pys	   <genexpr>ŕ   s    i
   c         s   s   |  ] } t  |  Vq d  S(   N(   RC   (   R   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pys	   <genexpr>ĺ   s    (	   R]   R   R;   R8   t   copyt   deepcopyt   randomt   shuffleR9   (   R6   t   ref_solst   _R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   test_shuffle_clausesß   s    c         C   sY   t  d   t t  D  } d t j t  } |  j t  d   t |  D  |  d  S(   Nc         s   s   |  ] } t  |  Vq d  S(   N(   RC   (   R   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pys	   <genexpr>é   s    id   c         s   s   |  ] } t  |  Vq d  S(   N(   RC   (   R   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pys	   <genexpr>ě   s    (   R]   R   R;   R_   R`   R9   (   R6   Rc   R   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   test_many_clausesč   s    c         C   s#   |  j  t t t t   g   d  S(   N(   R9   R$   R   RO   t   nvars2(   R6   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyRP   ď   s    c         C   s;   |  j  t t t d   d d d g d d d g g  d  S(   Ni   i˙˙˙˙iţ˙˙˙iý˙˙˙(   R9   R$   R   RQ   (   R6   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyRT   ň   s    c         C   s&   |  j  t t t d d  g   d  S(   NRU   i   (   R9   R$   R   R;   (   R6   (    (    s+   lib/python2.7/site-packages/test_pycosat.pyRX   ö   s    (   RK   RL   R7   R:   RA   RB   RD   RE   RG   RH   RM   R?   Re   Rf   RP   RT   RX   (    (    (    s+   lib/python2.7/site-packages/test_pycosat.pyRZ   Ľ   s   											
					c         C   s   d t  j GHd t  j GHd t j GHt j   } x; t D]3 } x* t |  D] } | j	 t j
 |   qJ Wq7 Wt j d |   } | j |  S(   Ns   sys.prefix: %ss   sys.version: %ss   pycosat version: %rt	   verbosity(   R(   t   prefixt   versionR"   t   __version__t   unittestt	   TestSuitet   testsR8   t   addTestt	   makeSuitet   TextTestRunnert   run(   Rh   t   repeatt   suiteR>   Rd   t   runner(    (    s+   lib/python2.7/site-packages/test_pycosat.pyRr   ý   s    t   __main__(   R(   R_   Ra   t   os.pathR    Rl   R"   R   R   R   R    R&   R-   R\   R;   Rg   RO   t   nvars3RQ   Rn   t   TestCaseR.   R   RZ   Rr   RK   R
   t   argvR   (    (    (    s+   lib/python2.7/site-packages/test_pycosat.pyt   <module>   s0   		
			1(DT
