o
    noi                     @   s\   d dl mZmZ d dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ G dd deZdS )	    )CallableOptionalN)parse_expression)CSTNodeTest)	CodeRange)data_providerc                   @   sv  e Zd Zeejedfdddfejedejeddfdddfejed	ejed
dedejeddfddde	ddfejedejej
ed
e edddfdddfejedejedededdfdddfejedfdddfejejeddfdddfejedejeddedfdddfeje fedfe fd d!dfejejedd"fedfejedd#fd d$dfed%d%d&e	dd'fejeddd(d&e	dd)ff	*d;d+ejd,ed-ed.ee	 d/d*f
d0d1Zed2d3 d4fd5d3 d6ffd7eg ejf d8ed/d*fd9d:Zd*S )<TemplatedStringTestzhello world)partszt"hello world"Tzhello name)
expressionzt"hello {name}"za=az, b=bzt"a={a}, b={b}")   r   )r      zsum=)leftoperatorrightzt"sum={a + b}"zx =  x)whitespace_before_expressionr   whitespace_after_expressionzt"x = { x }"z{{foo}}z
t"{{foo}}"valuez
t"{value}"zline1\nz\nline2zt"line1\n{x}\nline2"foo)lparr	   rparz(t"foo"))whitespace_after)whitespace_beforez
( t"foo" )abcF)r      z{foo})r      Nnodecodecheck_parsingpositionreturnc                 C   s.   |r| j ||t|d d S | j |||d d S )N)expected_position)validate_noder   )selfr    r!   r"   r#    r(   ]/home/ubuntu/.local/lib/python3.10/site-packages/libcst/_nodes/tests/test_template_strings.py
test_valid   s    zTemplatedStringTest.test_validc                   C      t jt dft  fdS )Nr   )r	   r   )cstTemplatedStringTemplatedStringText	LeftParenr(   r(   r(   r)   <lambda>       
zTemplatedStringTest.<lambda>zleft paren without right parenc                   C   r+   )Nr   )r	   r   )r,   r-   r.   
RightParenr(   r(   r(   r)   r0      r1   zright paren without left parenget_nodeexpected_rec                 C   s   |  || d S N)assert_invalid)r'   r3   r4   r(   r(   r)   test_invalid   s   z TemplatedStringTest.test_invalidr5   )__name__
__module____qualname__r   r,   r-   r.   TemplatedStringExpressionNamer   BinaryOperationAddSimpleWhitespacer/   r2   CSTNodestrboolr   r*   r   r7   r(   r(   r(   r)   r      s   
	

	

 r   )typingr   r   libcstr,   r   libcst._nodes.tests.baser   libcst.metadatar   libcst.testing.utilsr   r   r(   r(   r(   r)   <module>   s   