o
    ?n0jO-                     @   s   d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddlm
Z
 G dd de
jZdd	 Zd
d Zdd Zdd ZG dd de
jZG dd de
jZG dd de
jZG dd de
jZG dd de
jZedkrxe  dS dS )zTests for yapf.style.    N)style)utils)yapf_test_helperc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )	UtilsTestc                 C   s   dD ]}|  t|d qdD ]}|  t|d qdD ]}|  t|d q| t}td W d    n1 s?w   Y  | dt|j d S )	N) spacez"space"z'space'SPACE)fixedz"fixed"z'fixed'ZFIXED)zvalign-rightz"valign-right"z'valign-right'Zvalign_rightz"valign_right"z'valign_right'zVALIGN-RIGHTZblahblahz,unknown continuation align style: 'blahblah')assertEqualr   Z&_ContinuationAlignStyleStringConverterZassertRaises
ValueErrorZassertInstr	exception)selfZcont_align_spaceZcont_align_fixedZcont_align_valignrightctx r   [/home/wildlama/miniconda3/envs/lam_a2e/lib/python3.10/site-packages/yapftests/style_test.py)testContinuationAlignStyleStringConverter   s*   z3UtilsTest.testContinuationAlignStyleStringConverterc                 C   sZ   |  tdddg |  tdddg |  tddg |  tdg d d S )Nzfoo, barfoobarzfoo,barz  foozjoe  ,foo,  bar)Zjoer   r   )r
   r   Z_StringListConverterr   r   r   r   testStringListConverter8   s   z!UtilsTest.testStringListConverterc                 C   sL   |  tdd |  tdd |  tdd |  tdd d S )NtrueT1falseF0)r
   r   Z_BoolConverterr   r   r   r   testBoolConverter?   s   zUtilsTest.testBoolConverterc                 C   sF   |  tdg d |  tdg d |  tdg d d S )N1, 2, 3         z[ 1, 2, 3 ]z[ 1, 2, 3, ])r
   r   Z_IntListConverterr   r   r   r   testIntListConverterE   s   zUtilsTest.testIntListConverterc                 C   s,   |  tdd |  tdg d d S )N10
   r   r   )r
   r   Z_IntOrIntListConverterr   r   r   r   testIntOrIntListConverterJ   s   z#UtilsTest.testIntOrIntListConverterN)__name__
__module____qualname__r   r   r   r!   r$   r   r   r   r   r      s    r   c                 C   s   | d dko	| d S )NCOLUMN_LIMITP   ZSPLIT_COMPLEX_COMPREHENSIONr   cfgr   r   r   _LooksLikeGoogleStyleO   s   r,   c                 C   s   | d dkS )Nr(   O   r   r*   r   r   r   _LooksLikePEP8StyleS   s   r.   c                 C      | d S )NZDEDENT_CLOSING_BRACKETSr   r*   r   r   r   _LooksLikeFacebookStyleW      r0   c                 C   r/   )NZSPLIT_BEFORE_DOTr   r*   r   r   r   _LooksLikeYapfStyle[   r1   r2   c                   @   @   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dS )PredefinedStylesByNameTestc                 C      t t   d S Nr   SetGlobalStyleCreatePEP8Styleclsr   r   r   
setUpClassa      z%PredefinedStylesByNameTest.setUpClassc                 C   s   t d }| t| d S r6   r   CreateStyleFromConfig
assertTruer.   r   r+   r   r   r   testDefaulte      
z&PredefinedStylesByNameTest.testDefaultc                 C   &   dD ]}t |}| t| qd S )N)ZPEP8pep8ZPep8r>   )r   Z	pep8_namer+   r   r   r   testPEP8ByNamej      
z)PredefinedStylesByNameTest.testPEP8ByNamec                 C   rD   )N)ZgoogleZGoogleZGOOGLE)r   r?   r@   r,   )r   Zgoogle_namer+   r   r   r   testGoogleByNameo   rG   z+PredefinedStylesByNameTest.testGoogleByNamec                 C   rD   )N)ZyapfZYAPF)r   r?   r@   r2   )r   Z	yapf_namer+   r   r   r   testYapfByNamet   rG   z)PredefinedStylesByNameTest.testYapfByNamec                 C   rD   )N)ZfacebookZFACEBOOKZFacebook)r   r?   r@   r0   )r   Zfb_namer+   r   r   r   testFacebookByNamey   rG   z-PredefinedStylesByNameTest.testFacebookByNameN)
r%   r&   r'   classmethodr<   rB   rF   rH   rI   rJ   r   r   r   r   r4   _   s    
r4   c                   @   s|   e Zd Zedd Ze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d Zdd Zdd Zdd ZdS )StyleFromFileTestc                 C   s   t  | _tt  d S r6   )tempfilemkdtemptest_tmpdirr   r8   r9   r:   r   r   r   r<      rC   zStyleFromFileTest.setUpClassc                 C   s   t | j d S r6   )shutilrmtreerO   r:   r   r   r   tearDownClass   s   zStyleFromFileTest.tearDownClassc                 C   f   t d}t| j|}t|}| t| | 	|d d W d    d S 1 s,w   Y  d S )Nz?        [style]
        continuation_indent_width = 20
        CONTINUATION_INDENT_WIDTH   
textwrapdedentr   TempFileContentsrO   r   r?   r@   r.   r
   r   r+   filepathr   r   r   testDefaultBasedOnStyle   s   

"z)StyleFromFileTest.testDefaultBasedOnStylec                 C   rS   )Nz]        [style]
        based_on_style = pep8
        continuation_indent_width = 40
        rT   (   rV   rZ   r   r   r   testDefaultBasedOnPEP8Style      

"z-StyleFromFileTest.testDefaultBasedOnPEP8Stylec                 C   rS   )Nz_        [style]
        based_on_style = google
        continuation_indent_width = 20
        rT   rU   )
rW   rX   r   rY   rO   r   r?   r@   r,   r
   rZ   r   r   r   testDefaultBasedOnGoogleStyle   r_   z/StyleFromFileTest.testDefaultBasedOnGoogleStylec                 C   rS   )Nza        [style]
        based_on_style = facebook
        continuation_indent_width = 20
        rT   rU   )
rW   rX   r   rY   rO   r   r?   r@   r0   r
   rZ   r   r   r   testDefaultBasedOnFacebookStyle   r_   z1StyleFromFileTest.testDefaultBasedOnFacebookStylec                 C   sv   t d}t| j|%}t|}| t| | 	|d d | 	|d d W d    d S 1 s4w   Y  d S )Nz        [style]
        based_on_style = pep8
        SPLIT_BEFORE_NAMED_ASSIGNS=False
        split_before_logical_operator = true
        ZSPLIT_BEFORE_NAMED_ASSIGNSFZSPLIT_BEFORE_LOGICAL_OPERATORTrV   rZ   r   r   r   testBoolOptionValue   s   

"z%StyleFromFileTest.testBoolOptionValuec                 C   sj   t d}t| j|}t|}| t| | 	|d g d W d    d S 1 s.w   Y  d S )Nz^        [style]
        based_on_style = pep8
        I18N_FUNCTION_CALL = N_, V_, T_
        ZI18N_FUNCTION_CALL)ZN_ZV_ZT_rV   rZ   r   r   r   testStringListOptionValue   s   

"z+StyleFromFileTest.testStringListOptionValuec                 C   s>   |  tjd td W d    d S 1 sw   Y  d S )Nz!is not a valid style or file pathz/8822/xyznosuchfileassertRaisesRegexr   StyleConfigErrorr?   r   r   r   r   testErrorNoStyleFile   s
   "z&StyleFromFileTest.testErrorNoStyleFilec              	   C      t d}t| j|-}| tjd t| W d    n1 s$w   Y  W d    d S W d    d S 1 s<w   Y  d S )Nz+        [s]
        indent_width=2
        Unable to find section	rW   rX   r   rY   rO   re   r   rf   r?   rZ   r   r   r   testErrorNoStyleSection   s   
"z)StyleFromFileTest.testErrorNoStyleSectionc              	   C   rh   )Nz@        [style]
        indent_width=2
        hummus=2
        Unknown style optionrj   rZ   r   r   r   testErrorUnknownStyleOption   s   
"z-StyleFromFileTest.testErrorUnknownStyleOptionc                 C   sz   zdd l }W n
 ty   Y d S w tj| jd}t|d}| tj	d t
| W d    d S 1 s6w   Y  d S )Nr   pyproject.tomlwri   )tomliImportErrorospathjoinrO   openre   r   rf   r?   )r   rp   r[   _r   r   r   testPyprojectTomlNoYapfSection   s   
"z0StyleFromFileTest.testPyprojectTomlNoYapfSectionc                 C   s   zdd l }W n
 ty   Y d S w td}tj| jd}t|d}|	| W d    n1 s3w   Y  t
|}| t| | |d d d S )Nr   zc        [tool.yapf]
        based_on_style = "pep8"
        continuation_indent_width = 40
        rn   ro   rT   r]   )rp   rq   rW   rX   rr   rs   rt   rO   ru   writer   r?   r@   r.   r
   )r   rp   r+   r[   fr   r   r   !testPyprojectTomlParseYapfSection   s   

z3StyleFromFileTest.testPyprojectTomlParseYapfSectionN)r%   r&   r'   rK   r<   rR   r\   r^   r`   ra   rb   rc   rg   rk   rm   rw   rz   r   r   r   r   rL      s     



rL   c                   @   s(   e Zd Zedd Zdd Zdd ZdS )StyleFromDictc                 C   r5   r6   r7   r:   r   r   r   r<     r=   zStyleFromDict.setUpClassc                 C   s8   dddd}t |}| t| | |d d d S )NrE   r   T)Zbased_on_styleZindent_widthZ%blank_line_before_nested_class_or_defINDENT_WIDTHr   r?   r@   r.   r
   )r   Zconfig_dictr+   r   r   r   r\     s   
z%StyleFromDict.testDefaultBasedOnStylec                 C   s4   |  tjdtjddi |  tjdtjddi d S )Nrl   Zbased_on_stylrE   not a validr|   ZFOURrd   r   r   r   r   testDefaultBasedOnStyleBadDict  s   

z,StyleFromDict.testDefaultBasedOnStyleBadDictN)r%   r&   r'   rK   r<   r\   r   r   r   r   r   r{     s
    

r{   c                   @   r3   )StyleFromCommandLinec                 C   r5   r6   r7   r:   r   r   r   r<   !  r=   zStyleFromCommandLine.setUpClassc                 C   ,   t d}| t| | |d d d S )NzT{based_on_style: pep8, indent_width: 2, blank_line_before_nested_class_or_def: True}r|   r   r}   rA   r   r   r   r\   %  
   z,StyleFromCommandLine.testDefaultBasedOnStylec                 C   r   )NzR{based_on_style : pep8 ,indent_width=2 blank_line_before_nested_class_or_def:True}r|   r   r}   rA   r   r   r    testDefaultBasedOnStyleNotStrict-  r   z5StyleFromCommandLine.testDefaultBasedOnStyleNotStrictc                 C      t d}| |t d S Nz{}r   r?   ZassertIsInstancedictrA   r   r   r   -testDefaultBasedOnExplicitlyUnicodeTypeString5     
zBStyleFromCommandLine.testDefaultBasedOnExplicitlyUnicodeTypeStringc                 C   r   r   r   rA   r   r   r   #testDefaultBasedOnDetaultTypeString9  r   z8StyleFromCommandLine.testDefaultBasedOnDetaultTypeStringc                 C   s@   |  tjdtjd |  tjdtjd |  tjdtjd d S )Nrl   z{based_on_styl: pep8}r~   z{INDENT_WIDTH: FOUR}zInvalid style dictz{based_on_style: pep8rd   r   r   r   r    testDefaultBasedOnStyleBadString=  s   


z5StyleFromCommandLine.testDefaultBasedOnStyleBadStringN)
r%   r&   r'   rK   r<   r\   r   r   r   r   r   r   r   r   r     s    
r   c                   @   s   e Zd Zdd ZdS )	StyleHelpc                 C   s&   t t }t tj}| || d S r6   )sortedr   ZHelp_styleZassertListEqual)r   settingsexpectedr   r   r   testHelpKeysH  s   
zStyleHelp.testHelpKeysN)r%   r&   r'   r   r   r   r   r   r   F  s    r   __main__)__doc__rr   rP   rM   rW   ZunittestZyapf.yapflibr   Z	yapftestsr   r   ZYAPFTestr   r,   r.   r0   r2   r4   rL   r{   r   r   r%   mainr   r   r   r   <module>   s.   2  '