o
    GXh1                     @   sZ   d dl Z d dlmZ d dlZedZd dlmZ G dd dejZedkr+e	  dS dS )    N)import_module_opcode)stack_effectc                   @   s   e Zd Zdd Zdd ZdS )OpcodeTestsc              	   C   s  |  ttjd d |  ttjd d |  ttjd dd |  ttjd dd |  ttjd dd	 | ttd
 | tttjd  | tttjd d tj D ]8\}}| j|d& |tjk rxt| | tt|d nt|d | tt| W d    n1 sw   Y  q[t	t
dt	tj  D ]'}| j|d | tt| | tt|d W d    n1 sw   Y  qd S )NZPOP_TOPZDUP_TOP_TWO   ZBUILD_SLICEr         i0u  opname   )Zopcode)assertEqualr   disopmapZassertRaises
ValueErroritemssubTestHAVE_ARGUMENTsetrangevalues)selfnamecode r   ;/opt/python-3.10.19/usr/lib/python3.10/test/test__opcode.pytest_stack_effect   s2   

zOpcodeTests.test_stack_effectc           
   	   C   s  t jd }| t|dd | t|dddd | t|dddd t jd }| t|dd | t|dddd | t|dddd t jd	 }| t|dd | t|dddd | t|dddd t jt j }t j D ]]\}}| j|d
K |t jk rt|}t|dd}t|dd}	nt|d}t|ddd}t|ddd}	||v r| |t	||	 n| || | |	| W d    n1 sw   Y  qwd S )NJUMP_IF_TRUE_OR_POPr   T)jumpFr   FOR_ITERr   JUMP_FORWARDr   )
r   r   r   r   ZhasjabsZhasjrelr   r   r   max)
r   r   r    r!   Zhas_jumpr   r   commonr   Znojumpr   r   r   test_stack_effect_jump#   s<   




z"OpcodeTests.test_stack_effect_jumpN)__name__
__module____qualname__r   r$   r   r   r   r   r   	   s    r   __main__)
r   Ztest.support.import_helperr   Zunittestr   r   ZTestCaser   r%   mainr   r   r   r   <module>   s    :