o
    HXh]                     @   sB   d dl Z d dlmZmZ G dd de jZedkre   dS dS )    N)
ann_modulesupportc                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )
OpcodeTestc              	   C   s   d}t dD ]5}|| }zdd  W n ty   Y n ty#   Y n	 ty+   Y nw zW n   Y zW nw || }q|dkrG| d d S d S )Nr   
      Z   ztry inside for)range	NameErrorZeroDivisionError	TypeErrorfail)selfni r   ;/opt/python-3.10.19/usr/lib/python3.10/test/test_opcodes.pytest_try_inside_for_loop   s   
z#OpcodeTest.test_try_inside_for_loopc                 C   sn   z,t tjdd}| }W d    n1 sw   Y  t|tjd}| |jd W d S  ty6   Y d S w )Nzutf-8)encodingexecr   )openr   __file__readcompileassertEqualco_firstlinenoOSError)r   fZtxtcor   r   r   test_setup_annotations_line   s   
z&OpcodeTest.test_setup_annotations_linec                 C   s    G dd d}|  |ji  d S )Nc                   @      e Zd ZdS )z4OpcodeTest.test_default_annotations_exist.<locals>.CN__name__
__module____qualname__r   r   r   r   C#       r$   )r   __annotations__r   r$   r   r   r   test_default_annotations_exist"   s   z)OpcodeTest.test_default_annotations_existc                 C   s0   dddii}t d| | |d tdd d S )Nr&   r      zx: int)xr   )r   r   int)r   nsr   r   r   test_use_existing_annotations&   s   
z(OpcodeTest.test_use_existing_annotationsc                    sP   t t di  t d= G  fddd}W d    d S 1 s!w   Y  d S )Nr&   c                       sD   e Zd ZU [ e eed< W d   dS 1 sw   Y  dS )z6OpcodeTest.test_do_not_recreate_annotations.<locals>.Cr*   N)r!   r"   r#   r&   ZassertRaisesr	   r+   r   r   r   r   r$   /   s
   
 
"r$   )r   Z	swap_itemglobalsr'   r   r.   r    test_do_not_recreate_annotations+   s   "z+OpcodeTest.test_do_not_recreate_annotationsc              
   C   s*  G dd dt }G dd d|}G dd dt }G dd d|}z|    Y z|  |y4   Y nw z|  |yA   Y nw z|  |yR   |   Y n   Y | }| }z| |yv } z| || W Y d }~nd }~ww z|| |y } z| || W Y d }~d S d }~ww )	Nc                   @   r   )z6OpcodeTest.test_raise_class_exceptions.<locals>.AClassNr    r   r   r   r   AClass6   r%   r1   c                   @   r   )z6OpcodeTest.test_raise_class_exceptions.<locals>.BClassNr    r   r   r   r   BClass7   r%   r2   c                   @   r   )z6OpcodeTest.test_raise_class_exceptions.<locals>.CClassNr    r   r   r   r   CClass8   r%   r3   c                   @      e Zd Zdd ZdS )z6OpcodeTest.test_raise_class_exceptions.<locals>.DClassc                 S   s   d S )Nr   )r   ignorer   r   r   __init__:      z?OpcodeTest.test_raise_class_exceptions.<locals>.DClass.__init__N)r!   r"   r#   r6   r   r   r   r   DClass9       r8   )	Exceptionr   r   ZassertIsInstance)r   r1   r2   r3   r8   abvr   r   r   test_raise_class_exceptions4   s4   

z&OpcodeTest.test_raise_class_exceptionsc                 C   s   t d}t d}| || t d}t d}| || t d}t d}| || t d}t d}| || t d}t d}| || t d}t d}| || t d}t d}| || t d	}t d
}| || d S )Nzlambda: Nonezlambda a: azlambda a=1: az	lambda: 0z	lambda: 1zlambda a: Nonezlambda b: Nonezlambda a=None: Nonezlambda a=0: Nonezlambda a=1: None)evalZassertNotEqual)r   r   gr   r   r   test_compare_function_objects_   s0   z(OpcodeTest.test_compare_function_objectsc                 C   s&   G dd dt }| | d d d S )Nc                   @   r4   )z=OpcodeTest.test_modulo_of_string_subclasses.<locals>.MyStringc                 S   s   dS )N*   r   )r   valuer   r   r   __mod__   r7   zEOpcodeTest.test_modulo_of_string_subclasses.<locals>.MyString.__mod__N)r!   r"   r#   rD   r   r   r   r   MyString   r9   rE      rB   )strr   )r   rE   r   r   r    test_modulo_of_string_subclasses   s   z+OpcodeTest.test_modulo_of_string_subclassesN)r!   r"   r#   r   r   r(   r-   r0   r>   rA   rH   r   r   r   r   r      s    
	+"r   __main__)Zunittesttestr   r   ZTestCaser   r!   mainr   r   r   r   <module>   s    