o
    qoiS                     @   sr   d 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 ddl	m
Z
 G dd	 d	ejZed
kr7e  dS dS )zTests for nested_values.    N)absltest)parameterized)daglish)daglish_legacy)nested_valuesc                   @   s   e Zd Zdd Zedg dfdgdfddgdfdggggggd	fgd
d Zeedddd Zeedddd Z	dd Z
dd ZdS )NestedValuesTestc                    sL   t t|}|r||ng d f\}} fdd|D }tt|g|S )Nc                    s   g | ]}  |qS  )calculate_max_container_size).0cselfr   Z/home/ubuntu/.local/lib/python3.10/site-packages/fiddle/_src/testing/nested_values_test.py
<listcomp>    s    zANestedValuesTest.calculate_max_container_size.<locals>.<listcomp>)r   find_node_traversertypeflattenmaxlen)r   value	traverserchildren_child_sizesr   r   r   r	      s   z-NestedValuesTest.calculate_max_container_size)Nr   r   N   )g      ?      c                 C   s   |  t|| d S )N)assertEqualr   calculate_nested_value_depth)r   r   depthr   r   r   !test_calculate_nested_value_depth#   s   z2NestedValuesTest.test_calculate_nested_value_depth   c                 C   s>   t dD ]}tjt||dd}t|}| || qd S )N
   F)	max_depthshare_objects)ranger   generate_nested_valuerandomRandomr   assertLessEqual)r   r#   ir   r   r   r   r   "test_generate_max_depth_no_sharing-   s   
z3NestedValuesTest.test_generate_max_depth_no_sharingc                 C   s<   t dD ]}tjt||d}| |}| || qd S )Nr"   )max_container_size)r%   r   r&   r'   r(   r	   r)   )r   r,   r*   r   max_sizer   r   r    test_generate_max_container_size5   s   

z1NestedValuesTest.test_generate_max_container_sizec                 C   sX   d}t dD ]}tt|}tj|dd}t|gtt	|
 }q| |d d S )Nr      Tmemoizable_onlyr   )r%   r   r&   r'   r(   r   collect_paths_by_idr   mapr   valuesassertGreater)r   max_referencesr*   r   	all_pathsr   r   r   $test_generate_can_have_shared_values=   s   z5NestedValuesTest.test_generate_can_have_shared_valuesc              	   C   sn   t dD ]0}tjt|dd}tj|dd}| D ]}t	||d }| j
|dd| d	| d
 qqd S )Nr/   F)r$   Tr0   r   r   zMultiple paths to z: )msg)r%   r   r&   r'   r(   r   r2   r4   r   follow_path	assertLen)r   r*   r   r7   paths_to_item	sub_valuer   r   r   +test_generate_shared_values_can_be_disabledF   s    
z<NestedValuesTest.test_generate_shared_values_can_be_disabled)__name__
__module____qualname__r	   r   
parametersr    r%   r+   r.   r8   r>   r   r   r   r   r      s     



	r   __main__)__doc__r'   absl.testingr   r   fiddler   fiddle._src.experimentalr   fiddle._src.testingr   TestCaser   r?   mainr   r   r   r   <module>   s   :