
    ;eb                         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                     dS dS )z<
Test implementation of the PEP 509: dictionary versioning.
    N)import_helper	_testcapic                   r    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dS )DictVersionTestsc                 :    t                      | _        d | _        d S N)setseen_versionsdict)selfs    -/usr/lib/python3.11/test/test_dict_version.pysetUpzDictVersionTests.setUp   s     UU			    c                     t                               |          }|                     || j                   | j                            |           d S r   )r   dict_get_versionassertNotInr
   add)r   mydictversions      r   check_version_uniquez%DictVersionTests.check_version_unique   sK    ,,V44$"4555w'''''r   c                 @     ||i |}|                      |           |S r   )r   )r   r   methodargskwresults         r   check_version_changedz&DictVersionTests.check_version_changed   s/    $$$!!&)))r   c                     t                               |          }| j                            |            ||i |}t                               |          }|                     ||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   sq    --f55x((($$$--f558->???r   c                 J     | j         |i |}|                     |           |S r   )	type2testr   )r   r   r   ds       r   new_dictzDictVersionTests.new_dict(   s1    DND'B''!!!$$$r   c                     |                                  }|                                  }|                                  }|                      d          }|                      dd          }d S )Nx)r'   y)r'   r(   )r%   )r   empty1empty2empty3	nonempty1	nonempty2s         r   test_constructorz!DictVersionTests.test_constructor-   sW     MMCM((	MMC3M//			r   c                     |                      dd          }|                     ||j                  }|                     |           d S )N      )ab)r%   r!   copyr   r   r$   d2s      r   	test_copyzDictVersionTests.test_copy7   sJ    MMAM##++Aqv66 	!!"%%%%%r   c                    |                                  }|                     ||j        dd           |                     ||j        dd           |                     ||j        dd           |                     ||j        dd           d S )Nr'   r(   r0   r1   )r%   r   __setitem__r   r$   s     r   test_setitemzDictVersionTests.test_setitem?   s    MMOO 	""1amS#>>>""1amS#>>> 	""1amS!<<<""1amS!<<<<<r   c                 \   t                      }|                                 }|                     ||j        d|           |                     ||j        d|           |                     ||j        |           |                     |          }|                     ||j        |           d S )Nkeyr=   )objectr%   r   r9   r!   update)r   valuer$   r6   s       r   test_setitem_same_valuez(DictVersionTests.test_setitem_same_valueJ   s    MMOO 	""1amUEBBB 	&&q!-FFF 	&&q!(&>>>]]u]%%&&q!(B77777r   c                     G d d          } |            } |            }|                      ||k               |                     ||k               |                     ||           |                                 }|                     ||j        d|           |                     |d         |           |                     ||j        d|           |                     |d         |           |                     ||j        |           |                     |d         |           |                     |          }|                     ||j        |           |                     |d         |           d S )Nc                       e Zd Zd ZdS )8DictVersionTests.test_setitem_equal.<locals>.AlwaysEqualc                     dS )NT )r   others     r   __eq__z?DictVersionTests.test_setitem_equal.<locals>.AlwaysEqual.__eq__^   s    tr   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)***(((MMOO""1amUFCCCah''' 	""1amUFCCCah''' 	""1ahF";;;ah''']]v]&&""1ah333ah'''''r   c                     |                                  }|                     ||j        dd           |                     ||j        dd           d S )Nr=   rR   rS   )r%   r   
setdefaultr!   r:   s     r   test_setdefaultz DictVersionTests.test_setdefaulty   sQ    MMOO 	""1alE8DDD 	&&q!,xHHHHHr   c                     |                      d          }|                     ||j        d           |                     || j        t
          |j        d           d S NrA   r>   r=   )r%   r   __delitem__r!   assertRaisesKeyErrorr:   s     r   test_delitemzDictVersionTests.test_delitem   se    MMgM&& 	""1amU;;; 	&&q$*;X'(}e	= 	= 	= 	= 	=r   c                     |                      d          }|                     ||j        d           |                     || j        t
          |j        d           d S rY   )r%   r   popr!   r[   r\   r:   s     r   test_popzDictVersionTests.test_pop   se    MMgM&& 	""1aeU333 	&&q$*;X'(ue	5 	5 	5 	5 	5r   c                     |                      d          }|                     ||j                   |                     || j        t
          |j                   d S NrA   r>   )r%   r   popitemr!   r[   r\   r:   s     r   test_popitemzDictVersionTests.test_popitem   sa    MMgM&& 	""1ai000 	&&q$*;X'(y	2 	2 	2 	2 	2r   c                    |                      d          }|                     ||j                   |                     ||j        d           |                      d          }|                     ||j        |           d S )NrA   r>   z	new valuezvalue 3)r%   r!   r@   r   r5   s      r   test_updatezDictVersionTests.test_update   s    MMgM&& 	&&q!(333 	""1ahK"@@@]]y]))""1ah33333r   c                     |                      d          }|                     ||j                   |                     ||j                   d S rb   )r%   r   clearr!   r:   s     r   
test_clearzDictVersionTests.test_clear   sO    MMgM&& 	""1ag... 	&&q!'2222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      s       I  ( ( (
  
	 	 	  
0 0 0& & &	= 	= 	=8 8 8$( ( (:I I I= = =5 5 52 2 2
4 
4 
43 3 3 3 3r   r   c                       e Zd ZdS )DictN)rJ   rK   rL   rG   r   r   rk   rk      s        Dr   rk   c                       e Zd ZeZdS )DictSubtypeVersionTestsN)rJ   rK   rL   rk   r#   rG   r   r   rm   rm      s        IIIr   rm   __main__)__doc__unittesttest.supportr   import_moduler   TestCaser   r   rk   rm   rJ   mainrG   r   r   <module>ru      s      & & & & & & (M'44	g3 g3 g3 g3 g3x( g3 g3 g3T	 	 	 	 	4 	 	 	    .    zHMOOOOO r   