
    z%iz#                         	 d dl mZ d dlZd dlmZ d dlmZmZ d dlm	Z	  G d d      Z
 G d d	ej                        Zed
k(  r ej                  d       yy)    )HyperParserN)requires)TkText)EditorWindowc                   B    e Zd Zd Zej
                  Zej                  Zy)DummyEditwinc                 J    || _         d| _        d| _        d| _        d| _        y )N   >>>)2   i  i  )textindentwidthtabwidthprompt_last_linenum_context_lines)selfr   s     V/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/idle_test/test_hyperparser.py__init__zDummyEditwin.__init__
   s(    	 %!.    N)__name__
__module____qualname__r   r   _build_char_in_string_funcis_char_in_string r   r   r	   r	   	   s!    / ".!H!H$66r   r	   c                   l    e Zd ZdZed        Zed        Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zy)HyperParserTestu#  """This is a module docstring"""
# this line is a comment
x = "this is a string"
y = 'this is also a string'
l = [i for i in range(10)]
m = [py*py for # comment
       py in l]
x.__len__
z = ((r'asdf')+('a')))
[x for x in
for = False
cliché = "this is a string with unicode, what a cliché"c                     t        d       t               | _        | j                  j                          t	        | j                        | _        t        | j
                        | _        y )Ngui)r   r   rootwithdrawr   r   r	   editwinclss    r   
setUpClasszHyperParserTest.setUpClass%   sA    4>"388,r   c                 D    | ` | `| j                  j                          | `y N)r   r#   r!   destroyr$   s    r   tearDownClasszHyperParserTest.tearDownClass-   s     HckHr   c                 P    | j                   j                  d| j                         y )Ninsert)r   r,   coder   s    r   setUpzHyperParserTest.setUp3   s    		499-r   c                 ^    | j                   j                  dd       d| j                  _        y )N1.0endr   )r   deleter#   r   r.   s    r   tearDownzHyperParserTest.tearDown6   s"    		&(-%r   c                 0    	 t        | j                  |      S r(   )r   r#   )r   indexs     r   
get_parserzHyperParserTest.get_parser:   s    	 4<<//r   c                 D   	 | j                  t              5 }| j                  j                  ddd       | j	                  d      }d d d        | j                  dt        j                               d| j                  _	        | j	                  d      }| j                  |j                  | j                  j                  dd             | j                  j                  d| j                  j                  dd      dz         | j	                  d	      }y # 1 sw Y   xY w)
Nconsoler1   z1.endz1.5precedes r2      z54.5)assertRaises
ValueErrorr   tag_addr7   assertInstr	exceptionr#   r   assertEqualrawtextgetr,   )r   veps      r   	test_initzHyperParserTest.test_init@   s    	 z* 	'bIIi8&A	' 	j#bll"34 )+% OOE"DIIMM%$?@ 					eU ;A =>OOF#	' 	's   /DDc                 >   | j                   } |d      }| j                  |j                                 |d      }| j                  |j                                 |d      }| j                  |j                                 |d      }| j                  |j                                 |d      }| j                  |j                                 |d      }| j                  |j                                 |d      }| j                  |j                                y )Nr1   z1.4z2.3z3.3z3.7z4.6z12.54)r7   assertFalseis_in_string
assertTruer   rE   rG   s      r   test_is_in_stringz!HyperParserTest.test_is_in_stringT   s    ooJ)*J()J)*J)*J()J()L()r   c                    | j                   } |d      }| j                  |j                                 |d      }| j                  |j                                 |d      }| j                  |j                                 |d      }| j                  |j                                 |d      }| j                  |j                                 |d      }| j                  |j                                y )Nr1   z1.1z2.5z3.4z3.6z4.14)r7   rL   
is_in_coderJ   rM   s      r   test_is_in_codezHyperParserTest.test_is_in_codef   s    ooJ'J(J(J'J(K(r   c                 f   | j                   }d }d } |d      }| j                   ||             | j                   ||              |d      }| j                   ||      d       | j                   ||       ||              |d      }| j                   ||      d       | j                   ||       ||              |d      }| j                   ||      d	       | j                   ||              |d
      }| j                   ||             | j                   ||             y )Nc                 &    | j                  d      S )NF	mustcloseget_surrounding_bracketsparsers    r   without_mustclosezGHyperParserTest.test_get_surrounding_bracket.<locals>.without_mustclosey   s     22U2CCr   c                 &    | j                  d      S )NTrT   rV   rX   s    r   with_mustclosezDHyperParserTest.test_get_surrounding_bracket.<locals>.with_mustclose~   s     22T2BBr   z3.2z5.6)z5.45.25z5.23)z5.21z5.24z6.15)z6.4z6.endz9.end)r7   assertIsNoneassertTupleEqual)r   rE   rZ   r\   rG   s        r   test_get_surrounding_bracketz,HyperParserTest.test_get_surrounding_bracketv   s!   oo	D
	C
 J.+,+A./J/2OD/2N14EFK/24DE/2N14EFK/24DE.+,L.+,+A./r   c                    | j                   } |d      }| j                  |j                         d        |d      }| j                  t              5 }|j                          d d d        | j                  dt        j                                |d      }| j                  |j                         d        |d      }| j                  |j                         d        |d	      }| j                  |j                         d
        |d      }| j                  |j                         d        |d      }| j                  |j                         d        |d      }| j                  |j                         d        |d      }| j                  t              5 }|j                          d d d        | j                  dt        |j                                |d      }| j                  |j                         d
        |d      }| j                  |j                         d
        |d      }| j                  |j                         d
        |d      }| j                  |j                         d
        |d      }| j                  |j                         d        |d      }| j                  |j                         d       y # 1 sw Y   kxY w# 1 sw Y   -xY w)Nz4.2zy z4.7zis inside a coder]   z	range(10)z6.7pyz6.8r;   z7.9z8.endz	x.__len__z9.13zr'asdf'z9.17z10.0z10.6z10.11z11.3z11.11Falsez12.6   cliché)r7   rC   get_expressionr=   r>   r@   rA   rB   )r   rE   rG   rF   s       r   test_get_expressionz#HyperParserTest.test_get_expression   sj   ooJ))+T2Jz* 	b	(#bll*;<K))+[9J))+T2J))+R0J))+T2L))+[9K))+Y7Kz* 	b	(#bll*;<K))+R0K))+R0L))+R0K))+R0L))+W5K))+Y7W	 	.	 	s   KKKK#c                    d }| j                   |d             | j                   |d             | j                   |d             | j                   |d             | j                   |d             | j                   |d             | j                   |d             | j                   |d	             | j                   |d
             | j                   |d             | j                   |d             | j                   |d             | j                   |d             | j                   |d             | j                   |d             | j                   |d             | j                   |d             | j                  t        j                  ddd      t        d             | j                  t        j                  ddd      t        d             | j                  t        j                  ddd      t        d             | j                   |d             | j                   |d             | j                   |d             | j                   |d             | j                   |d             | j                   |d             | j                   |d              | j                   |d!             y )"Nc                     t        j                  | dt        |             }|t        |       k(  ry|dk(  rydj                  |t        |             }t	        |      )Nr   TFz'Unexpected result: {} (expected 0 or {})r   _eat_identifierlenformat	Exception)	candidateresulterr_msgs      r   is_valid_idz8HyperParserTest.test_eat_identifier.<locals>.is_valid_id   sY     00As9~NFY'1CJJC	N  ((r   2notidvalid_id	_valid_id	valid_id_
_2valid_idTruerc   Noneforimportreturnclicherd   u   a٢2au   ٢au   a²z+ varr      varz+varr<   z.var+ :?^\"z
"a string")rJ   rL   rC   r   ri   rj   )r   rp   s     r   test_eat_identifierz#HyperParserTest.test_eat_identifier   sG   
	) 	X./ 	J/0K01K01L12 	F+,G,-F+, 	U+,X./X./ 	H-.I./E*+ 	T*+U+,U+, 	44WaCSZP44VQBCJO44VQBCJO 	S)*S)*S)*S)*S)*T*+S)*\23r   c           	         t         j                  }t        dd      D ],  }| j                   |d|z  d|      |       | j                   |d|z  d|      |       | j                   |dd|dz
  z  z   d|      |       | j                   |dd|dz
  z  z   d|      |       | j                   |dd|dz
  z  z   d|      |       | j                   |d|dz
  z  dz   d|      |       | j                   |d|z  d|      d       | j                   |dd|dz
  z  z   d|      d       | j                   |dd|dz
  z  z   d|      d       / y )N      ar      é2r   )r   ri   rangerC   )r   eat_idlengths      r   #test_eat_identifier_various_lengthsz3HyperParserTest.test_eat_identifier_various_lengths  se   ,,Arl 		NFVC&L!V<fEVD6M1f=vFVC#!*<$<aH&QVD3&1*+=$=q&I6RVD3&1*+=$=q&I6RVDFQJ$7#$=q&I6RVC&L!V<a@VC#!*<$<aH!LVC$&1**=$=q&I1M		Nr   N)r   r   r   r-   classmethodr&   r*   r/   r4   r7   rH   rN   rQ   r`   rf   r   r   r   r   r   r   r      sk    H 	 - -  
..0$(*$) 0B28h74rNr   r   __main__   )	verbosity)idlelib.hyperparserr   unittesttest.supportr   tkinterr   r   idlelib.editorr   r	   TestCaser   r   mainr   r   r   <module>r      sU    ! +  !  '	7 	7{Nh'' {N| zHMMA r   