B
    u9a                 @   s2   d dl Z dZG dd de jZedkr.e   dS )    NzGlobal variablec               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )DictComprehensionTestc             C   st   ddddddddd	d
d
}dd t dD }| || ddddddddddd
}dd t dD }| || d S )N
                              )
r                           	   c             S   s   i | ]}|d  |qS )r    ).0kr   r   $/usr/lib/python3.7/test_dictcomps.py
<dictcomp>   s    z5DictComprehensionTest.test_basics.<locals>.<dictcomp>r   r   r   r   r   r   r   r   r   r   c             S   s(   i | ] }t d D ]}||kr||qqS )r   )range)r   r   vr   r   r   r      s    )r   assertEqual)selfexpectedactualr   r   r   test_basics	   s    
z!DictComprehensionTest.test_basicsc          .   C   s   d}d d d d d d d d d d d
}dd t dD }| || | |d ddddddd	d	d	d	d
d
d
d
d
ddddddddddddddddddddddddddddddd-}dd t dD }| |d | || d S )NzLocal Variable)
r   r   r   r   r   r   r   r   r   r   c             S   s   i | ]
}d |qS )Nr   )r   r   r   r   r   r      s    z>DictComprehensionTest.test_scope_isolation.<locals>.<dictcomp>r   r   r   r   r   r   r   r   r   r   )-r   r   r            $   %   &   '   -   .   /   0   1   6   7   8   9   :   ;   ?   @   A   B   C   D   E   H   I   J   K   L   M   N   O   Q   R   S   T   U   V   W   X   Y   c             S   s*   i | ]"}t |d  |d D ]
}||qqS )r   r   )r   )r   r   r   r   r   r   r   "   s    )r   r   )r   r   r   r    r   r   r   test_scope_isolation   s    z*DictComprehensionTest.test_scope_isolationc          .   C   s   d d d d d d d d d d d
}dd t dD }| || | td ddddddd	d	d	d	d
d
d
d
d
ddddddddddddddddddddddddddddddd-}dd t dD }| td | || d S )N)
r   r   r   r   r   r   r   r   r   r   c             S   s   i | ]
}d |qS )Nr   )r   gr   r   r   r   )   s    zJDictComprehensionTest.test_scope_isolation_from_global.<locals>.<dictcomp>r   zGlobal variabler   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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   c             S   s*   i | ]"}t |d  |d D ]
}||qqS )r   r   )r   )r   r   rM   r   r   r   r   3   s    )r   r   rM   )r   r   r    r   r   r    test_scope_isolation_from_global&   s    z6DictComprehensionTest.test_scope_isolation_from_globalc             C   s<   ddddddddddd
}dd t dD }| || d S )NzGlobal variable)
r   r   r   r   r   r   r   r   r   r   c             S   s   i | ]
}t |qS r   )rM   )r   r   r   r   r   r   =   s    z@DictComprehensionTest.test_global_visibility.<locals>.<dictcomp>r   )r   r   )r   r   r    r   r   r   test_global_visibility7   s    
z,DictComprehensionTest.test_global_visibilityc                sP   d ddddddddddd
} fddt dD }| || |  d d S )NzLocal variable)
r   r   r   r   r   r   r   r   r   r   c                s   i | ]
} |qS r   r   )r   r   )r   r   r   r   G   s    z?DictComprehensionTest.test_local_visibility.<locals>.<dictcomp>r   )r   r   )r   r   r    r   )r   r   test_local_visibility@   s    
z+DictComprehensionTest.test_local_visibilityc          	   C   sL   |  td tddd W d Q R X |  td tddd W d Q R X d S )Nzcan't assignz'{x: y for y, x in ((1, 2), (3, 4))} = 5z<test>execz({x: y for y, x in ((1, 2), (3, 4))} += 5)ZassertRaisesRegexSyntaxErrorcompile)r   r   r   r   test_illegal_assignmentK   s    z-DictComprehensionTest.test_illegal_assignmentN)	__name__
__module____qualname__r!   rL   rN   rO   rP   rT   r   r   r   r   r      s   
	r   __main__)ZunittestrM   ZTestCaser   rU   mainr   r   r   r   <module>   s   N