o
    £øÁf£  ã                   @   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   ú^/var/www/html/mig_web/myenv/lib/python3.10/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 contextÚfake_module)ÚscopeÚcontext)r   ÚStringSourceDescriptorÚcoder   r   r   Ú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 )	NÚIDENTÚa0Úa1é   )r    é   ÚNEWLINEéÿÿÿÿr   )r   ÚassertEqualÚsyÚsystringÚnextÚpositionÚpeekÚappendÚzipÚput_backÚlen)r   ÚscannerÚa1posÚa2peekÚline_syÚline_systringÚ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"   Úb0Úb7zOh no not b7!Úb1Úb2z0Something has gone wrong with the current symbolÚb3ÚOoopsÚeeeÚOooops)r   r   Útentatively_scanr%   r'   ÚassertFalser$   r&   r(   ÚerrorÚ
assertTrue)r   r.   Úerrorsr4   r@   Úsy1Ú	systring1Úpos1Úsy2Ú	systring2Úpos2r   r   r   Útest_tentatively_scanL   sz   

ÿ€ÿ




ü€ÿ
ÿýûõ
ÿùz"TestScanning.test_tentatively_scanN)Ú__name__Ú
__module__Ú__qualname__r   r5   rI   r   r   r   r   r      s    -r   Ú__main__)Ú
__future__r   ÚunittestÚior   ÚstringÚ r   ÚSymtabr   ÚTreeFragmentr   ÚErrorsr   r   Úascii_lowercaser
   ÚjoinÚrangeÚliner*   ÚTestCaser   rJ   Úmainr   r   r   r   Ú<module>   s$    

qÿ