a
    ߙfbI
                     @   st   d dl Z d dlmZ dd Ze jdd Ze j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 )    N)BSTc                 C   s"   | g g }dD ]}| | q|S )N)
      	               
         )add)ZTreeTypebval r   ;lib/python3.9/site-packages/astropy/table/tests/test_bst.pyget_tree   s    
r   c                   C   s   t tS N)r   r   r   r   r   r   tree   s    r   c                 C   s   | S r   r   )r   r   r   r   bst   s    r   c                 C   s   | j }|jdgksJ |jjdgks(J |jjdgks:J |jjjdgksNJ |jjjdgksbJ |jjjdgksvJ |jjjdgksJ |jjjjdgksJ |jjjjd	gksJ |jjjjjd
gksJ d S )Nr   r   r   r   r   r	   r
   r   r   r   )rootdataleftright)r   r   r   r   r   test_bst_add$   s    r   c                 C   s    | j dksJ | jdksJ d S )Nr
   r   )sizeZheightr   r   r   r   test_bst_dimensions2   s    r   c                 C   sf   | }t ddD ]}||}||gksJ q|dg ks>J |dg ksPJ |dg ksbJ d S )Nr      r   1)rangefind)r   r   iZnoder   r   r   test_bst_find7   s    
r#   c                 C   sr   g d}g d}g d}i }dD ]}dd |  |D ||< q |d |ksNJ |d |ks^J |d	 |ksnJ d S )
N)
r   r   r   r   r   r   r	   r   r   r
   )
r   r   r   r   r   r	   r   r   r   r
   )
r   r   r   r   r   r   r	   r
   r   r   )preorderinorder	postorderc                 S   s   g | ]
}|j qS r   key.0xr   r   r   
<listcomp>G       z%test_bst_traverse.<locals>.<listcomp>r$   r%   r&   )traverse)r   ZpreordZinordZpostordZ
traversalsorderr   r   r   test_bst_traverseA   s    r0   c                 C   s   d}t tdd}t|D ]\}}| |du s4J |  s@J t dd | dD ||d |d  ksrJ | jd| d ksJ | | d	u sJ qd S )
N)
r	   r   r   r   r   r   r
   r   r   r   r   r   Tc                 S   s   g | ]
}|j qS r   r'   r)   r   r   r   r,   S   r-   z#test_bst_remove.<locals>.<listcomp>r%   r
   F)setr    	enumerateremoveZis_validr.   
differencer   )r   r/   Zvalsr"   r   r   r   r   test_bst_removeM   s    r5   c                 C   s   |  dd | dddgks"J | jddddu s8J | ddgksLJ tt | jddd W d    n1 sz0    Y  | ddu sJ | ddu sJ d S )Nr
   r   )r   T   F)r   r!   r3   pytestZraises
ValueErrorr   r   r   r   test_bst_duplicateY   s    ,r9   c                 C   sr   | }| dd}tdd |D g dks.J | dd}dd	 |D dgksRJ | dd
}t|dksnJ d S )Nr   r   c                 s   s   | ]}|j V  qd S r   r'   r)   r   r   r   	<genexpr>g   r-   z!test_bst_range.<locals>.<genexpr>)r   r   r	   r   r   r
   r   c                 S   s   g | ]
}|j qS r   r'   r)   r   r   r   r,   i   r-   z"test_bst_range.<locals>.<listcomp>   r   )Zrange_nodessortedlen)r   r   Zlstr   r   r   test_bst_ranged   s    r>   )r7   Zastropy.table.bstr   r   Zfixturer   r   r   r   r#   r0   r5   r9   r>   r   r   r   r   <module>   s   


