o
    €e+  ã                   @   sÄ   d dl mZ d dlZd dlmZ d dlZddlmZ ddlm	Z	 ddl
mZ ddlmZ g ZejD ]Zd	 d
d„ edƒD ƒ¡Ze e¡ q1d e¡Zeƒ  G dd„ dejƒZedkr`e ¡  dS dS )é    )Úunicode_literalsN)ÚStringIOé   )ÚScanning)ÚModuleScope)ÚStringParseContext)Úinit_threadú c                 C   s   g | ]}d t |f ‘qS )z%s%s)Úch)Ú.0Ún© r   úRD:\Projects\ConvertPro\env\Lib\site-packages\Cython/Compiler/Tests/TestScanning.pyÚ
<listcomp>   s    r   é
   Ú
c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestScanningc                 C   s:   t  dt¡}ttƒ}tdƒ}tdd d ƒ}t j||||dS )Nz	fake codezfake contextZfake_module)ÚscopeÚcontext)r   ZStringSourceDescriptorÚcoder   r   r   ZPyrexScanner)ÚselfÚsourceÚbufr   r   r   r   r   Úmake_scanner   s
   zTestScanning.make_scannerc                 C   sÂ  |   ¡ }|  |jd¡ |  |jd¡ | ¡  |  |jd¡ |  |jd¡ | ¡ }|  |dd … d¡ | ¡ }|  || ¡ ¡ | ¡  |  ||j|jf¡ |jdkrZ| ¡  |jdksQg }g }g }| ¡  |jdkr…| |j¡ | |j¡ | | ¡ ¡ | ¡  |jdksit|d d d… |d d d… |d d d… ƒD ]\}}}	| 	|||	¡ qšd}
|jdkr×|  |j||
 ¡ |  |j||
 ¡ |  | ¡ ||
 ¡ | ¡  |
d7 }
|jdks®|  |
t
|ƒ¡ d S )	NZIDENTZa0Za1é   )r   é   ÚNEWLINEéÿÿÿÿr   )r   ÚassertEqualÚsyÚsystringÚnextÚpositionÚpeekÚappendÚzipZput_backÚlen)r   ÚscannerZa1posZa2peekZline_syZline_systringZline_posr   r    Úposr   r   r   r   Útest_put_back_positions   sL   

ÿ

ü$ÿ

ûz$TestScanning.test_put_back_positionsc              
   C   s@  |   ¡ }t |¡}|jdkr| ¡  |jdksW d   ƒ n1 s"w   Y  |  |¡ | ¡  |  |jd¡ | ¡ }t |¡!}|jdkrZ| ¡  |jdkrU| 	d¡ n|jdksFW d   ƒ n1 sdw   Y  |  
|¡ |  |jd¡ |  | ¡ |¡ | ¡  |  |jd¡ | ¡  |  |jd¡ t |¡}| 	d¡ W d   ƒ n1 s¨w   Y  |  |jd¡ | ¡  |  |jd¡ |j|j}}| ¡ }t |¡m | ¡  |j|j}}	| ¡ }
t |¡7 t |¡ | ¡  | ¡  | 	d	¡ W d   ƒ n	1 sw   Y  |  |j|jf||	f¡ W d   ƒ n	1 sw   Y  |  |j|jf||	f¡ | 	d
¡ W d   ƒ n	1 s@w   Y  |  |j|jf||f¡ t |¡3 | ¡  | ¡  t |¡ | ¡  W d   ƒ n	1 stw   Y  | ¡  | 	d¡ W d   ƒ n	1 sw   Y  |  |j|jf||f¡ d S )Nr   Zb0Zb7zOh no not b7!Úb1Úb2z0Something has gone wrong with the current symbolZb3ZOoopsZeeeZOooops)r   r   Ztentatively_scanr   r!   ZassertFalser   r    r"   ÚerrorÚ
assertTrue)r   r'   Úerrorsr(   r,   Zsy1Z	systring1Zpos1Zsy2Z	systring2Úpos2r   r   r   Útest_tentatively_scanL   sz   

ÿ€ÿ




ü€ÿ
ÿýûõ
ÿùz"TestScanning.test_tentatively_scanN)Ú__name__Ú
__module__Ú__qualname__r   r)   r0   r   r   r   r   r      s    -r   Ú__main__)Ú
__future__r   ZunittestÚior   ÚstringÚ r   ZSymtabr   ZTreeFragmentr   ZErrorsr   r   Úascii_lowercaser
   ÚjoinÚrangeÚliner$   ZTestCaser   r1   Úmainr   r   r   r   Ú<module>   s$    

qÿ