U
    Af                     @   sb   d dl Z d dlmZmZ dd Zdd Zdd Zd	d
 Zdd ZG dd dZ	G dd de	Z
dS )    N)MappedQueue_HeapElementc                  C   sH   t dd} t dd}|| k s t| |ks,t|dk s8td| k sDtd S )N皙?a   br   AssertionErrorbarfoo r   J/tmp/pip-unpacked-wheel-0wvcsx6h/networkx/utils/tests/test_mapped_queue.pytest_HeapElement_gtlt   s    

r   c                  C   s0   t dd} t dd}|| ks t| |k s,td S )Nr   r   r   r   r
   r   r   r   #test_HeapElement_gtlt_tied_priority   s    

r   c                  C   s<   t dd} t dd}|| ks t| |ks,t|dks8td S )Nr   r   r   r   r
   r   r   r   test_HeapElement_eq   s
    

r   c                  C   sD   t dd} t dd}t| ddgks(tt|ddddgks@td S )Nr   r   r         r   r   r   )r   listr	   r   r   r   r   r   test_HeapElement_iter   s    

r   c                  C   s   t dd} t dd}| d dks$t| d dks4t|d dksDt|d dksTt|d dksdttt|jd tt| jd d S )	Nr   r   r   r   r   r   r      )r   r	   pytestraises
IndexError__getitem__r   r   r   r   test_HeapElement_getitem%   s    

r   c                   @   s   e Z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d#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-S ).TestMappedQueuec                 C   s   d S Nr   )selfr   r   r   setup_method2   s    zTestMappedQueue.setup_methodc                 C   s"   |j dd t|jD kstd S )Nc                 S   s   i | ]\}}||qS r   r   .0poseltr   r   r   
<dictcomp>6   s      z.TestMappedQueue._check_map.<locals>.<dictcomp>)position	enumerateheapr	   r    qr   r   r   
_check_map5   s    zTestMappedQueue._check_mapc                 C   s$   t  }||_dd t|D |_|S )Nc                 S   s   i | ]\}}||qS r   r   r"   r   r   r   r&   ;   s      z6TestMappedQueue._make_mapped_queue.<locals>.<dictcomp>)r   r)   r(   r'   r    hr+   r   r   r   _make_mapped_queue8   s    z"TestMappedQueue._make_mapped_queuec                 C   s0   ddddddg}|  |}|  | | d S N   r   r   r   r   r   )r/   _heapifyr,   r-   r   r   r   test_heapify>   s    
zTestMappedQueue.test_heapifyc                 C   s&   ddddddg}t |}| | d S r0   )r   r,   r-   r   r   r   	test_initD   s    zTestMappedQueue.test_initc                 C   s"   ddddddg}t tt| d S )Nr1   r   r   r   r   r   r   r   	TypeErrorr   )r    r.   r   r   r   test_incomparableI   s    z!TestMappedQueue.test_incomparablec                 C   s6   ddddddg}t |}| | t|dks2td S )Nr1   r   r   r   r   r      )r   r,   lenr	   r-   r   r   r   test_lenM   s    
zTestMappedQueue.test_lenc                 C   s<   dg}dg}|  |}|d |j|ks.t| | d S Nr   r   r/   _siftupr)   r	   r,   r    r.   h_siftedr+   r   r   r   test_siftup_leafS   s    

z TestMappedQueue.test_siftup_leafc                 C   s@   ddg}ddg}|  |}|d |j|ks2t| | d S r;   r<   r>   r   r   r   test_siftup_one_child[   s    

z%TestMappedQueue.test_siftup_one_childc                 C   sD   dddg}dddg}|  |}|d |j|ks6t| | d S )Nr   r   r   r<   r>   r   r   r   test_siftup_left_childc   s    



z&TestMappedQueue.test_siftup_left_childc                 C   sD   dddg}dddg}|  |}|d |j|ks6t| | d S Nr   r   r   r<   r>   r   r   r   test_siftup_right_childk   s    



z'TestMappedQueue.test_siftup_right_childc                 C   sT   dddddddg}dddddddg}|  |}|d |j|ksFt| | d S )Nr   r   r   r   r   r1   r8   r<   r>   r   r   r   test_siftup_multiples   s    

z$TestMappedQueue.test_siftup_multiplec                 C   s>   dg}dg}|  |}|dd |j|ks0t| | d S r;   )r/   	_siftdownr)   r	   r,   r>   r   r   r   test_siftdown_leaf{   s    
z"TestMappedQueue.test_siftdown_leafc                 C   sJ   ddg}ddg}|  |}|dt|d  |j|ks<t| | d S )Nr   r   r/   rF   r9   r)   r	   r,   r>   r   r   r   test_siftdown_single   s    
z$TestMappedQueue.test_siftdown_singlec                 C   sb   ddddddddg}ddddddddg}|  |}|dt|d  |j|ksTt| | d S )	Nr   r   r   r   r1   r8      r   rH   r>   r   r   r   test_siftdown_multiple   s    
z&TestMappedQueue.test_siftdown_multiplec                 C   sZ   dddddddg}dddddddg}t  }|D ]}|| q.|j|ksLt| | d S )Nr8   r   r   r   r   r1   r   r   pushr)   r	   r,   r    to_pushr?   r+   r%   r   r   r   	test_push   s    zTestMappedQueue.test_pushc                 C   sd   dddg}dddg}t  }|D ]}||}|stq|j|ksDt| | |d}|r`td S rC   r   rM   r	   r)   r,   r    rO   r?   r+   r%   Zinsertedr   r   r   test_push_duplicate   s    





z#TestMappedQueue.test_push_duplicatec                    s`   dddddddg}t |}| |     fdd	tt|D }||ksRt|   d S )
Nr   r   r8   r   r   r   r1   c                    s   g | ]}   qS r   )pop)r#   _r+   r   r   
<listcomp>   s     z,TestMappedQueue.test_pop.<locals>.<listcomp>)sortedr/   r2   ranger9   r	   r,   )r    r.   Zh_sortedpoppedr   rV   r   test_pop   s    
zTestMappedQueue.test_popc                 C   sH   dddddddg}ddddddg}|  |}|d}|j|ksDtd S Nr   r   r   r8   r   r1   r   r/   remover)   r	   r    r.   Z	h_removedr+   removedr   r   r   test_remove_leaf   s
    

z TestMappedQueue.test_remove_leafc                 C   sH   dddddddg}ddddddg}|  |}|d}|j|ksDtd S r\   r]   r_   r   r   r   test_remove_root   s
    

z TestMappedQueue.test_remove_rootc                 C   sL   dddddddg}dddddddg}|  |}|dd}|j|ksHtd S )	Nr      
   <      2   (      r/   updater)   r	   r    r.   Z	h_updatedr+   r`   r   r   r   test_update_leaf   s
    
z TestMappedQueue.test_update_leafc                 C   sL   dddddddg}dddddddg}|  |}|dd}|j|ksHtd S )	Nr   rc   rd   re   rf   rg   rh   #   rj   rl   r   r   r   test_update_root   s
    
z TestMappedQueue.test_update_rootN)__name__
__module____qualname__r!   r,   r/   r3   r4   r7   r:   r@   rA   rB   rD   rE   rG   rI   rK   rP   rS   r[   ra   rb   rm   ro   r   r   r   r   r   1   s,   		r   c                   @   s\   e Z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S )TestMappedDictc                 C   s   dd |D }t |S )Nc                 S   s   i | ]
}||qS r   r   )r#   r%   r   r   r   r&      s      z5TestMappedDict._make_mapped_queue.<locals>.<dictcomp>)r   )r    r.   Zpriority_dictr   r   r   r/      s    z!TestMappedDict._make_mapped_queuec                 C   s*   dddddd}t |}|j|ks&td S )Nr   r   r   r   r   r1   r   r   r   r   )r   r'   r	   r    dr+   r   r   r   r4      s    zTestMappedDict.test_initc                 C   s:   dddddd}t |}|jdd t|jD ks6td S )	Nr   r   r   r   r   r1   r   r   r   r   c                 S   s   i | ]\}}||qS r   r   r"   r   r   r   r&      s      z,TestMappedDict.test_ties.<locals>.<dictcomp>)r   r'   r(   r)   r	   ru   r   r   r   	test_ties   s    zTestMappedDict.test_tiesc                 C   sP   dddddd}t |}| tddks.t|jdd	 t|jD ksLtd S )
Nr   r   r   r   r   rw   r1   c                 S   s   i | ]\}}||qS r   r   r"   r   r   r   r&      s      z+TestMappedDict.test_pop.<locals>.<dictcomp>)r   rT   r   r	   r'   r(   r)   ru   r   r   r   r[      s    zTestMappedDict.test_popc                 C   s   t  }tt|j d S r   )r   r   r   r   rT   r*   r   r   r   test_empty_pop   s    zTestMappedDict.test_empty_popc                 C   s"   dddddd}t tt| d S )Nr   rt   r5   )r    rv   r   r   r   test_incomparable_ties   s    z%TestMappedDict.test_incomparable_tiesc                 C   s^   dddddddg}dddddddg}t  }|D ]}|j||d q.|j|ksPt| | d S )	Nr8   r   r   r   r   r1   r   priorityrL   rN   r   r   r   rP      s    zTestMappedDict.test_pushc                 C   sl   dddg}dddg}t  }|D ]}|j||d}|stq|j|ksHt| | |jddd}|rhtd S )Nr   r   r   r{   rQ   rR   r   r   r   rS      s    



z"TestMappedDict.test_push_duplicatec                 C   sP   dddddddg}dddddddg}|  |}|jdddd	}|j|ksLtd S )
Nr   rc   rd   re   rf   rg   rh   ri   r{   rj   rl   r   r   r   rm      s
    
zTestMappedDict.test_update_leafc                 C   sP   dddddddg}dddddddg}|  |}|jdddd	}|j|ksLtd S )
Nr   rc   rd   re   rf   rg   rh   rn   r{   rj   rl   r   r   r   ro     s
    
zTestMappedDict.test_update_rootN)rp   rq   rr   r/   r4   rx   r[   ry   rz   rP   rS   rm   ro   r   r   r   r   rs      s   	rs   )r   Znetworkx.utils.mapped_queuer   r   r   r   r   r   r   r   rs   r   r   r   r   <module>   s   	 