o
    ,wi                     @   s   d Z ddlZddlmZmZ ddlmZ ddlmZ ddlZ	ddlm
Z
 ddlmZ G dd	 d	eZG d
d dejZG dd dejZedkrNe  dS dS )zTests for daglish_extensions.    N)Any
NamedTuple)absltest)parameterized)daglish)daglish_extensionsc                   @   s   e Zd ZU eed< eed< dS )SampleNamedTuplefizzbuzzN__name__
__module____qualname__r   __annotations__ r   r   `/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/fiddle/_src/daglish_extensions_test.pyr      s   
 r   c                   @   s   e Zd Zdd Zdd ZdS )IsImmutableTestc                 C   s6   t jddG dd d}|d}| t| d S )NT)frozenc                   @   s   e Zd ZU eed< dS )z8IsImmutableTest.test_frozen_dataclass.<locals>.FrozenFoobarNr   r   r   r   r   	FrozenFoo%   s   
 r      )dataclasses	dataclassassertFalser   is_immutable)selfr   foor   r   r   test_frozen_dataclass$   s   
z%IsImmutableTest.test_frozen_dataclassc                 C   s   t dd}| t| d S )Nr      )r   
assertTruer   r   )r   	tuple_foor   r   r   test_named_tuple,   s   
z IsImmutableTest.test_named_tupleN)r   r   r   r   r!   r   r   r   r   r   "   s    r   c                   @   s   e Zd Zdd Zdd Zedededfdd	ed
fddede	dedfdde	de	de	dfddd Z
eddddd ZdS )DaglishExtensionsTestc                 C   s4   t  }| t| t| | t| d S N)objectr   r   r   register_immutabler   )r   objr   r   r   test_register_immutable3   s   
z-DaglishExtensionsTest.test_register_immutablec                 C   sl   dt dt fdd}t|d}| t| | t| t| | t| | t| d S )Nxreturnc                 S   s   | S r#   r   )r(   r   r   r   fn:   s   zTDaglishExtensionsTest.test_register_function_with_immutable_return_value.<locals>.fn   )	intfdlConfigr   r   r   is_unshareable-register_function_with_immutable_return_valuer   )r   r*   configr   r   r   2test_register_function_with_immutable_return_value9   s   
zHDaglishExtensionsTest.test_register_function_with_immutable_return_valuez.foo.barr   r   )pathexpectedz
.asd_fds_1	asd_fds_1z.foo[3].barr+   z[0]['foo']["bar"]r   c                 C   s   t |}| || d S r#   )r   
parse_pathassertEqual)r   r3   r4   actualr   r   r   test_parse_pathH   s   
z%DaglishExtensionsTest.test_parse_pathz<foobar>.baz<qux>[3]z..fdsaz.[123]c                 C   s:   |  t t| W d    d S 1 sw   Y  d S r#   )assertRaises
ValueErrorr   r6   )r   r3   r   r   r   test_bad_pathsf   s   "z$DaglishExtensionsTest.test_bad_pathsN)r   r   r   r'   r2   r   
parametersr   AttrKeyr9   r<   r   r   r   r   r"   1   s<    
	
r"   __main__)__doc__r   typingr   r   absl.testingr   r   fiddler-   r   fiddle._srcr   r   TestCaser   r"   r   mainr   r   r   r   <module>   s   ?