U
    }h                     @   sz   d dl Zd dlZd dlmZ d dlmZmZ d dlm	Z	 d dl
mZ dd Zdd	 Zd
d Zejdeegdd ZdS )    N)euclidean_distances)KNeighborsTransformerRadiusNeighborsTransformer)_is_sorted_by_data)assert_array_equalc                  C   s  d} d}d}d}t jd}|||}|||}t t|d}dD ]}|dk}	t| |d}
|
|}|j||fks|t	|j
j|| |	  fkst	|jd	kst	t|st	|
|}|j||fkst	|j
j|| |	  fkst	|jd	kst	t|sHt	qHdD ]}|dk}	t||d
}
|
|}|j||fks<t	|j
j|| |	  fkrXt	|jd	ksht	t|svt	|
|}|j||fkst	|j
j|| |	  fkrt	|jd	kst	t|st	qd S )N         
   *   )distanceZconnectivityr   )n_neighborsmodeZcsr)radiusr   )nprandomRandomStaterandnZ
percentiler   r   fit_transformshapeAssertionErrordataformatr   	transformr   )r   n_samples_fitZ	n_queries
n_featuresrngXX2r   r   Zadd_onenntXtX2t r"   F/tmp/pip-unpacked-wheel-ig1s1lm8/sklearn/neighbors/tests/test_graph.pytest_transformer_result
   sD    



r$   c                 C   s,   |   } | j| j| jk }t|| jd kS )z0Return True if the diagonal is explicitly storedr   )Ztocoorowcollenr   )r   explicitr"   r"   r#   _has_explicit_diagonal7   s    r)   c            
      C   s   d} d\}}}t jd}|||}|||}t| d}||}t|sRtt |j	
|| d d d df dks~t||}t|stt |j	
|| d d d df dkst||}	t|	rtd S )Nr   )r   r	   r
   r   )r      r   )r   r   r   r   r   r   r)   r   allr   Zreshaper   )
r   r   Zn_samples_transformr   r   r   r   r   r    r!   r"   r"   r#   test_explicit_diagonal>   s    


,
,
r,   Klassc                    sn   d}d}t jd}|||}|  |}| }| j  t j fddt	|j
D td}t|| dS )zFCheck `get_feature_names_out` for transformers defined in `_graph.py`.r   r
   r   c                    s   g | ]}  | qS r"   r"   ).0iZclass_name_lowerr"   r#   
<listcomp>b   s     z0test_graph_feature_names_out.<locals>.<listcomp>)ZdtypeN)r   r   r   r   ZfitZget_feature_names_out__name__lowerarrayrangeZn_samples_fit_objectr   )r-   r   r   r   r   ZestZ	names_outZexpected_names_outr"   r0   r#   test_graph_feature_names_outT   s    
r7   )Znumpyr   ZpytestZsklearn.metricsr   Zsklearn.neighborsr   r   Zsklearn.neighbors._baser   Zsklearn.utils._testingr   r$   r)   r,   markZparametrizer7   r"   r"   r"   r#   <module>   s   -