o
    HXh                     @   s6   d dl Z dZG dd de jZedkre   dS 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   =/opt/python-3.10.19/usr/lib/python3.10/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      s   ( r!   assertEqualselfexpectedactualr   r   r   test_basics	   s   z!DictComprehensionTest.test_basicsc                 C   sf  d}d d d d d d d d d d d
}dd t dD }| || | |d i 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i 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d0}d1d t dD }| |d | || d S )2NzLocal Variabler   c                 S      i | ]}|d qS Nr   r   r   r   r   r          z>DictComprehensionTest.test_scope_isolation.<locals>.<dictcomp>r   r   r   r   r   r      r         $   r   %   &   '   -   r   .   /   0   1   6   r   7   8   9   :   ;   ?   r   @   A   B   C   D   E   H   r   I   J   K   L   M   N   O   Q   R   S   T   U   V   W   X   Y   c                 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   test_scope_isolation   s   2
z*DictComprehensionTest.test_scope_isolationc                 C   sb  d d d d d d d d d d d
}dd t dD }| || | td i 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i 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d0}d1d t dD }| td | || d S )2Nr   c                 S   r+   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/   r0   r1   r   r2   r3   r4   r5   r   r6   r7   r8   r9   r:   r   r;   r<   r=   r>   r?   r@   r   rA   rB   rC   rD   rE   rF   rG   r   rH   rI   rJ   rK   rL   rM   c                 S   rY   rZ   r    )r   r#   r]   r   r   r   r   3   r[   )r!   r%   r]   r&   r   r   r    test_scope_isolation_from_global&   s   2
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   )r]   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   sv   |  td tddd W d    n1 sw   Y  |  td tddd W d    d S 1 s4w   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erh   rg   )
)keyrj   )valuerf   )rl   rk   )rm   rg   rl   rh   )rm   rrn   )rm   rh   )rl   rg   )rm   ri   c                    s     | |f |S r,   )append)posrm   )actual_callsr   r   add_callf   s   z=DictComprehensionTest.test_evaluation_order.<locals>.add_callc                    s"   i | ]\}} d | d|qS )rl   rm   r   r"   )rs   r   r   r   j   s    z?DictComprehensionTest.test_evaluation_order.<locals>.<dictcomp>ZHelloZWorld)zipr%   )r'   r(   Zexpected_callsr)   r   )rr   rs   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   s    zQDictComprehensionTest.test_assignment_idiom_in_comprehensions.<locals>.<dictcomp>r   r   r      )r   r   r   r   c                 S   s*   i | ]}|d  }|d  }|| || qS rv   r   r   rw   rx   r   r   r   r   r   w   r[   c                 S   s,   i | ]}|d  |d }}|| || qS )r   r   r   rz   r   r   r   r   z   s   , 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      i | ]}||| qS r   r   r   rw   r   r   r   r      r   z>DictComprehensionTest.test_star_expression.<locals>.<dictcomp>c                 S   r|   r   r   r}   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*   r\   r^   r_   ra   re   ru   r{   r~   r   r   r   r   r      s    
		r   __main__)Zunittestr]   ZTestCaser   r   mainr   r   r   r   <module>   s    |