ó
iÃXE  c           @   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 „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿN(   t
   exceptions(   t	   rules_lexc         C   s#   g  |  D] } | j  | j f ^ q S(   s0   Get a list of type, value) tuples from the lexer(   t   typet   value(   t   lexert   tok(    (    sT   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_rules_lex.pyt   get_type_val_list   s    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 6d t j ƒ  k s¡ t j	 |  ƒ r° t j |  ƒ n d d 6d t j ƒ  k sØ t j	 t ƒ rç t j t ƒ n d d 6t j | ƒ d 6} d i | d 6} t
 t j | ƒ ƒ ‚ n  d } } } d S(   s   Do we get a paren_str token?s(   A regular string (parenthesized content)t   WORDt   At   SPACEt    t   regulart   stringt	   PAREN_STRs    (parenthesized content)s   ==s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)st   py3t   lext   py1R   t   py0t   py6t    s   assert %(py8)st   py8N(   s   WORDR   (   s   SPACER
   (   s   WORDR   (   s   SPACER
   (   s   WORDs   string(   s	   PAREN_STRs    (parenthesized content)(   s   ==(   s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)ss   assert %(py8)s(   R   t   clonet   inputR   t
   @pytest_art   _call_reprcomparet	   _safereprt   @py_builtinst   localst   _should_repr_global_namet   AssertionErrort   _format_explanationt   None(   R   t   @py_assert2t   @py_assert5t   @py_assert4t   @py_format7t   @py_format9(    (    sT   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_rules_lex.pyt   test_paren_str"   s        ³   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 6d t j ƒ  k sž t j	 |  ƒ r­ t j |  ƒ n d d 6d t j ƒ  k sÕ t j	 t ƒ rä t j t ƒ n d d 6t j | ƒ d 6} d i | d 6} t
 t j | ƒ ƒ ‚ n  d } } } d S(   s   Do we get 2 paren_str tokens?s$   two words (some note) (another note)R   t   twoR	   R
   t   wordsR   s    (some note)s    (another note)s   ==s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sR   R   R   R   R   R   R   s   assert %(py8)sR   N(   s   WORDs   two(   s   SPACER
   (   s   WORDs   words(   s	   PAREN_STRs    (some note)(   s	   PAREN_STRs    (another note)(   s   ==(   s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)ss   assert %(py8)s(   R   R   R   R   R   R   R   R   R   R   R   R   R   (   R   R    R!   R"   R#   R$   (    (    sT   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_rules_lex.pyt   test_double_paren_str/   s        ³   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 6d t j ƒ  k s¤ t j	 |  ƒ r³ t j |  ƒ n d d 6d t j ƒ  k sÛ t j	 t ƒ rê t j t ƒ n d d 6t j | ƒ d 6} d! i | d 6} t
 t j | ƒ ƒ ‚ n  d } } } d S("   s#   Do we get a user string and dashes?s    A regular string - <user string>R   R   R	   R
   R   R   t   DASHs    - t   USER_STRs   <user string>s   ==s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sR   R   R   R   R   R   R   s   assert %(py8)sR   N(   s   WORDR   (   s   SPACER
   (   s   WORDs   regular(   s   SPACER
   (   s   WORDs   string(   s   DASHs    - (   s   USER_STRs   <user string>(   s   ==(   s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)ss   assert %(py8)s(   R   R   R   R   R   R   R   R   R   R   R   R   R   (   R   R    R!   R"   R#   R$   (    (    sT   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_rules_lex.pyt   test_user_str;   s        ³   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 6d t j ƒ  k s¡ t j	 |  ƒ r° t j |  ƒ n d d 6d t j ƒ  k sØ t j	 t ƒ rç t j t ƒ n d d 6t j | ƒ d 6} d i | d 6} t
 t j | ƒ ƒ ‚ n  d } } } d S(   s   Do we get a version number?s   A regular string v<#>R   R   R	   R
   R   R   t   VERSIONs    v<#>s   ==s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sR   R   R   R   R   R   R   s   assert %(py8)sR   N(   s   WORDR   (   s   SPACER
   (   s   WORDs   regular(   s   SPACER
   (   s   WORDs   string(   s   VERSIONs    v<#>(   s   ==(   s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)ss   assert %(py8)s(   R   R   R   R   R   R   R   R   R   R   R   R   R   (   R   R    R!   R"   R#   R$   (    (    sT   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_rules_lex.pyt   test_versionI   s        ³   c          C   s@   t  j ƒ  }  |  j d ƒ t j t j ƒ  t |  ƒ Wd QXd S(   s$   Raise an exception when input is bads   A regular string <>N(   R   R   R   t   pytestt   raisest   ext   LexErrort   list(   R   (    (    sT   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_rules_lex.pyt   test_bad_inputV   s    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 6d t j ƒ  k s§ t j	 |  ƒ r¶ t j |  ƒ n d d 6d t j ƒ  k sÞ t j	 t ƒ rí t j t ƒ n d d 6t j | ƒ d 6} d" i | d 6} t
 t j | ƒ ƒ ‚ n  d } } } d S(#   s(   A numbered list gets the expected tokenss   <#>. A regular stringt   HASHs   <#>t   PERIODt   .R	   R
   R   R   R   R   s   ==s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sR   R   R   R   R   R   R   s   assert %(py8)sR   N(   s   HASHs   <#>(   s   PERIODR6   (   s   SPACER
   (   s   WORDR   (   s   SPACER
   (   s   WORDs   regular(   s   SPACER
   (   s   WORDs   string(   s   ==(   s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)ss   assert %(py8)s(   R   R   R   R   R   R   R   R   R   R   R   R   R   (   R   R    R!   R"   R#   R$   (    (    sT   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_rules_lex.pyt   test_numbered_list^   s        ³   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 6d t j ƒ  k s¤ t j	 |  ƒ r³ t j |  ƒ n d d 6d t j ƒ  k sÛ t j	 t ƒ rê t j t ƒ n d d 6t j | ƒ d 6} d! i | d 6} t
 t j | ƒ ƒ ‚ n  d } } } d S("   s   A date gets the expected tokenss   A regular string - <yyyy-mm-dd>R   R   R	   R
   R   R   R)   s    - t   DATEs   <yyyy-mm-dd>s   ==s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sR   R   R   R   R   R   R   s   assert %(py8)sR   N(   s   WORDR   (   s   SPACER
   (   s   WORDs   regular(   s   SPACER
   (   s   WORDs   string(   s   DASHs    - (   s   DATEs   <yyyy-mm-dd>(   s   ==(   s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)ss   assert %(py8)s(   R   R   R   R   R   R   R   R   R   R   R   R   R   (   R   R    R!   R"   R#   R$   (    (    sT   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_rules_lex.pyt	   test_datem   s        ³   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
 6d t j ƒ  k sž t j	 |  ƒ r­ t j |  ƒ n d d 6d t j ƒ  k sÕ t j	 t ƒ rä t j t ƒ n d d 6t j | ƒ d 6} d i | d 6} t
 t j | ƒ ƒ ‚ n  d } } } d S(   s   Words can have periods in thems   word. .Word word.wordR   s   word.R	   R
   s   .Words	   word.words   ==s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sR   R   R   R   R   R   R   s   assert %(py8)sR   N(   s   WORDs   word.(   s   SPACER
   (   s   WORDs   .Word(   s   SPACER
   (   s   WORDs	   word.word(   s   ==(   s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)ss   assert %(py8)s(   R   R   R   R   R   R   R   R   R   R   R   R   R   (   R   R    R!   R"   R#   R$   (    (    sT   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_rules_lex.pyt   test_words_w_periods{   s        ³   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
 6d t j ƒ  k s¤ t j	 |  ƒ r³ t j |  ƒ n d d 6d t j ƒ  k sÛ t j	 t ƒ rê t j t ƒ n d d 6t j | ƒ d 6} d i | d 6} t
 t j | ƒ ƒ ‚ n  d } } } d S(   s   Periods are lexical tokenss   <something>. . .<something>R*   s   <something>R5   R6   R	   R
   s   ==s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sR   R   R   R   R   R   R   s   assert %(py8)sR   N(   s   USER_STRs   <something>(   s   PERIODR6   (   s   SPACER
   (   s   PERIODR6   (   s   SPACER
   (   s   PERIODR6   (   s   USER_STRs   <something>(   s   ==(   s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)ss   assert %(py8)s(   R   R   R   R   R   R   R   R   R   R   R   R   R   (   R   R    R!   R"   R#   R$   (    (    sT   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_rules_lex.pyt   test_periods‡   s        ³   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 6d t j ƒ  k sª t j	 |  ƒ r¹ t j |  ƒ n d d 6d t j ƒ  k sá t j	 t ƒ rð t j t ƒ n d d 6t j | ƒ d 6} d' i | d 6} t
 t j | ƒ ƒ ‚ n  d } } } d S((   s,   Square braces should return the right tokenss   A regular string[ - <entity>]R   R   R	   R
   R   R   t   LBRACEt   [R)   s    - t   ENTITYs   <entity>t   RBRACEt   ]s   ==s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sR   R   R   R   R   R   R   s   assert %(py8)sR   N(   s   WORDR   (   s   SPACER
   (   s   WORDs   regular(   s   SPACER
   (   s   WORDs   string(   s   LBRACER=   (   s   DASHs    - (   s   ENTITYs   <entity>(   s   RBRACER@   (   s   ==(   s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)ss   assert %(py8)s(   R   R   R   R   R   R   R   R   R   R   R   R   R   (   R   R    R!   R"   R#   R$   (    (    sT   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_rules_lex.pyt   test_braces•   s     !   ³   (   t   __builtin__R   t   _pytest.assertion.rewritet	   assertiont   rewriteR   R.   t   enforcerR    R0   R   R   R   R%   R(   R+   R-   R3   R7   R9   R:   R;   RA   (    (    (    sT   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_rules_lex.pyt   <module>   s      											