o
    2g                     @  sr   d dl mZ d dlZd dlmZ d dlmZmZmZ d dl	m
Z
 d dlmZmZ d dlmZ G dd	 d	ejZdS )
    )annotationsNassert_string_arrays_equal)EmitterEmitterContextReturnHandler)generate_arg_check)int_rprimitivelist_rprimitive)NameGeneratorc                   @  s4   e Zd ZdddZdddZdddZdddZdS )TestArgCheckreturnNonec                 C  s   t tdgg| _d S )Nmod)r   r   context)self r   S/home/garg/my-data/venv/lib/python3.10/site-packages/mypyc/test/test_emitwrapper.pysetUp   s   zTestArgCheck.setUpc                 C  s6   t | j}tdt|td |j}| g d| d S )NxNULL)zPyObject *arg_x;z if (likely(PyList_Check(obj_x)))z    arg_x = obj_x;else {z!    CPy_TypeError("list", obj_x);z    return NULL;})r   r   r   r
   r   	fragmentsassert_linesr   emitterlinesr   r   r   test_check_list   s   
	zTestArgCheck.test_check_listc                 C  sL   t | j}tdt|td tdt|tddd |j}| g d| d S )Nr   r   yT)optional)zCPyTagged arg_x;z if (likely(PyLong_Check(obj_x)))z.    arg_x = CPyTagged_BorrowFromObject(obj_x);r   z-    CPy_TypeError("int", obj_x); return NULL;r   zCPyTagged arg_y;zif (obj_y == NULL) {z    arg_y = CPY_INT_TAG;z'} else if (likely(PyLong_Check(obj_y)))z.    arg_y = CPyTagged_BorrowFromObject(obj_y);r   z-    CPy_TypeError("int", obj_y); return NULL;r   )r   r   r   r	   r   r   r   r   r   r   r   test_check_int!   s   
zTestArgCheck.test_check_intexpected	list[str]actualc                 C  s   dd |D }t ||d d S )Nc                 S  s   g | ]}| d qS )
)rstrip).0liner   r   r   
<listcomp>;   s    z-TestArgCheck.assert_lines.<locals>.<listcomp>zInvalid outputr   )r   r"   r$   r   r   r   r   :   s   zTestArgCheck.assert_linesN)r   r   )r"   r#   r$   r#   r   r   )__name__
__module____qualname__r   r   r!   r   r   r   r   r   r      s
    


r   )
__future__r   unittestmypy.test.helpersr   mypyc.codegen.emitr   r   r   mypyc.codegen.emitwrapperr   mypyc.ir.rtypesr	   r
   mypyc.namegenr   TestCaser   r   r   r   r   <module>   s    