
    dafb                         d Z ddlZddlmZ  ej                  d      Z G d dej                        Z G d de      Z	 G d	 d
e      Z
edk(  r ej                          yy)z<
Test implementation of the PEP 509: dictionary versioning.
    N)import_helper	_testcapic                   p    e Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zy)DictVersionTestsc                 0    t               | _        d | _        y N)setseen_versionsdict)selfs    1/root/Python-3.12.4/Lib/test/test_dict_version.pysetUpzDictVersionTests.setUp   s     U	    c                     t         j                  |      }| j                  || j                         | j                  j	                  |       y r   )r   dict_get_versionassertNotInr
   add)r   mydictversions      r   check_version_uniquez%DictVersionTests.check_version_unique   s<    ,,V4$"4"45w'r   c                 8     ||i |}| j                  |       |S r   )r   )r   r   methodargskwresults         r   check_version_changedz&DictVersionTests.check_version_changed   s$    $$!!&)r   c                     t         j                  |      }| j                  j                  |        ||i |}t         j                  |      }| j	                  ||d       |S )Nzversion changed)r   r   r
   r   assertEqual)r   r   r   r   r   version1r   version2s           r   check_version_dont_changez*DictVersionTests.check_version_dont_change   s]    --f5x($$--f58->?r   c                 L     | j                   |i |}| j                  |       |S r   )	type2testr   )r   r   r   ds       r   new_dictzDictVersionTests.new_dict(   s*    DNND'B'!!!$r   c                     | j                         }| j                         }| j                         }| j                  d      }| j                  dd      }y )Nx)r'   y)r'   r(   )r%   )r   empty1empty2empty3	nonempty1	nonempty2s         r   test_constructorz!DictVersionTests.test_constructor-   sG     MMCM(	MMC3M/	r   c                     | j                  dd      }| j                  ||j                        }| j                  |       y )N      )ab)r%   r!   copyr   r   r$   d2s      r   	test_copyzDictVersionTests.test_copy7   s:    MMAM#++Aqvv6 	!!"%r   c                    | j                         }| j                  ||j                  dd       | j                  ||j                  dd       | j                  ||j                  dd       | j                  ||j                  dd       y )Nr'   r(   r0   r1   )r%   r   __setitem__r   r$   s     r   test_setitemzDictVersionTests.test_setitem?   sq    MMO 	""1ammS#>""1ammS#> 	""1ammS!<""1ammS!<r   c                 J   t               }| j                         }| j                  ||j                  d|       | j	                  ||j                  d|       | j	                  ||j
                  |       | j                  |      }| j	                  ||j
                  |       y )Nkeyr=   )objectr%   r   r9   r!   update)r   valuer$   r6   s       r   test_setitem_same_valuez(DictVersionTests.test_setitem_same_valueJ   s    MMO 	""1ammUEB 	&&q!--F 	&&q!((&>]]u]%&&q!((B7r   c                     G d d      } |       } |       }| j                  ||k(         | j                  ||k7         | j                  ||       | j                         }| j	                  ||j
                  d|       | j                  |d   |       | j	                  ||j
                  d|       | j                  |d   |       | j	                  ||j                  |       | j                  |d   |       | j                  |      }| j	                  ||j                  |       | j                  |d   |       y )Nc                       e Zd Zd Zy)8DictVersionTests.test_setitem_equal.<locals>.AlwaysEqualc                      y)NT )r   others     r   __eq__z?DictVersionTests.test_setitem_equal.<locals>.AlwaysEqual.__eq__^   s    r   N)__name__
__module____qualname__rI   rG   r   r   AlwaysEqualrE   ]   s    r   rM   r=   r>   )
assertTrueassertFalseassertIsNotr%   r   r9   assertIsr@   )r   rM   value1value2r$   r6   s         r   test_setitem_equalz#DictVersionTests.test_setitem_equal\   s   	 	 &()6)*(MMO""1ammUFCah' 	""1ammUFCah' 	""1ahhF";ah']]v]&""1ahh3ah'r   c                     | j                         }| j                  ||j                  dd       | j                  ||j                  dd       y )Nr=   rR   rS   )r%   r   
setdefaultr!   r:   s     r   test_setdefaultz DictVersionTests.test_setdefaulty   sA    MMO 	""1allE8D 	&&q!,,xHr   c                     | j                  d      }| j                  ||j                  d       | j                  || j                  t
        |j                  d       y NrA   r>   r=   )r%   r   __delitem__r!   assertRaisesKeyErrorr:   s     r   test_delitemzDictVersionTests.test_delitem   sO    MMgM& 	""1ammU; 	&&q$*;*;X'(}}e	=r   c                     | j                  d      }| j                  ||j                  d       | j                  || j                  t
        |j                  d       y rY   )r%   r   popr!   r[   r\   r:   s     r   test_popzDictVersionTests.test_pop   sO    MMgM& 	""1aeeU3 	&&q$*;*;X'(uue	5r   c                     | j                  d      }| j                  ||j                         | j                  || j                  t
        |j                         y NrA   r>   )r%   r   popitemr!   r[   r\   r:   s     r   test_popitemzDictVersionTests.test_popitem   sK    MMgM& 	""1aii0 	&&q$*;*;X'(yy	2r   c                     | j                  d      }| j                  ||j                         | j                  ||j                  d       | j                  d      }| j                  ||j                  |       y )NrA   r>   z	new valuezvalue 3)r%   r!   r@   r   r5   s      r   test_updatezDictVersionTests.test_update   si    MMgM& 	&&q!((3 	""1ahhK"@]]y])""1ahh3r   c                     | j                  d      }| j                  ||j                         | j                  ||j                         y rb   )r%   r   clearr!   r:   s     r   
test_clearzDictVersionTests.test_clear   s>    MMgM& 	""1agg. 	&&q!''2r   N)rJ   rK   rL   r   r#   r   r   r   r!   r%   r.   r7   r;   rB   rT   rW   r]   r`   rd   rf   ri   rG   r   r   r   r      sX    I(

	
0&	=8$(:I=52
43r   r   c                       e Zd Zy)DictN)rJ   rK   rL   rG   r   r   rk   rk      s    r   rk   c                       e Zd ZeZy)DictSubtypeVersionTestsN)rJ   rK   rL   rk   r#   rG   r   r   rm   rm      s    Ir   rm   __main__)__doc__unittesttest.supportr   import_moduler   TestCaser   r   rk   rm   rJ   mainrG   r   r   <module>ru      sn     & (M''4	g3x(( g3T	4 	.  zHMMO r   