a
    ze                     @   s2   d dl Z dZG dd de jZedkr.e   dS )    NGlobal variablec                   @   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 )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.9/test/test_dictcomps.py
<dictcomp>       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      r   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 Variabler   c                 S   s   i | ]
}|d qS Nr   r   r   r   r   r      r   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   "   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 )Nr   c                 S   s   i | ]
}|d qS r+   r   )r   gr   r   r   r   )   r   zJDictComprehensionTest.test_scope_isolation_from_global.<locals>.<dictcomp>r   r   r   r   r   r   r   r   r   r   r   r,   c                 S   s*   i | ]"}t |d  |d D ]
}||qqS rW   r    )r   r#   rY   r   r   r   r   3   r   )r!   r%   rY   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 )Nr   r   c                 S   s   i | ]
}|t qS r   )rY   r   r   r   r   r   =   r   z@DictComprehensionTest.test_global_visibility.<locals>.<dictcomp>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 variabler   c                    s   i | ]
}| qS r   r   r   r#   r   r   r   G   r   z?DictComprehensionTest.test_local_visibility.<locals>.<dictcomp>r   r$   r&   r   r\   r   test_local_visibility@   s    z+DictComprehensionTest.test_local_visibilityc                 C   st   |  td tddd W d    n1 s.0    Y  |  td tddd W d    n1 sf0    Y  d S )Nzcannot assignz'{x: y for y, x in ((1, 2), (3, 4))} = 5z<test>execzillegal expressionz({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_assignmentc                    sZ   ddddd}g d}g   fddfd	d
t ddD }| || |  | d S )NWold)Herd   rc   )
)keyrf   )valuerb   )rh   rg   )ri   rc   rh   rd   )ri   rrj   )ri   rd   )rh   rc   )ri   re   c                    s     | |f |S r+   )append)posri   )actual_callsr   r   add_callf   s    z=DictComprehensionTest.test_evaluation_order.<locals>.add_callc                    s"   i | ]\}} d | d|qS )rh   ri   r   r"   )ro   r   r   r   j   s   z?DictComprehensionTest.test_evaluation_order.<locals>.<dictcomp>ZHelloZWorld)zipr%   )r'   r(   Zexpected_callsr)   r   )rn   ro   r   test_evaluation_orderT   s    
z+DictComprehensionTest.test_evaluation_orderc                 C   s   ddddd}dd t dD }| || dd	d
dd}dd t dD }| || dd	d
dd}dd t dD }| || d S )Nr   r   r   r
   )r   r   r   r   c                 S   s   i | ]}|d  }||| qS r   r   )r   ijr   r   r   r   t   r   zQDictComprehensionTest.test_assignment_idiom_in_comprehensions.<locals>.<dictcomp>r   r   r      )r   r   r   r   c                 S   s*   i | ]"}|d  }|d  }|| || qS rr   r   r   rs   rt   r   r   r   r   r   w   r   c                 S   s,   i | ]$}|d  |d  }}|| || qS )r   r   r   rv   r   r   r   r   z   r   r$   r&   r   r   r   'test_assignment_idiom_in_comprehensionsr   s    z=DictComprehensionTest.test_assignment_idiom_in_comprehensionsc                 C   sP   ddddd}|  dd g tdD | |  dd g tdR D | d S )	Nr   r   r   r   )r   r   r   r   c                 S   s   i | ]}||| qS r   r   r   rs   r   r   r   r      r   z>DictComprehensionTest.test_star_expression.<locals>.<dictcomp>c                 S   s   i | ]}||| qS r   r   rx   r   r   r   r      r   )r%   r!   )r'   r(   r   r   r   test_star_expression}   s    z*DictComprehensionTest.test_star_expressionN)__name__
__module____qualname__r*   rX   rZ   r[   r]   ra   rq   rw   ry   r   r   r   r   r      s   
		r   __main__)ZunittestrY   ZTestCaser   rz   mainr   r   r   r   <module>   s   |