
iXE                 @   s   d  d l  Z d  d l j j Z d  d l Z d  d l m Z	 d  d l m
 Z
 e
 j 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)    N)
exceptions)	rules_lexc             C   s   d d   |  D S)z0Get a list of type, value) tuples from the lexerc             S   s"   g  |  ] } | j  | j f  q S )typevalue).0tokr   r   T/home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_rules_lex.py
<listcomp>   s   	 z%get_type_val_list.<locals>.<listcomp>r   )lexerr   r   r	   get_type_val_list   s    r   c              C   s=  t  j   }  |  j d  t |   } d d d d d d g } | | k } | s+t j d | f d | | f  i t j |  d 6t j |  d 6d t j   k s t j	 t  r t j t  n d d 6d t j   k s t j	 |   r t j |   n d d 6} d i | d 6} t
 t j |    n  d } } } d S)zDo we get a paren_str token?z(A regular string (parenthesized content)WORDASPACE regularstring	PAREN_STR (parenthesized content)==0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)spy3py6r   py0lexpy1 assert %(py8)spy8N)WORDr   )SPACEr   )r   r   )r    r   )r   zstring)z	PAREN_STRr   )r   )r   r   )r   cloneinputr   
@pytest_ar_call_reprcompare	_saferepr@py_builtinslocals_should_repr_global_nameAssertionError_format_explanation)r   @py_assert2@py_assert5@py_assert4@py_format7@py_format9r   r   r	   test_paren_str"   s           r0   c              C   s:  t  j   }  |  j d  t |   } d d d d d g } | | k } | s(t j d | f d | | f  i t j |  d 6t j |  d 6d t j   k s t j	 t  r t j t  n d d 6d t j   k s t j	 |   r t j |   n d d 6} d i | d 6} t
 t j |    n  d } } } d S)zDo we get 2 paren_str tokens?z$two words (some note) (another note)r   twor   r   wordsr    (some note) (another note)r   0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   r   r   r   r   r   r   assert %(py8)sr   N)WORDztwo)zSPACEr   )r7   zwords)	PAREN_STRr3   )r8   r4   )r   )r5   r6   )r   r!   r"   r   r#   r$   r%   r&   r'   r(   r)   r*   )r   r+   r,   r-   r.   r/   r   r   r	   test_double_paren_str/   s           r9   c              C   s@  t  j   }  |  j d  t |   } d d d d d d d g } | | k } | s.t j d | f d  | | f  i t j |  d 6t j |  d 6d t j   k s t j	 t  r t j t  n d d 6d t j   k s t j	 |   r t j |   n d d 6} d! i | d 6} t
 t j |    n  d } } } d S)"z#Do we get a user string and dashes?z A regular string - <user string>r   r   r   r   r   r   DASH - USER_STR<user string>r   0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   r   r   r   r   r   r   assert %(py8)sr   N)WORDr   )SPACEr   )r@   zregular)rA   r   )r@   zstring)zDASHr;   )zUSER_STRr=   )r   )r>   r?   )r   r!   r"   r   r#   r$   r%   r&   r'   r(   r)   r*   )r   r+   r,   r-   r.   r/   r   r   r	   test_user_str;   s           rB   c              C   s=  t  j   }  |  j d  t |   } d d d d d d g } | | k } | s+t j d | f d | | f  i t j |  d 6t j |  d 6d t j   k s t j	 t  r t j t  n d d 6d t j   k s t j	 |   r t j |   n d d 6} d i | d 6} t
 t j |    n  d } } } d S)zDo we get a version number?zA regular string v<#>r   r   r   r   r   r   VERSION v<#>r   0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   r   r   r   r   r   r   assert %(py8)sr   N)WORDr   )SPACEr   )rG   zregular)rH   r   )rG   zstring)zVERSIONrD   )r   )rE   rF   )r   r!   r"   r   r#   r$   r%   r&   r'   r(   r)   r*   )r   r+   r,   r-   r.   r/   r   r   r	   test_versionI   s           rI   c           	   C   s@   t  j   }  |  j d  t j t j   t |   Wd QXd S)z$Raise an exception when input is badzA regular string <>N)r   r!   r"   pytestraisesexLexErrorlist)r   r   r   r	   test_bad_inputV   s    rO   c           	   C   sC  t  j   }  |  j d  t |   } d d d d d d d d g } | | k } | s1t j d  | f d! | | f  i t j |  d 6t j |  d 6d t j   k s t j	 t  r t j t  n d d 6d t j   k s t j	 |   r t j |   n d d 6} d" i | d 6} t
 t j |    n  d } } } d S)#z(A numbered list gets the expected tokensz<#>. A regular stringHASH<#>PERIOD.r   r   r   r   r   r   r   0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   r   r   r   r   r   r   assert %(py8)sr   N)zHASHrQ   )zPERIODrS   )SPACEr   )WORDr   )rV   r   )rW   zregular)rV   r   )rW   zstring)r   )rT   rU   )r   r!   r"   r   r#   r$   r%   r&   r'   r(   r)   r*   )r   r+   r,   r-   r.   r/   r   r   r	   test_numbered_list^   s           rX   c              C   s@  t  j   }  |  j d  t |   } d d d d d d d g } | | k } | s.t j d | f d  | | f  i t j |  d 6t j |  d 6d t j   k s t j	 t  r t j t  n d d 6d t j   k s t j	 |   r t j |   n d d 6} d! i | d 6} t
 t j |    n  d } } } d S)"zA date gets the expected tokenszA regular string - <yyyy-mm-dd>r   r   r   r   r   r   r:    - DATE<yyyy-mm-dd>r   0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   r   r   r   r   r   r   assert %(py8)sr   N)WORDr   )SPACEr   )r^   zregular)r_   r   )r^   zstring)zDASHrY   )zDATEr[   )r   )r\   r]   )r   r!   r"   r   r#   r$   r%   r&   r'   r(   r)   r*   )r   r+   r,   r-   r.   r/   r   r   r	   	test_datem   s           r`   c              C   s:  t  j   }  |  j d  t |   } d d d d d g } | | k } | s(t j d | f d | | f  i t j |  d
 6t j |  d 6d t j   k s t j	 t  r t j t  n d d 6d t j   k s t j	 |   r t j |   n d d 6} d i | d 6} t
 t j |    n  d } } } d S)zWords can have periods in themzword. .Word word.wordr   word.r   r   .Word	word.wordr   0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   r   r   r   r   r   r   assert %(py8)sr   N)WORDra   )SPACEr   )rf   rb   )rg   r   )rf   rc   )r   )rd   re   )r   r!   r"   r   r#   r$   r%   r&   r'   r(   r)   r*   )r   r+   r,   r-   r.   r/   r   r   r	   test_words_w_periods{   s           rh   c              C   s@  t  j   }  |  j d  t |   } d d d d d d d g } | | k } | s.t j d | f d | | f  i t j |  d
 6t j |  d 6d t j   k s t j	 t  r t j t  n d d 6d t j   k s t j	 |   r t j |   n d d 6} d i | d 6} t
 t j |    n  d } } } d S)zPeriods are lexical tokensz<something>. . .<something>r<   <something>rR   rS   r   r   r   0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   r   r   r   r   r   r   assert %(py8)sr   N)USER_STRri   )PERIODrS   )SPACEr   )rm   rS   )rn   r   )rm   rS   )rl   ri   )r   )rj   rk   )r   r!   r"   r   r#   r$   r%   r&   r'   r(   r)   r*   )r   r+   r,   r-   r.   r/   r   r   r	   test_periods   s           ro   c           
   C   sF  t  j   }  |  j d  t |   } d d d d d  d! d" d# d$ g	 } | | k } | s4t j d% | f d& | | f  i t j |  d 6t j |  d 6d t j   k s t j	 t  r t j t  n d d 6d t j   k s t j	 |   r t j |   n d d 6} d' i | d 6} t
 t j |    n  d } } } d S)(z,Square braces should return the right tokenszA regular string[ - <entity>]r   r   r   r   r   r   LBRACE[r:    - ENTITY<entity>RBRACE]r   0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   r   r   r   r   r   r   assert %(py8)sr   N)WORDr   )SPACEr   )ry   zregular)rz   r   )ry   zstring)zLBRACErq   )zDASHrr   )zENTITYrt   )zRBRACErv   )r   )rw   rx   )r   r!   r"   r   r#   r$   r%   r&   r'   r(   r)   r*   )r   r+   r,   r-   r.   r/   r   r   r	   test_braces   s     !      r{   )builtinsr&   _pytest.assertion.rewrite	assertionrewriter#   rJ   enforcerr   rL   r   r   r   r0   r9   rB   rI   rO   rX   r`   rh   ro   r{   r   r   r   r	   <module>   s      	