U
    ?[1ff"                     @   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d Z	dd Z
dd	 Zd
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G dd dejZee G dd dejZee dddZedkr:ee jdkre  ne jdd D ]Zee q*dS )    N)basename)solve	itersolvec                 C   s   g }t | D ]}| }|r|d dkr*q|d dkrrt|dksFt|d dksVtdd |d	d D \}}q|d d
kr q|d dkst|dd |dd D  qt||kst||fS )zj
    read a DIMACS cnf formatted file from `path`, and return the clauses
    and number of variables
    r   cp      cnfc                 S   s   g | ]}t |qS  int).0nr
   r
   +  /croot/pycosat_1714510623388/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold/lib/python3.8/site-packages/test_pycosat.py
<listcomp>   s     zread_cnf.<locals>.<listcomp>   %0c                 S   s   g | ]}t |qS r
   r   r   Zlitr
   r
   r   r      s     N)opensplitlenAssertionErrorappend)pathclauseslinepartsn_varsZ	n_clausesr
   r
   r   read_cnf   s     r    c                    s8   i  |D ]}t |dk t|< qt fdd| D S )z0
    evaluate the clauses with the solution
    r   c                 3   s$   | ]}t  fd d|D V  qdS )c                 3   s&   | ]} t | t|d k A V  qdS )r   N)absboolr   iZsol_varsr
   r   	<genexpr>)   s     z%evaluate.<locals>.<genexpr>.<genexpr>N)anyr   clauser%   r
   r   r&   )   s   zevaluate.<locals>.<genexpr>)r"   r!   all)r   solr$   r
   r%   r   evaluate"   s    r,   c                 c   s:   t | }t|tr0|V  | dd |D  q d S q d S )Nc                 S   s   g | ]
}| qS r
   r
   r   xr
   r
   r   r   1   s     z py_itersolve.<locals>.<listcomp>)pycosatr   
isinstancelistr   )r   r+   r
   r
   r   py_itersolve,   s
    

r2   c                 C   s   t jdt|   t j  t| \}}t jd|t|f  t j  d}t||D ]0}t jd t j  t||st	|d7 }qZt jd|  t j  |S )Nz%30s:  zvars: %6d   cls: %6d   r   .r   z%d
)
sysstdoutwriter   flushr    r   r   r,   r   )r   r   r   Zn_solr+   r
   r
   r   process_cnf_file5   s    




r8      r   r   r      r   c                   @   s   e Z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d Zdd Zdd ZdS ) 	TestSolvec                 C   s   |  ttddgdggd |  ttd |  ttd |  ttt  |  ttdg |  ttddgdd ggd |  ttddgdd	gg d S 
Nr   r   r<   Ag      ?ar;   r9   r   )assertRaises	TypeErrorr   object
ValueErrorselfr
   r
   r   test_wrong_args_   s    zTestSolve.test_wrong_argsc              	   C   s8   t dD ]*}| tg |dd t d|d D  qd S )N   c                 S   s   g | ]
}| qS r
   r
   r#   r
   r
   r   r   j   s     z-TestSolve.test_no_clauses.<locals>.<listcomp>r   )rangeassertEqualr   rH   r   r
   r
   r   test_no_clausesh   s    zTestSolve.test_no_clausesc                 C   sT   |  ttdddddg tjd dkrPdd	 tD }|  t|dddddg d S )
Nr   r>   r<   r=   r9   r   r   c                 S   s   g | ]}d d |D qS )c                 S   s   g | ]}t |qS r
   )longr   r
   r
   r   r   o   s     z2TestSolve.test_cnf1.<locals>.<listcomp>.<listcomp>r
   r(   r
   r
   r   r   o   s     z'TestSolve.test_cnf1.<locals>.<listcomp>)rL   r   clauses1r4   version_info)rH   clsr
   r
   r   	test_cnf1l   s    zTestSolve.test_cnf1c                 C   s"   |  tttdddddg d S Nr   r>   r<   r=   r9   )rL   r   iterrP   rG   r
   r
   r   test_iter_clausesr   s    zTestSolve.test_iter_clausesc                 C   s(   |  tdd tD dddddg d S )Nc                 S   s   g | ]}t |qS r
   rU   r(   r
   r
   r   r   v   s     z3TestSolve.test_each_clause_iter.<locals>.<listcomp>r   r>   r<   r=   r9   rL   r   rP   rG   r
   r
   r   test_each_clause_iteru   s    zTestSolve.test_each_clause_iterc                 C   s"   |  tttdddddg d S rT   )rL   r   tuplerP   rG   r
   r
   r   test_tuple_calusesy   s    zTestSolve.test_tuple_calusesc                 C   s(   |  tdd tD dddddg d S )Nc                 S   s   g | ]}t |qS r
   rZ   r(   r
   r
   r   r   }   s     z5TestSolve.test_each_clause_tuples.<locals>.<listcomp>r   r>   r<   r=   r9   rX   rG   r
   r
   r   test_each_clause_tuples|   s    z!TestSolve.test_each_clause_tuplesc                 C   s(   dd }|  t| dddddg d S )Nc                  s   s   t D ]
} | V  qd S NrP   r)   r
   r
   r   gen_clauses   s    z/TestSolve.test_gen_clauses.<locals>.gen_clausesr   r>   r<   r=   r9   )rL   r   rH   ra   r
   r
   r   test_gen_clauses   s    zTestSolve.test_gen_clausesc                 C   s(   |  tdd tD dddddg d S )Nc                 S   s   g | ]}d d |D qS )c                 s   s   | ]
}|V  qd S r^   r
   r-   r
   r
   r   r&      s     z<TestSolve.test_each_clause_gen.<locals>.<listcomp>.<genexpr>r
   r(   r
   r
   r   r      s     z2TestSolve.test_each_clause_gen.<locals>.<listcomp>r   r>   r<   r=   r9   rX   rG   r
   r
   r   test_each_clause_gen   s    zTestSolve.test_each_clause_genc                 C   s"   G dd d}|  tt|  d S )Nc                   @   s   e Zd Zdd ZdS )z%TestSolve.test_bad_iter.<locals>.Liarc                 S   s   d S r^   r
   rG   r
   r
   r   __iter__       z.TestSolve.test_bad_iter.<locals>.Liar.__iter__N__name__
__module____qualname__re   r
   r
   r
   r   Liar   s   rk   )rC   rD   r   rH   rk   r
   r
   r   test_bad_iter   s    zTestSolve.test_bad_iterc                 C   s   |  ttd d S )NZUNSAT)rL   r   clauses2rG   r
   r
   r   	test_cnf2   s    zTestSolve.test_cnf2c                 C   s   |  ttddg d S )Nr   r>   rL   r   clauses3rG   r
   r
   r   	test_cnf3   s    zTestSolve.test_cnf3c                 C   s   |  ttdddddg d S )Nr;   varsr   r>   r<   rp   rG   r
   r
   r   test_cnf3_3vars   s    zTestSolve.test_cnf3_3varsc              	   C   s>   t ddD ].}| tt|d|dk r(dnddddd	g q
d S )
Nr      Z
prop_limit   UNKNOWNr>   r<   r=   r9   )rK   rL   r   rP   )rH   Zlimr
   r
   r   test_cnf1_prop_limit   s    zTestSolve.test_cnf1_prop_limitc              
   C   s&   |  ttddddddddd	g d S )
NrJ   rs   r   r>   r<   r=   r9   iirX   rG   r
   r
   r   test_cnf1_vars   s    zTestSolve.test_cnf1_varsN)rh   ri   rj   rI   rN   rS   rV   rY   r[   r]   rc   rd   rm   ro   rr   ru   rz   r{   r
   r
   r
   r   r?   ]   s   	r?   c                   @   s   e Z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d Zdd Zdd ZdS ) TestIterSolvec                 C   s   |  ttddgdggd |  ttd |  ttd |  ttt  |  ttdg |  ttddgdd ggd |  ttddgdd	gg d S r@   )rC   rD   r   rE   rF   rG   r
   r
   r   rI      s    zTestIterSolve.test_wrong_argsc              	   C   s2   t dD ]$}| tttg |dd|  qd S )NrJ   rs   r   )rK   rL   r   r1   r   rM   r
   r
   r   rN      s    zTestIterSolve.test_no_clausesc                 C   s$   |  tdd tttD  d S )Nc                 s   s   | ]}t t|V  qd S r^   r,   rP   r   r+   r
   r
   r   r&      s     z2TestIterSolve.test_iter_clauses.<locals>.<genexpr>)
assertTruer*   r   rU   rP   rG   r
   r
   r   rV      s    
zTestIterSolve.test_iter_clausesc                 C   s*   |  tdd tdd tD D  d S )Nc                 s   s   | ]}t t|V  qd S r^   r}   r~   r
   r
   r   r&      s     z6TestIterSolve.test_each_clause_iter.<locals>.<genexpr>c                 S   s   g | ]}t |qS r
   rW   r(   r
   r
   r   r      s     z7TestIterSolve.test_each_clause_iter.<locals>.<listcomp>r   r*   r   rP   rG   r
   r
   r   rY      s    z#TestIterSolve.test_each_clause_iterc                 C   s$   |  tdd tttD  d S )Nc                 s   s   | ]}t t|V  qd S r^   r}   r~   r
   r
   r   r&      s     z3TestIterSolve.test_tuple_caluses.<locals>.<genexpr>)r   r*   r   rZ   rP   rG   r
   r
   r   r[      s    
z TestIterSolve.test_tuple_calusesc                 C   s*   |  tdd tdd tD D  d S )Nc                 s   s   | ]}t t|V  qd S r^   r}   r~   r
   r
   r   r&      s     z8TestIterSolve.test_each_clause_tuples.<locals>.<genexpr>c                 S   s   g | ]}t |qS r
   r\   r(   r
   r
   r   r      s     z9TestIterSolve.test_each_clause_tuples.<locals>.<listcomp>r   rG   r
   r
   r   r]      s    z%TestIterSolve.test_each_clause_tuplesc                 C   s*   dd }|  tdd t| D  d S )Nc                  s   s   t D ]
} | V  qd S r^   r_   r`   r
   r
   r   ra      s    z3TestIterSolve.test_gen_clauses.<locals>.gen_clausesc                 s   s   | ]}t t|V  qd S r^   r}   r~   r
   r
   r   r&      s     z1TestIterSolve.test_gen_clauses.<locals>.<genexpr>)r   r*   r   rb   r
   r
   r   rc      s    zTestIterSolve.test_gen_clausesc                 C   s*   |  tdd tdd tD D  d S )Nc                 s   s   | ]}t t|V  qd S r^   r}   r~   r
   r
   r   r&      s     z5TestIterSolve.test_each_clause_gen.<locals>.<genexpr>c                 S   s   g | ]}d d |D qS )c                 s   s   | ]
}|V  qd S r^   r
   r-   r
   r
   r   r&      s     z@TestIterSolve.test_each_clause_gen.<locals>.<listcomp>.<genexpr>r
   r(   r
   r
   r   r      s     z6TestIterSolve.test_each_clause_gen.<locals>.<listcomp>r   rG   r
   r
   r   rd      s
    z"TestIterSolve.test_each_clause_genc                 C   s"   G dd d}|  tt|  d S )Nc                   @   s   e Zd Zdd ZdS )z)TestIterSolve.test_bad_iter.<locals>.Liarc                 S   s   d S r^   r
   rG   r
   r
   r   re      rf   z2TestIterSolve.test_bad_iter.<locals>.Liar.__iter__Nrg   r
   r
   r
   r   rk      s   rk   )rC   rD   r   rl   r
   r
   r   rm      s    zTestIterSolve.test_bad_iterc                 C   sb   t ttD ]}| tt| q
tt ttd}| t|d | ttdd |D d d S )Nrs      c                 s   s   | ]}t |V  qd S r^   r\   r~   r
   r
   r   r&      s     z*TestIterSolve.test_cnf1.<locals>.<genexpr>)	r   rP   nvars1r   r,   r1   rL   r   set)rH   r+   Zsolsr
   r
   r   rS      s
    zTestIterSolve.test_cnf1c                 C   sZ   t dd ttD }tdD ]6}tt}t| | t dd t|D | qd S )Nc                 s   s   | ]}t |V  qd S r^   r\   r~   r
   r
   r   r&      s     z5TestIterSolve.test_shuffle_clauses.<locals>.<genexpr>
   c                 s   s   | ]}t |V  qd S r^   r\   r~   r
   r
   r   r&      s     )	r   r   rP   rK   copydeepcopyrandomshufflerL   )rH   ref_sols_r	   r
   r
   r   test_shuffle_clauses   s    

z"TestIterSolve.test_shuffle_clausesc                 C   sF   t dd ttD }dtt }| t dd t|D | d S )Nc                 s   s   | ]}t |V  qd S r^   r\   r~   r
   r
   r   r&      s     z2TestIterSolve.test_many_clauses.<locals>.<genexpr>d   c                 s   s   | ]}t |V  qd S r^   r\   r~   r
   r
   r   r&      s     )r   r   rP   r   r   rL   )rH   r   r	   r
   r
   r   test_many_clauses   s
    zTestIterSolve.test_many_clausesc                 C   s   |  ttttg  d S r^   )rL   r1   r   rn   nvars2rG   r
   r
   r   ro      s    zTestIterSolve.test_cnf2c                 C   s*   |  tttddddgdddgg d S )Nr;   r   r>   r<   )rL   r1   r   rq   rG   r
   r
   r   ru      s    zTestIterSolve.test_cnf3_3varsc                 C   s   |  tttddg  d S )Nr   rw   )rL   r1   r   rP   rG   r
   r
   r   rz      s    z"TestIterSolve.test_cnf1_prop_limitN)rh   ri   rj   rI   rN   rV   rY   r[   r]   rc   rd   rm   rS   r   r   ro   ru   rz   r
   r
   r
   r   r|      s   	
	r|   c                 C   sp   t dtj  t dtj  t dtj  t }tD ]"}t	|D ]}|
t| qBq6tj| d}||S )Nzsys.prefix: %szsys.version: %szpycosat version: %r)	verbosity)printr4   prefixversionr/   __version__unittestZ	TestSuitetestsrK   ZaddTestZ	makeSuiteZTextTestRunnerrun)r   repeatZsuiterR   r   runnerr
   r
   r   r      s    r   __main__)r   r   )r4   r   r   os.pathr   r   r/   r   r   r    r,   r2   r8   r   rP   r   rn   Znvars3rq   r   ZTestCaser?   r   r|   r   rh   r   argvr   r
   r
   r
   r   <module>   s0   
	"D
T


