o
    Ďi%                     @   sj   d Z ddlm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j	Z
ed	kr3e  d
S d
S )zTests for the core module.    )mock)core)test_components)	testutils)tracec                   @   s  e Zd Zdd Zdd Zeddd Zeddd	 Zedd
d Z	ed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$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Z d:d; Z!d<S )=CoreTestc                 C   sP   |  tdd |  tdd |  ti d |  tddid d S )N   1hello{}xyz
{"x": "y"})assertEqualr   _OneLineResultself r   J/home/jeff/fluffinator/venv/lib/python3.10/site-packages/fire/core_test.pytestOneLineResult   s   zCoreTest.testOneLineResultc                 C   s"   t  }| t| d d S )Nz{'y': {...}})tcCircularReferencer   r   r   create)r   circular_referencer   r   r   testOneLineResultCircularRef!   s   z%CoreTest.testOneLineResultCircularRefzfire.interact.Embedc                 C   sB   t jtjdgd | |j t jtjg dd | |j d S )Nalphacommand)r   ---i)r   Firer   TypedPropertiesassertFalsecalled
assertTruer   
mock_embedr   r   r   testInteractiveMode&   s   zCoreTest.testInteractiveModec                 C   s$   t jtjg dd | |j d S )N)r   r   z--interactiver   )r   r   r   r    r#   r"   r$   r   r   r   testInteractiveModeFullArgument-   s   z(CoreTest.testInteractiveModeFullArgumentc                 C   sp   t jtjg dd | |j |j\\}}}| | | |d d | 	|d tj | 	|d t
j d S )N)double2r   r   r   result   r   r   )r   r   r   WithDefaultsr#   r"   	call_argsr!   r   assertIsInstancer   	FireTracer   r%   	variablesverboseunused_kwargsr   r   r   testInteractiveModeVariables2   s   
z%CoreTest.testInteractiveModeVariablesc                 C   s   t jtjg ddd | |j |j\\}}}| | | |d d | |d tj | |d tj | |d t	j
 d S )N)r(   r)   r   r   z-vD)r   namer*   r+   r   r   )r   r   r   r,   r#   r"   r-   r   r.   r   r/   r0   r   r   r   $testInteractiveModeVariablesWithName<   s   
z-CoreTest.testInteractiveModeVariablesWithNamec                 C   s   |  dd tjtjddgd W d    n1 sw   Y  |  dd tjtjdgd W d    n1 s:w   Y  |  dd tjtjdgd W d    d S 1 sZw   Y  d S )Nr   zSYNOPSIS.*ARG1r   --helpr   zINFO:.*SYNOPSIS.*ARG1-h)assertRaisesFireExitr   r   r   InstanceVarsr   r   r   r   testHelpWithClassI   s   "zCoreTest.testHelpWithClassc                 C   sF  |  dd tjtjg dd W d    n1 sw   Y  |  dd tjtjddgd W d    n1 s;w   Y  |  dd tjtjddgd W d    n1 s[w   Y  |  dd	 tjtjd
dgd W d    n1 s{w   Y  |  dd tjtjddgd W d    d S 1 sw   Y  d S )Nr   zSYNOPSIS.*capitalize)gammar   r8   r   zINFO:.*SYNOPSIS.*capitalizer=   r8   r9   zINFO:.*SYNOPSIS.*deltadeltazINFO:.*SYNOPSIS.*echoecho)r:   r   r   r   r    r   r   r   r   testHelpWithMemberQ   s   "zCoreTest.testHelpWithMemberc                 C   s   |  dd tjtjddgd W d    n1 sw   Y  |  dd tjtjdgd W d    d S 1 s;w   Y  d S )Nr   zSYNOPSIS.*VALUEr   r8   r   zINFO:.*SYNOPSIS.*VALUE)r:   r   r   r   ErrorInConstructorr   r   r   r   testHelpOnErrorInConstructor]   s   "z%CoreTest.testHelpOnErrorInConstructorc                 C   s  | j dd d tjtjddgd W d    n1 sw   Y  | j dd d tjtjddgd W d    n1 s=w   Y  | j d	d d tjtjddgd W d    n1 s^w   Y  | j dd d tjtjdgd W d    d S 1 sw   Y  d S )
NzDESCRIPTION.*stdoutstderrr8   Falser   zhelp in a dict
dictionary__helpr   )assertOutputMatchesr   r   r   WithHelpArgfunction_with_helpr   r   r   r   testHelpWithNamespaceCollisionc   s   "z'CoreTest.testHelpWithNamespaceCollisionc                 C   sF   |  dd tjtjg dd W d    d S 1 sw   Y  d S )N   runmisspelled)propsz--a=1z--b=2rN   r   )r:   r   r   r   Kwargsr   r   r   r   "testInvalidParameterRaisesFireExitn   s   "z+CoreTest.testInvalidParameterRaisesFireExitc                 C   sB   |  t tjtjdgd W d    d S 1 sw   Y  d S )Nfailr   )assertRaises
ValueErrorr   r   r   ErrorRaiserr   r   r   r   testErrorRaisingr   s   "zCoreTest.testErrorRaisingc                 C   s   t d}| | d S )NExample errorr   	FireErrorassertIsNotNoner   errorr   r   r   testFireErrorx   s   
zCoreTest.testFireErrorc                 C   s   t dd}| | d S )NrW   valuerX   r[   r   r   r   testFireErrorMultipleValues|   s   z$CoreTest.testFireErrorMultipleValuesc                 C   s   | j dd d tjtjdgd W d    n1 sw   Y  | j dd d tjtjdgd W d    d S 1 s<w   Y  d S )Nr   rC   totally_emptyr   nothing_printable)rI   r   r   r   EmptyDictOutputr   r   r   r   testPrintEmptyDict   s   "zCoreTest.testPrintEmptyDictc                 C   s   | j dd d tjtjdgd W d    n1 sw   Y  | j dd tjtjdgd W d    d S 1 s;w   Y  d S )NzA:\s+A\s+2:\s+2\s+rC   	non_emptyr   r   )rD   empty)rI   r   r   r   OrderedDictionaryr   r   r   r   testPrintOrderedDict   s   "zCoreTest.testPrintOrderedDictc                 C   H   | j dd d tjtjddgd W d    d S 1 sw   Y  d S )N11rC   pointr   r   rI   r   r   r   
NamedTupler   r   r   r   testPrintNamedTupleField      "z!CoreTest.testPrintNamedTupleFieldc                 C   sH   | j dd d tjtjddgd W d    d S 1 sw   Y  d S )Nr   rC   matching_namesr   rk   r   r   r   r   'testPrintNamedTupleFieldNameEqualsValue   rn   z0CoreTest.testPrintNamedTupleFieldNameEqualsValuec                 C   rh   )N22rC   rj   r	   r   rk   r   r   r   r   testPrintNamedTupleIndex   rn   z!CoreTest.testPrintNamedTupleIndexc                 C   F   | j dd d tjt g d W d    d S 1 sw   Y  d S Nz	.*three.*rC   r   )rI   r   r   r   
simple_setr   r   r   r   testPrintSet      "zCoreTest.testPrintSetc                 C   rs   rt   )rI   r   r   r   simple_frozensetr   r   r   r   testPrintFrozenSet   rw   zCoreTest.testPrintFrozenSetc                 C   rh   )Nri   rC   rj   z-2r   rk   r   r   r   r    testPrintNamedTupleNegativeIndex   rn   z)CoreTest.testPrintNamedTupleNegativeIndexc                 C   s   | j dd d tjt dgd W d    n1 sw   Y  | j dd d tjt ddgd W d    n1 s>w   Y  | j dd d tjt g d W d    d S 1 s_w   Y  d S )	Nzfoo:\s+foo\s+rC   z	--foo=foor   zfoo\s+	print_msgfoo )rI   r   r   r   CallableWithKeywordArgumentr   r   r   r   testCallable   s   "zCoreTest.testCallablec                 C   sH   |  dd tjt ddgd W d    d S 1 sw   Y  d S )NrM   r}   34r   )r:   r   r   r   CallableWithPositionalArgsr   r   r   r   testCallableWithPositionalArgs   s   "z'CoreTest.testCallableWithPositionalArgsc                 C   s    |  tjtjddgdd d S )N	static_fnr   r   r   r   r   r   HasStaticAndClassMethodsr   r   r   r   testStaticMethod      zCoreTest.testStaticMethodc                 C   s    |  tjtjddgdd d S )Nclass_fn6r      r   r   r   r   r   testClassMethod   r   zCoreTest.testClassMethodc                 C   sT  dd }dd }| j dd d tj|dg|d}W d    n1 s#w   Y  | j d	d d tj|d
g|d}W d    n1 sCw   Y  | j dd d tj|dg|d}W d    n1 scw   Y  | j dd d tj|dg|d}W d    n1 sw   Y  | tj tj|dgdd W d    d S 1 sw   Y  d S )Nc                 S   sX   t | trddd | D S t | tr"ddd t|  D S | dkr*ddgS | S )Nz, c                 s   s    | ]}t |V  qd S N)str).0xir   r   r   	<genexpr>   s    zBCoreTest.testCustomSerialize.<locals>.serialize.<locals>.<genexpr>c                 s   s     | ]\}}d  ||V  qdS )z{}={!r}N)format)r   kvr   r   r   r      s    specialz
SURPRISE!!zI'm a list!)
isinstancelistjoindictsorteditemsr   r   r   r   	serialize   s   

z/CoreTest.testCustomSerialize.<locals>.serializec                 S   s   | S r   r   r   r   r   r   <lambda>   s    z.CoreTest.testCustomSerialize.<locals>.<lambda>za, brC   z[a,b])r   r   za=5, b=6z	{a:5,b:6}asdfzSURPRISE!!
I'm a list!
r   7   )rI   r   r   rS   rY   )r   r   ident_r   r   r   testCustomSerialize   s&   	"zCoreTest.testCustomSerializec                 C   s"   |  tjtjjddgdd d S )Nlru_cache_in_classr|   r   )r   r   r   r   py3LruCacheDecoratedMethodr   r   r   r   testLruCacheDecoratorBoundArg   s   
z&CoreTest.testLruCacheDecoratorBoundArgc                 C   s    |  tjtjjdgdd d S )Nr|   r   )r   r   r   r   r   lru_cache_decoratedr   r   r   r   testLruCacheDecorator   s   
zCoreTest.testLruCacheDecoratorN)"__name__
__module____qualname__r   r   r   patchr&   r'   r4   r7   r<   r@   rB   rL   rQ   rV   r]   r_   rc   rg   rm   rp   rr   rv   ry   rz   r   r   r   r   r   r   r   r   r   r   r   r      sD    


	
r   __main__N)__doc__unittestr   firer   r   r   r   r   BaseTestCaser   r   mainr   r   r   r   <module>   s    K