
    /hhb                         S r SSKrSSKJr  \R                  " S5      r " S S\R                  5      r " S S\5      r	 " S	 S
\5      r
\S:X  a  \R                  " 5         gg)z<
Test implementation of the PEP 509: dictionary versioning.
    N)import_helper	_testcapic                   x    \ rS rSr\rS rS rS rS r	S r
S rS rS	 rS
 rS rS rS rS rS rS rS rSrg)DictVersionTests   c                 0    [        5       U l        S U l        g N)setseen_versionsdict)selfs    ?/opt/python-3.13.8/usr/lib/python3.13/test/test_dict_version.pysetUpDictVersionTests.setUp   s     U	    c                     [         R                  U5      nU R                  X R                  5        U R                  R	                  U5        g r	   )r   dict_get_versionassertNotInr   add)r   mydictversions      r   check_version_unique%DictVersionTests.check_version_unique   s:    ,,V4"4"45w'r   c                 8    U" U0 UD6nU R                  U5        U$ r	   )r   )r   r   methodargskwresults         r   check_version_changed&DictVersionTests.check_version_changed   s$    $$!!&)r   c                     [         R                  U5      nU R                  R                  U5        U" U0 UD6n[         R                  U5      nU R	                  XuS5        U$ )Nzversion changed)r   r   r   r   assertEqual)r   r   r   r   r   version1r   version2s           r   check_version_dont_change*DictVersionTests.check_version_dont_change   s[    --f5x($$--f5->?r   c                 L    U R                   " U0 UD6nU R                  U5        U$ r	   )	type2testr   )r   r   r   ds       r   new_dictDictVersionTests.new_dict(   s(    NND'B'!!!$r   c                     U R                  5       nU R                  5       nU R                  5       nU R                  SS9nU R                  SSS9ng )Nx)r-   y)r-   r.   )r*   )r   empty1empty2empty3	nonempty1	nonempty2s         r   test_constructor!DictVersionTests.test_constructor-   sG     MMCM(	MMC3M/	r   c                 |    U R                  SSS9nU R                  XR                  5      nU R                  U5        g )N      )ab)r*   r%   copyr   r   r)   d2s      r   	test_copyDictVersionTests.test_copy7   s8    MMAM#++Avv6 	!!"%r   c                    U R                  5       nU R                  XR                  SS5        U R                  XR                  SS5        U R                  XR                  SS5        U R                  XR                  SS5        g )Nr-   r.   r7   r8   )r*   r   __setitem__r   r)   s     r   test_setitemDictVersionTests.test_setitem?   si    MMO 	""1mmS#>""1mmS#> 	""1mmS!<""1mmS!<r   c                 6   [        5       nU R                  5       nU R                  X"R                  SU5        U R	                  X"R                  SU5        U R	                  X"R
                  US9  U R                  US9nU R	                  X"R
                  U5        g )NkeyrF   )objectr*   r   rA   r%   update)r   valuer)   r=   s       r   test_setitem_same_value(DictVersionTests.test_setitem_same_valueJ   s    MMO 	""1mmUEB 	&&q--F 	&&q((&>]]u]%&&q((B7r   c                 h    " S S5      nU" 5       nU" 5       nU R                  X#:H  5        U R                  X#:g  5        U R                  X#5        U R                  5       nU R	                  XDR
                  SU5        U R                  US   U5        U R	                  XDR
                  SU5        U R                  US   U5        U R	                  XDR                  US9  U R                  US   U5        U R                  US9nU R	                  XDR                  U5        U R                  US   U5        g )Nc                       \ rS rSrS rSrg)8DictVersionTests.test_setitem_equal.<locals>.AlwaysEqual]   c                     g)NT )r   others     r   __eq__?DictVersionTests.test_setitem_equal.<locals>.AlwaysEqual.__eq__^   s    r   rR   N)__name__
__module____qualname____firstlineno__rT   __static_attributes__rR   r   r   AlwaysEqualrO   ]   s    r   r[   rF   rG   )
assertTrueassertFalseassertIsNotr*   r   rA   assertIsrI   )r   r[   value1value2r)   r=   s         r   test_setitem_equal#DictVersionTests.test_setitem_equal\   s   	 	 ())*(MMO""1mmUFCah' 	""1mmUFCah' 	""1hhF";ah']]v]&""1hh3ah'r   c                     U R                  5       nU R                  XR                  SS5        U R                  XR                  SS5        g )NrF   r`   ra   )r*   r   
setdefaultr%   rB   s     r   test_setdefault DictVersionTests.test_setdefaulty   s=    MMO 	""1llE8D 	&&q,,xHr   c                     U R                  SS9nU R                  XR                  S5        U R                  XR                  [
        UR                  S5        g NrJ   rG   rF   )r*   r   __delitem__r%   assertRaisesKeyErrorrB   s     r   test_delitemDictVersionTests.test_delitem   sK    MMgM& 	""1mmU; 	&&q*;*;X'(}}e	=r   c                     U R                  SS9nU R                  XR                  S5        U R                  XR                  [
        UR                  S5        g ri   )r*   r   popr%   rk   rl   rB   s     r   test_popDictVersionTests.test_pop   sK    MMgM& 	""1eeU3 	&&q*;*;X'(uue	5r   c                     U R                  SS9nU R                  XR                  5        U R                  XR                  [
        UR                  5        g NrJ   rG   )r*   r   popitemr%   rk   rl   rB   s     r   test_popitemDictVersionTests.test_popitem   sG    MMgM& 	""1ii0 	&&q*;*;X'(yy	2r   c                     U R                  SS9nU R                  XR                  5        U R                  XR                  SS9  U R                  SS9nU R                  XR                  U5        g )NrJ   rG   z	new valuezvalue 3)r*   r%   rI   r   r<   s      r   test_updateDictVersionTests.test_update   sc    MMgM& 	&&q((3 	""1hhK"@]]y])""1hh3r   c                     U R                  SS9nU R                  XR                  5        U R                  XR                  5        g rt   )r*   r   clearr%   rB   s     r   
test_clearDictVersionTests.test_clear   s:    MMgM& 	""1gg. 	&&q''2r   )r   r   N)rV   rW   rX   rY   r   r(   r   r   r   r%   r*   r4   r>   rC   rK   rb   rf   rm   rq   rv   ry   r}   rZ   rR   r   r   r   r      sX    I(

	
0&	=8$(:I=52
43r   r   c                       \ rS rSrSrg)Dict   rR   N)rV   rW   rX   rY   rZ   rR   r   r   r   r      s    r   r   c                       \ rS rSr\rSrg)DictSubtypeVersionTests   rR   N)rV   rW   rX   rY   r   r(   rZ   rR   r   r   r   r      s    Ir   r   __main__)__doc__unittesttest.supportr   import_moduler   TestCaser   r   r   r   rV   mainrR   r   r   <module>r      sj     & ''4	g3x(( g3T	4 	.  zMMO r   