B
    ž†\s  ã            &   @   sÒ   d Z ddlmZ ddlmZ ddlmZ ddlmZ dd	d
ddddddddddddgZ	dddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<g&Z
G d=d>„ d>eƒZed?krÎdd@lZe ¡  d@S )Az+
Uses TreeFragment to test invalid syntax.
é    )Úabsolute_importé   )Ú
CythonTesté   )ÚCompileError)Ú	ExprNodesZ0_0_0Z4_2Z1_0000_0000Z0b1001_0100Z0xffff_ffffZ0o5_7_7z	1_00_00.5z
1_00_00.5jz1_00_00.5e5Z1_00_00jZ1_00_00e5_1Z1e1_0z.1_4z.1_4e1z.1_4jZ0_Z42_z1.4j_Z0b1_Z0xf_Z0o5_Z0_b0Z0_xfZ0_o5Z0b_0Z0x_fZ0o_5z0 if 1_Else 1z1_.4z1_.4jz1._4z1._4jz._5z1.0e+_1Z	4_______2z0.1__4Z0b1001__0100Z0xffff__ffffZ0o5__77Z1e1__0z1.4_jz1.4e5_jZ1_e1z1.4_e1Z1e_1z1.4e_1z1_ 2z1 _2z1_2.2_ 1z1_2.2 _1z1_2e _1z1_2e2 _1z1_2e 2_1c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestGrammarc             C   s˜   x’t D ]Š}x„dD ]|}d||  }y|  d| ¡ W nH tk
rz } z*|dd„ t|ƒ ¡ D ƒksjtt|ƒƒ‚W d d }~X Y qX dstd| ƒ‚qW qW d S )N)z%sz1 + %sz%s + 1z2 * %sz%s * 2zx = zC                    # cython: language_level=3
                    c             S   s   g | ]}|  ¡ ‘qS © )Ústrip)Ú.0Úsr	   r	   ú@lib/python3.7/site-packages/Cython/Compiler/Tests/TestGrammar.pyú
<listcomp>f   s    z<TestGrammar.test_invalid_number_literals.<locals>.<listcomp>Fz5Invalid Cython code '%s' failed to raise an exception)ÚINVALID_UNDERSCORE_LITERALSÚfragmentr   ÚstrÚ
splitlinesÚAssertionError)ÚselfÚliteralÚ
expressionÚcodeÚexcr	   r	   r   Útest_invalid_number_literals]   s    

8z(TestGrammar.test_invalid_number_literalsc             C   sî   xèt D ]à}xÚtdddddgƒD ]Ä\}}d||  }|  d| ¡j}|d k	sNt‚|jd j}|dkrv|d	 rp|jn|j}d
|ks†d|kr˜t	|t
jƒsât‚qd|ksÀd|ksÀd|krÒd|ksÒd|ksÒt	|t
jƒsât‚qt	|t
jƒst‚qW qW d S )Nz%sz1 + %sz%s + 1z2 * %sz%s * 2zx = zC                    # cython: language_level=3
                    r   r   ÚjÚJÚ.ÚeÚEZ0xZ0X)ÚVALID_UNDERSCORE_LITERALSÚ	enumerater   Úrootr   ZstatsZrhsZoperand2Zoperand1Ú
isinstancer   ZImagNodeZ	FloatNodeZIntNode)r   r   Úir   r   ZnodeZliteral_noder	   r	   r   Útest_valid_number_literalsj   s    
(z&TestGrammar.test_valid_number_literalsN)Ú__name__Ú
__module__Ú__qualname__r   r$   r	   r	   r	   r   r   [   s   r   Ú__main__N)Ú__doc__Z
__future__r   Z	TestUtilsr   ZErrorsr   Ú r   r   r   r   r%   ZunittestÚmainr	   r	   r	   r   Ú<module>   sz   $