
    ;e                     H   d Z ddlZddlZddlZddlmZ ddlZddlZddl	Z	 ej
                    s e	j        d           e e ee                              Zej                            ed          Z G d de	j                  Zedk    r e	j                     dS dS )	z+Tests for the asdl parser in Parser/asdl.py    N)dirnamez'test irrelevant for an installed PythonParserc                   d    e Zd Zed             Zed             Zd Zd Zd Zd Z	d Z
d Zd	 Zd
S )TestAsdlParserc                 v   t           j                            dt                     t          j                            dt          j                            t          d                    }t          j	        
                    d|          }t          j	                            |          }|                    |           || _        | j                            t          j                            t          d                    | _        |                     | j                            | j                  d           d S )Nr   asdlzasdl.pyzPython.asdlzModule validation failed)syspathinsert
parser_dir	importlib	machinerySourceFileLoaderosjoinutilspec_from_loadermodule_from_specexec_moduler   parsemod
assertTruecheck)clsloaderspecmodules       ,/usr/lib/python3.11/test/test_asdl_parser.py
setUpClasszTestAsdlParser.setUpClass   s     	:&&&$55Z;;= =~..vv>>00666"""(..j-!H!HIIsx~~cg..0JKKKKK    c                      t           j        d= d S )Nr   )r	   r
   )r   s    r   tearDownClasszTestAsdlParser.tearDownClass%   s    HQKKKr    c                 l    t           j        | _        t           j        | _        | j        j        | _        d S N)r   r   r   typesselfs    r   setUpzTestAsdlParser.setUp)   s%    "'	!%X^


r    c                     |                      | j        j        d           |                     d| j                   |                     d| j                   |                     d| j                   d S )NPythonstmtexprr   )assertEqualr   nameassertInr%   r&   s    r   test_modulezTestAsdlParser.test_module/   sd    111fdj)))fdj)))eTZ(((((r    c                 l   | j         j        }|                     |d         | j        j                   |                     |d         j        | j        j                   |                     | j        d         | j        j                   |                     | j        d         | j        j                   d S )Nr   withitemalias)	r   dfnsassertIsInstancer   TypevalueSumr%   Product)r'   defss     r   test_definitionszTestAsdlParser.test_definitions5   s    x}d1gty~666d1gmTY];;;dj4di6GHHHdj1493DEEEEEr    c                 f    | j         d         }|                     t          |          d           d S )Nr3   zProduct([Field(identifier, name), Field(identifier, asname, opt=True)], [Field(int, lineno), Field(int, col_offset), Field(int, end_lineno, opt=True), Field(int, end_col_offset, opt=True)]))r%   r-   str)r'   r3   s     r   test_productzTestAsdlParser.test_product=   sD    
7#JJW	X 	X 	X 	X 	Xr    c                    | j         d         }|                     t          |j                  d           |                     t	          |j        d                   d           |                     t	          |j        d                   d           |                     t	          |j        d                   d           |                     t	          |j        d	                   d
           d S )Nr+      r   zField(int, lineno)   zField(int, col_offset)   z Field(int, end_lineno, opt=True)   z$Field(int, end_col_offset, opt=True))r%   r-   len
attributesrepr)r'   r+   s     r   test_attributeszTestAsdlParser.test_attributesE   s    z&!T_--q111doa0113GHHHdoa0113KLLLdoa0113UVVVdoa0113YZZZZZr    c                    | j         d         }|                     t          |j                   d           |                     t          |j                  d           |j         d         }|                     || j        j                   |                     t          |j                  d           |j        d         }|                     |j        d           |                     |j	        d           | 
                    |j                   |j        d         }|                     |j        d           |                     |j	        d	           | 
                    |j                   |j        d
         }|                     |j        d           |                     |j	        d           |                     |j                   | 
                    |j                   d S )NexcepthandlerrA   r@   r   rC   r,   type
identifierr.   rB   r+   body)r%   r-   rD   rE   r5   r   ConstructorfieldsrJ   r.   r   optassertFalseseq)r'   ehandlerconsf0f1f2s         r   test_constructor_fieldsz&TestAsdlParser.test_constructor_fieldsM   s   :o.X^,,a000X0111555~a dDI$9:::T[))1---[^&)))&)))[^,///&)))[^&)))&)))   r    c                      G d d| j         j                  } |            }|                    | j        d                    |                     |j        g d           d S )Nc                   6     e Zd Z fdZd Zd Zd Zd Z xZS )2TestAsdlParser.test_visitor.<locals>.CustomVisitorc                 V    t                                                       g | _        d S r$   )super__init__names_with_seq)r'   	__class__s    r   r]   z;TestAsdlParser.test_visitor.<locals>.CustomVisitor.__init__h   s'      """&(###r    c                 D    |j         D ]}|                     |           d S r$   )r4   visit)r'   r   dfns      r   visitModulez>TestAsdlParser.test_visitor.<locals>.CustomVisitor.visitModulel   s.    8 $ $CJJsOOOO$ $r    c                 :    |                      |j                   d S r$   )ra   r7   )r'   rJ   s     r   	visitTypez<TestAsdlParser.test_visitor.<locals>.CustomVisitor.visitTypep   s    

4:&&&&&r    c                 D    |j         D ]}|                     |           d S r$   )r%   ra   )r'   sumts      r   visitSumz;TestAsdlParser.test_visitor.<locals>.CustomVisitor.visitSums   s.     " "AJJqMMMM" "r    c                 f    |j         D ](}|j        r| j                            |j                   )d S r$   )rN   rQ   r^   appendr.   )r'   rS   fs      r   visitConstructorzCTestAsdlParser.test_visitor.<locals>.CustomVisitor.visitConstructorw   sA     > >Au >+2249===> >r    )	__name__
__module____qualname__r]   rc   re   ri   rm   __classcell__)r_   s   @r   CustomVisitorrZ   g   st        ) ) ) ) )$ $ $' ' '" " "> > > > > > >r    rr   r   )Modulers   InteractiveFunctionType)r   VisitorBasera   r%   r-   r^   )r'   rr   vs      r   test_visitorzTestAsdlParser.test_visitorf   s    	> 	> 	> 	> 	>DI1 	> 	> 	>* MOO	
5!""")LLL	N 	N 	N 	N 	Nr    N)rn   ro   rp   classmethodr   r"   r(   r0   r;   r>   rG   rW   rx    r    r   r   r      s        L L [L   [$ $ $) ) )F F FX X X[ [ [     2N N N N Nr    r   __main__)__doc__importlib.machineryr   importlib.utilr   os.pathr   r	   	sysconfigunittestis_python_buildSkipTest__file__src_baser
   r   r   TestCaser   rn   mainrz   r    r   <module>r      s"   1 1         				       



      !y "" G
(
E
F
FF777778,,--..W\\(H--
kN kN kN kN kNX& kN kN kN\ zHMOOOOO r    