o
    p.a{  ã                   @   sF   d Z ddlZddlZddlZG dd„ dejƒZedkr!e ¡  dS dS )z!Unit tests for the input.py file.é    Nc                   @   sT   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S )ÚTestFindCyclesc                 C   s&   i | _ dD ]}tj |¡| j |< qd S )N)ÚaÚbÚcÚdÚe)ÚnodesÚgypÚinputZDependencyGraphNode)ÚselfÚx© r   ú0/usr/lib/python3/dist-packages/gyp/input_test.pyÚsetUp   s   ÿzTestFindCycles.setUpc                 C   s   |j  |¡ |j |¡ d S ©N)ZdependenciesÚappendZ
dependents)r   Z	dependentZ
dependencyr   r   r   Ú_create_dependency   s   z!TestFindCycles._create_dependencyc                 C   s(   | j  ¡ D ]\}}|  g | ¡ ¡ qd S r   )r   ÚitemsÚassertEqualsÚ
FindCycles©r   ZlabelZnoder   r   r   Útest_no_cycle_empty_graph   s   ÿz(TestFindCycles.test_no_cycle_empty_graphc                 C   sp   |   | jd | jd ¡ |   | jd | jd ¡ |   | jd | jd ¡ | j ¡ D ]\}}|  g | ¡ ¡ q)d S )Nr   r   r   r   ©r   r   r   r   r   r   r   r   r   Útest_no_cycle_line   ó   ÿz!TestFindCycles.test_no_cycle_linec                 C   sp   |   | jd | jd ¡ |   | jd | jd ¡ |   | jd | jd ¡ | j ¡ D ]\}}|  g | ¡ ¡ q)d S )Nr   r   r   r   r   r   r   r   Útest_no_cycle_dag$   r   z TestFindCycles.test_no_cycle_dagc                 C   sD   |   | jd | jd ¡ |  | jd | jd gg| jd  ¡ ¡ d S )Nr   ©r   r   r   r   ©r   r   r   r   Útest_cycle_self_reference,   s   ÿz(TestFindCycles.test_cycle_self_referencec                 C   s”   |   | jd | jd ¡ |   | jd | jd ¡ |  | jd | jd | jd gg| jd  ¡ ¡ |  | jd | jd | jd gg| jd  ¡ ¡ d S )Nr   r   r   r   r   r   r   Útest_cycle_two_nodes2   s    ÿ ÿz#TestFindCycles.test_cycle_two_nodesc                 C   sÎ   |   | jd | jd ¡ |   | jd | jd ¡ |   | jd | jd ¡ |   | jd | jd ¡ | jd  ¡ }|  | jd | jd | jd g|v ¡ |  | jd | jd | jd g|v ¡ |  dt|ƒ¡ d S )Nr   r   r   é   )r   r   r   Z
assertTruer   Úlen)r   Zcyclesr   r   r   Útest_two_cycles;   s   ÿÿzTestFindCycles.test_two_cyclesc              	   C   sÄ   |   | jd | jd ¡ |   | jd | jd ¡ |   | jd | jd ¡ |   | jd | jd ¡ |   | jd | jd ¡ |  | jd | jd | jd | jd | jd | jd gg| jd  ¡ ¡ d S )Nr   r   r   r   r   r   r   r   r   r   Útest_big_cycleI   s   ûúzTestFindCycles.test_big_cycleN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r"   r#   r   r   r   r   r      s    	r   Ú__main__)	Ú__doc__Z	gyp.inputr	   ZunittestÚsysZTestCaser   r$   Úmainr   r   r   r   Ú<module>   s   Kÿ