
    daf                     B   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                  j                  ed      Z G d de	j"                        Zedk(  r e	j(                          yy)	z+Tests for the asdl parser in Parser/asdl.py    N)dirnamez'test irrelevant for an installed PythonParserc                   V    e Zd Zed        Zed        Zd Zd Zd Zd Z	d Z
d Zd	 Zy
)TestAsdlParserc                 l   t         j                  j                  dt               t        j
                  j                  dt        j                  j                  t        d            }t        j                  j                  d|      }t        j                  j                  |      }|j                  |       || _        | j                  j                  t        j                  j                  t        d            | _        | j!                  | j                  j#                  | j                        d       y )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       0/root/Python-3.12.4/Lib/test/test_asdl_parser.py
setUpClasszTestAsdlParser.setUpClass   s     	:&$$55Z;=~~..vv>0066"((..j-!HIsxx~~cgg.0JK    c                 &    t         j                  d= y )Nr   )r	   r
   )r   s    r   tearDownClasszTestAsdlParser.tearDownClass%   s    HHQKr    c                     t         j                  | _        t         j                  | _        | j                  j                  | _        y N)r   r   r   typesselfs    r   setUpzTestAsdlParser.setUp)   s+    "''	!%%XX^^
r    c                     | j                  | j                  j                  d       | j                  d| j                         | j                  d| j                         | j                  d| j                         y )NPythonstmtexprr   )assertEqualr   nameassertInr%   r&   s    r   test_modulezTestAsdlParser.test_module/   sP    1fdjj)fdjj)eTZZ(r    c                    | j                   j                  }| j                  |d   | j                  j                         | j                  |d   j
                  | j                  j                         | j                  | j                  d   | j                  j                         | j                  | j                  d   | j                  j                         y )Nr   withitemalias)	r   dfnsassertIsInstancer   TypevalueSumr%   Product)r'   defss     r   test_definitionszTestAsdlParser.test_definitions5   s    xx}}d1gtyy~~6d1gmmTYY]];djj4dii6G6GHdjj14993D3DEr    c                 X    | j                   d   }| j                  t        |      d       y )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=   s,    

7#JW	Xr    c                    | j                   d   }| j                  t        |j                        d       | j                  t	        |j                  d         d       | j                  t	        |j                  d         d       | j                  t	        |j                  d         d       | j                  t	        |j                  d	         d
       y )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    zz&!T__-q1dooa013GHdooa013KLdooa013UVdooa013YZr    c                    | j                   d   }| j                  t        |j                         d       | j                  t        |j                        d       |j                   d   }| j	                  || j
                  j                         | j                  t        |j                        d       |j                  d   }| j                  |j                  d       | j                  |j                  d       | j                  |j                         |j                  d   }| j                  |j                  d       | j                  |j                  d	       | j                  |j                         |j                  d
   }| j                  |j                  d       | j                  |j                  d       | j                  |j                         | j                  |j                         y )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   sf   ::o.X^^,a0X00115~~a dDII$9$9:T[[)1-[[^&)&)[[^,/&)[[^&)&) r    c                      G d d| j                   j                        } |       }|j                  | j                  d          | j	                  |j
                  g d       y )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                 0    t         |           g | _        y r$   )super__init__names_with_seq)r'   	__class__s    r   r]   z;TestAsdlParser.test_visitor.<locals>.CustomVisitor.__init__h   s     "&(#r    c                 H    |j                   D ]  }| j                  |        y r$   )r4   visit)r'   r   dfns      r   visitModulez>TestAsdlParser.test_visitor.<locals>.CustomVisitor.visitModulel   s     88 $CJJsO$r    c                 :    | j                  |j                         y r$   )ra   r7   )r'   rJ   s     r   	visitTypez<TestAsdlParser.test_visitor.<locals>.CustomVisitor.visitTypep   s    

4::&r    c                 H    |j                   D ]  }| j                  |        y r$   )r%   ra   )r'   sumts      r   visitSumz;TestAsdlParser.test_visitor.<locals>.CustomVisitor.visitSums   s      "AJJqM"r    c                     |j                   D ]4  }|j                  s| j                  j                  |j                         6 y r$   )rN   rQ   r^   appendr.   )r'   rS   fs      r   visitConstructorzCTestAsdlParser.test_visitor.<locals>.CustomVisitor.visitConstructorw   s4     >Auu++22499=>r    )	__name__
__module____qualname__r]   rc   re   ri   rm   __classcell__)r_   s   @r   CustomVisitorrZ   g   s    )$'">r    rr   r   )Modulers   InteractiveFunctionType)r   VisitorBasera   r%   r-   r^   )r'   rr   vs      r   test_visitorzTestAsdlParser.test_visitorf   sP    	>DII11 	>* O	

5!"))L	Nr    N)rn   ro   rp   classmethodr   r"   r(   r0   r;   r>   rG   rW   rx    r    r   r   r      sQ    L L  $)FX[ 2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   	  
   !y  "
(

E
FF778,-.WW\\(H-
kNX&& kN\ zHMMO r    