
    dafzW                     ~    d dl Z d dlZd dlZd dlmZ  G d de j
                        Z G d de      Z G d de      Zy)	    N)C_RECURSION_LIMITc                   |    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 Zd Zd Zd Zy)BasicTestMappingProtocolNc                     ddddS )z^Return a dictionary of values which are invariant by storage
        in the object under test.2value1         )1key1key2 selfs    -/root/Python-3.12.4/Lib/test/mapping_tests.py
_referencez#BasicTestMappingProtocol._reference   s     '::    c                 "    | j                         S )zReturn an empty mapping object)	type2testr   s    r   _empty_mappingz'BasicTestMappingProtocol._empty_mapping   s    ~~r   c                 `    | j                         }|j                         D ]
  \  }}|||<    |S )zKReturn a mapping object with the value contained in data
        dictionary)r   items)r   dataxkeyvalues        r   _full_mappingz&BasicTestMappingProtocol._full_mapping   s9     !**, 	JCAcF	r   c                 F   t        j                  j                  | g|i | | j                         j	                         | _        | j
                  j                         \  }}||i| _        | j
                  j                         \  }}||i| _        || j
                  |<   y N)	unittestTestCase__init__r   copy	referencepopitemother	inmapping)r   argskwr   r   s        r   r$   z!BasicTestMappingProtocol.__init__   s    ""45$5"5*//1 ^^++-
U%[
 ^^++-
Ue#sr   c                 ,   	  j                         }t        |      } j                   j                        |u r|} j                  j	                         D ]  \  }} j                  |   |        t         j                  j                               d   	 j                  t        	fd        j                  t        |      d        j                  t              t         j                                j                  D ]  } j                  |         j                  D ]  } j                  |         j                  ||        j                          j                  |        j                  |       |r j                  d       s j                  d        fd} |t!        j                               t        j                                j                  j                                 |t!              t        j                                j                  j                                 |t!        j#                               t        j#                                j                  j#                                 |t!        j	                               t        j	                                j                  j	                                t%        t!        j	                                     \  }}t%        t!         j                  j	                                     \  	} j                  j'                  ||      |        j                  j'                  	|      |        j                  	       y )Nr   c                          S r!   r   )dknownkeys   r   <lambda>z4BasicTestMappingProtocol.test_read.<locals>.<lambda>7   s    1X; r   z#Empty mapping must compare to Falsez!Full mapping must compare to Truec                    j                  t        | d             j                  t        | d             t        |       }j                  t        |      t        |      cxk(  xr t        |      k(         y c        y )N__next____iter__)
assertTruehasattrlistset)iterlstrefr   r   s       r   check_iterandlistz=BasicTestMappingProtocol.test_read.<locals>.check_iterandlistI   sZ    OOGD*56OOGD*56T
AOOCFCH6c#h6767r   )r   dictr   r&   r   assertEqualr6   r(   keysassertRaisesKeyErrorlenassertInassertNotInassertNotEqualfailr8   valuesnextget)
r   pp1r   r   kr;   
knownvaluer.   r/   s
   `       @@r   	test_readz"BasicTestMappingProtocol.test_read,   s   !!Wt~~.6A....0 	,JCQsVU+	,

)*1-($67Q#QT^^!45 	 AMM!Q	  	#AQ"	# 	AAAq!Aq!dii=>$))?@	8
 	$qvvx.$qvvx...--/	1$q'4>4>>3F3F3HI$qxxz*D,<..//1	3$qwwy/4	?....0	2 $qwwy/*
U#D)9)9);$<=*sJ/7x4jA1%r   c                 z   | j                         | j                  j                         D ]  \  }|<   | j                     |       ! | j                  j	                         D ]  = | j                  t        fd       ! | j                         j                  | j                         | j                  t              | j                         t        j                               }| j                         j                  |       | j                  t              | j                         | j                  | j                        }t        t        |j                                     \  }t        t        | j                  j                                     \  }}| j                  |j                  |      |       | j                  |   |       | j                  |j                  ||      |       | j                  ||   |       | j                  |j                  |      |       | j!                  ||       | j                  t        |j                  |       d}|||<   | j                  |j                  ||      |       | j!                  ||       | j                  |j                  ||      |       |j#                         \  }| j!                  |       | j                  || j                            | j                         | j                  t        j"                         y )Nc                          S r!   r   )r   rI   s   r   r0   z5BasicTestMappingProtocol.test_write.<locals>.<lambda>e   s    qv r   i  )r   r&   r   r=   r>   r?   r@   updater<   r6   r   rG   r8   r(   
setdefaultpoprC   r'   )	r   r   r   r.   r/   rL   defaultr   rI   s	          @@r   
test_writez#BasicTestMappingProtocol.test_write\   s   !....0 	,JCAcFQsVU+	, >>&&( 	7C#h6	7 !	 a$..1QWWY!	a$..1t~~.$qwwy/*
U#D)9)9);$<=*c:6>3'h
;ZH8j1x*51%(AEE84 (x1:>1%x17;YY[
Ua s 34



(AII.r   c                 `    | j                  | j                         | j                                y r!   )r=   r   r   s    r   test_constructorz)BasicTestMappingProtocol.test_constructor   s$    ,,.0C0C0EFr   c                    | j                  | j                                 | j                  | j                         | j                  t        | j                               du        | j                  t        | j                        du        y )NFT)r4   r   r&   boolr   s    r   	test_boolz"BasicTestMappingProtocol.test_bool   sc    D//112'T0023u<=T^^,45r   c                    | j                         }| j                  t        |j                               g        | j                  }| j                  t        | j                  j                               d   |j                                | j                  t        | j                  j                               d   |j                                | j                  t        |j                  d        y Nr   )r   r=   r6   r>   r&   rB   r)   rC   r(   r?   	TypeErrorr   r.   s     r   	test_keysz"BasicTestMappingProtocol.test_keys   s    !affh,NNd4>>..01!4affh?djjoo/03QVVX>)QVVT2r   c                     | j                         }| j                  t        |j                               g        | j	                  t
        |j                  d        y r!   )r   r=   r6   rF   r?   r\   r]   s     r   test_valuesz$BasicTestMappingProtocol.test_values   sA    !ahhj)2.)QXXt4r   c                     | j                         }| j                  t        |j                               g        | j	                  t
        |j                  d        y r!   )r   r=   r6   r   r?   r\   r]   s     r   
test_itemsz#BasicTestMappingProtocol.test_items   s@    !aggi"-)QWWd3r   c                 Z    | j                         }| j                  t        |      d       y r[   )r   r=   rA   r]   s     r   test_lenz!BasicTestMappingProtocol.test_len   s$    !Q#r   c                    | j                   }| j                  |t        | j                  j	                               d      t        | j                  j                               d          | j                  t        |j                         y r[   )	r&   r=   r6   r)   r>   rF   r?   r\   __getitem__r]   s     r   test_getitemz%BasicTestMappingProtocol.test_getitem   sg    NN4 3 3 56q9:dnn3356q9	; 	)Q]]3r   c                    | j                         }|j                  | j                         | j                  t	        |j                               t	        | j                  j                                      | j                         }|j                          | j                  || j                                | j                         }|j                  | j                  j                                | j                  t	        |j                               t	        | j                  j                                      | j                         }|j                  | j                  j                                | j                  t	        |j                               t	        | j                  j                                      | j                  t        t        f|j                  d       |  G fdd      }|j                          |j                   |              t        |j                               }t        | j                  j                               }| j                  ||        G d dt              | j                         } G fdd      }| j                  |j                   |              |j                           G fdd      }| j                  |j                   |               G fd	d      }| j                  |j                   |              | j                         } G fd
dt              }| j                  |j                   |              | j                  t        |j                  dg       y )N*   c                   $    e Zd Z fdZd Zd Zy)<BasicTestMappingProtocol.test_update.<locals>.SimpleUserDictc                 (    j                   | _        y r!   )r&   r.   )r   	outerselfs    r   r$   zEBasicTestMappingProtocol.test_update.<locals>.SimpleUserDict.__init__   s    ",,r   c                 6    | j                   j                         S r!   r.   r>   r   s    r   r>   zABasicTestMappingProtocol.test_update.<locals>.SimpleUserDict.keys       vv{{}$r   c                      | j                   |   S r!   r.   r   is     r   rf   zHBasicTestMappingProtocol.test_update.<locals>.SimpleUserDict.__getitem__       vvay r   N__name__
__module____qualname__r$   r>   rf   )rm   s   r   SimpleUserDictrk      s    -%!r   rz   c                       e Zd Zy)1BasicTestMappingProtocol.test_update.<locals>.ExcNrw   rx   ry   r   r   r   Excr|          r   r~   c                       e Zd Z fdZy)=BasicTestMappingProtocol.test_update.<locals>.FailingUserDictc                     r!   r   r   r~   s    r   r>   zBBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys       	r   N)rw   rx   ry   r>   r~   s   r   FailingUserDictr      s    r   r   c                       e Zd Z fdZd Zy)r   c                 *     G fdd      } |       S )Nc                   $    e Zd Zd Zd Z fdZy)UBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIterc                     d| _         y Nr
   rt   r   s    r   r$   z^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__init__   s	    !"r   c                     | S r!   r   r   s    r   r3   z^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__iter__       #r   c                 0    | j                   rd| _         y)Nr   ar   r   s    r   r2   z^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__next__   s    66%&DF#&!	r   Nrw   rx   ry   r$   r3   r2   r   s   r   	BogonIterr      s    #$"r   r   r   )r   r   r~   s     r   r>   zBBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys   s    	" 	" !{"r   c                     |S r!   r   )r   r   s     r   rf   zIBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.__getitem__   s    
r   Nrw   rx   ry   r>   rf   r   s   r   r   z=BasicTestMappingProtocol.test_update.<locals>.FailingUserDict   s    #r   c                       e Zd Zd Z fdZy)r   c                 $     G d d      } |       S )Nc                       e Zd Zd Zd Zd Zy)r   c                 $    t        d      | _        y )Nr   )ordrt   r   s    r   r$   z^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__init__   s    !$Sr   c                     | S r!   r   r   s    r   r3   z^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__iter__   r   r   c                     | j                   t        d      k  r,t        | j                         }| xj                   dz  c_         |S t        )Nzr
   )rt   r   chrStopIteration)r   rtns     r   r2   z^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__next__   s7    66SX-"%dff+C FFaKF#&J++r   Nr   r   r   r   r   zUBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter   s    *$,r   r   r   )r   r   s     r   r>   zBBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys   s    
, 
, !{"r   c                     r!   r   )r   r   r~   s     r   rf   zIBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.__getitem__   r   r   Nr   r   s   r   r   z=BasicTestMappingProtocol.test_update.<locals>.FailingUserDict   s    #r   c                       e Zd Zd Z fdZy)4BasicTestMappingProtocol.test_update.<locals>.badseqc                     | S r!   r   r   s    r   r3   z=BasicTestMappingProtocol.test_update.<locals>.badseq.__iter__      r   c                             r!   r   r   s    r   r2   z=BasicTestMappingProtocol.test_update.<locals>.badseq.__next__  
    er   Nrw   rx   ry   r3   r2   r   s   r   badseqr         r   r   r	   )r   rP   r(   r=   r6   r   r?   r\   AttributeErrorclearsortedr&   	Exceptionobject
ValueError)	r   r.   rz   i1i2r   r   r~   rm   s	          @@r   test_updatez$BasicTestMappingProtocol.test_update   s   !	aggi$tzz/?/?/A*BC !	
D//12 !	!!#$aggi$tzz/?/?/A*BC !	!!#$aggi$tzz/?/?/A*BC 	9n5qxxD		! 	! 	
		!"AGGIDNN((*+R ")"!	 	 	#qxx):;			 	 	#qxx):;	 	  	#qxx):;!	V 	 	#qxx2*ahh<r   c                    | j                         }| j                  |j                  t        | j                  j                               d         d u        | j                  |j                  t        | j                  j                               d   d      d       | j                  }| j                  |j                  t        | j                  j                               d         d u        | j                  |j                  t        | j                  j                               d   d      d       | j                  |j                  t        | j                  j                               d         t        | j                  j                               d          | j                  |j                  t        | j                  j                               d   d      t        | j                  j                               d          | j                  t        |j                         | j                  t        |j                  d d d        y )Nr   r   )r   r4   rH   r6   r(   r>   r=   r&   r)   rF   r?   r\   r]   s     r   test_getz!BasicTestMappingProtocol.test_get  s   !d4::??#45a89TABtDJJOO$56q91=qANNd4::??#45a89TABtDJJOO$56q91=qAtDNN$7$7$9:1=>dnn3356q9	;tDNN$7$7$9:1=qAdnn3356q9	;)QUU+)QUUD$=r   c                 d    | j                         }| j                  t        |j                         y r!   )r   r?   r\   rQ   r]   s     r   test_setdefaultz(BasicTestMappingProtocol.test_setdefault  s$    !)Q\\2r   c                     | j                         }| j                  t        |j                         | j                  t        |j                  d       y Nri   )r   r?   r@   r'   r\   r]   s     r   test_popitemz%BasicTestMappingProtocol.test_popitem!  s:    !(AII.)QYY3r   c                    | j                         }t        | j                  j                               d   \  }}|||<   | j	                  t
        |j                  t        | j                  j                               d          | j                  |j                  |      |       | j                  t        |      d       | j	                  t
        |j                  |       y r[   )r   r6   r)   r   r?   r@   rR   r(   r>   r=   rA   r   r.   rK   vs       r   test_popz!BasicTestMappingProtocol.test_pop&  s    !DNN((*+A.1!(AEE4

0A+B1+EFq1%Q#(AEE1-r   )rw   rx   ry   r   r   r   r   r$   rM   rT   rV   rY   r^   r`   rb   rd   rg   r   r   r   r   r   r   r   r   r   r      sh     I; $.&`(/TG6354$4]=B>34
	.r   r   c                   l    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 Zy)TestMappingProtocolc                     t         j                  |        | j                  | j                         | j                         u       | j	                  | j                  dd      ddd       y )Nr
   r   r   y)r   rV   r4   r   r=   r   r   s    r   rV   z$TestMappingProtocol.test_constructor3  sU     11$7++-T5H5H5JJK!q13CDr   c                 `   t         j                  |        | j                  | j                                 | j                  | j	                  ddi             | j                  t        | j                               du        | j                  t        | j	                  ddi            du        y )Nr   r   FT)r   rY   r4   r   r   rX   r   s    r   rY   zTestMappingProtocol.test_bool8  s     **40D//112**C:67T0023u<=T//c
;<DEr   c                 T   t         j                  |        | j                         }| j                  t	        |j                               g        | j                  ddd      }|j                         }| j                  d|       | j                  d|       | j                  d|       y )Nr
   r   r   br   r   c)	r   r^   r   r=   r6   r>   r   rB   rC   )r   r.   rK   s      r   r^   zTestMappingProtocol.test_keys?  s     **40!affh,QQ/0FFHc1c1a r   c                     t         j                  |        | j                  ddi      }| j                  t	        |j                               dg       y )Nr
   r   )r   r`   r   r=   r6   rF   r]   s     r   r`   zTestMappingProtocol.test_valuesI  sA     ,,T2!u%ahhj)A3/r   c                     t         j                  |        | j                  ddi      }| j                  t	        |j                               dg       y )Nr
   r   r
   r   )r   rb   r   r=   r6   r   r]   s     r   rb   zTestMappingProtocol.test_itemsN  s@     ++D1!u%aggi6(3r   c                 h   | j                         }| j                  d|       | j                  d|v       | j                  d|v       | j                  ddd      }| j	                  d|       | j	                  d|       | j                  d|       | j                  t        |j                         y )Nr   r
   r   r   r   r   )r   rC   r4   r   rB   r?   r\   __contains__r]   s     r   test_containsz!TestMappingProtocol.test_containsT  s    !a SAX'1%QQ/0c1c1a )Q^^4r   c                     t         j                  |        | j                  ddd      }| j                  t	        |      d       y )Nr
   r   r   )r   rd   r   r=   rA   r]   s     r   rd   zTestMappingProtocol.test_len`  s9     ))$/QQ/0Q#r   c                    t         j                  |        | j                  ddd      }| j                  |d   d       | j                  |d   d       d|d<   d|d<   | j                  |d   d       | j                  |d   d       |d= | j                  |ddd	       | j	                  t
        |j                         y )
Nr
   r   r   r   r   r   r      )r   r   )r   rg   r   r=   r?   r\   rf   r]   s     r   rg   z TestMappingProtocol.test_getiteme  s     --d3QQ/03#3###3#3#cF!!,-)Q]]3r   c                     | j                  dddd      }|j                          | j                  |i        | j                  t        |j                  d        y Nr
   r   r   r	   )r   r   r=   r?   r\   r]   s     r   
test_clearzTestMappingProtocol.test_clears  sG    !qA/		B)QWWd3r   c                 $   t         j                  |        | j                         }|j                  ddi       |j                  ddi       |j                  dddd       | j	                  |dddd       |j                          | j	                  |dddd       | j                         }|j                  d       |j                  d       |j                  ddd	       | j	                  |dddd	       | j                         }|j                  d
dg       | j	                  |ddd       | j                         }|j                  d
dgdd       | j	                  |ddd       | j                  ddd      }|j                  | j                  dddd      j                                | j	                  |ddddd        G d d      }|j                          |j                   |              | j	                  |dddd       y )Nr
   d   r      r   r	   )r   )r   )r   r   r   )r   r   )r   r   r   r   r      )r
   r      )r
   r   r   r   c                       e Zd Zd Zd Zd Zy)7TestMappingProtocol.test_update.<locals>.SimpleUserDictc                     dddd| _         y r   rr   r   s    r   r$   z@TestMappingProtocol.test_update.<locals>.SimpleUserDict.__init__  s    ar   c                 6    | j                   j                         S r!   ro   r   s    r   r>   z<TestMappingProtocol.test_update.<locals>.SimpleUserDict.keys  rp   r   c                      | j                   |   S r!   rr   rs   s     r   rf   zCTestMappingProtocol.test_update.<locals>.SimpleUserDict.__getitem__  ru   r   Nrv   r   r   r   rz   r     s    )%!r   rz   )r   r   r   rP   r=   r   r   r   )r   r.   rz   s      r   r   zTestMappingProtocol.test_updatez  s    ,,T2!	!C	!B	Aa!qAO, 	

qAO, !	3	2	1Qq12 !	*i()"-. !	*i(A3N+ !qz*	##qAO4::<=qAa01	! 	! 	
		!"qAO,r   c                 p  	 | j                  | j                  j                  d      d d d d       | j                         }| j	                  |j                  d      |u       | j                  |j                  d      d d d d       | j                  |j                  dd      ddd       | j                  |j                  g       i        d }| j                  |j                   |             dd i       | j                  t        i j                  d        G d d	| j                        }| j                  |j                  d
      d
d i       | j                   |       j                  d
      d
d i       | j	                  |j                  d
      j                  |u        | j	                   |       j                  d
      j                  |u        | j	                  t        |j                  d
            |u         G d d| j                        }|j                  d      }| j                  |d d d       | j                  |t        j                         | j                  t        t        j                          G d dt              	 G 	fdd| j                        }| j                  	|j                  dg        G 	fddt              }| j                  	| j                  j                   |               G 	fdd| j                        }| j                  	|j                  dg       y )Nabc)r   r   r   )r   r   r   c               3      K   d y wr   r   r   r   r   gz,TestMappingProtocol.test_fromkeys.<locals>.g  s     Gs   r
   r   c                       e Zd Zy)3TestMappingProtocol.test_fromkeys.<locals>.dictlikeNr}   r   r   r   dictliker     r   r   r   r   c                       e Zd Zd Zy)1TestMappingProtocol.test_fromkeys.<locals>.mydictc                 *    t        j                         S r!   collectionsUserDictclss    r   __new__z9TestMappingProtocol.test_fromkeys.<locals>.mydict.__new__      "++--r   Nrw   rx   ry   r   r   r   r   mydictr         .r   r   abr   c                       e Zd Zy).TestMappingProtocol.test_fromkeys.<locals>.ExcNr}   r   r   r   r~   r     r   r   r~   c                       e Zd Z fdZy)3TestMappingProtocol.test_fromkeys.<locals>.baddict1c                             r!   r   )r   r*   kwargsr~   s      r   r$   z<TestMappingProtocol.test_fromkeys.<locals>.baddict1.__init__  r   r   N)rw   rx   ry   r$   r   s   r   baddict1r         r   r   c                       e Zd Zd Z fdZy)1TestMappingProtocol.test_fromkeys.<locals>.BadSeqc                     | S r!   r   r   s    r   r3   z:TestMappingProtocol.test_fromkeys.<locals>.BadSeq.__iter__  r   r   c                             r!   r   r   s    r   r2   z:TestMappingProtocol.test_fromkeys.<locals>.BadSeq.__next__  r   r   Nr   r   s   r   BadSeqr     r   r   r   c                       e Zd Z fdZy)3TestMappingProtocol.test_fromkeys.<locals>.baddict2c                             r!   r   )r   r   r   r~   s      r   __setitem__z?TestMappingProtocol.test_fromkeys.<locals>.baddict2.__setitem__  r   r   N)rw   rx   ry   r  r   s   r   baddict2r    r   r   r  )r=   r   fromkeysr   r4   r?   r\   	__class__typeassertIsInstancer   r   r<   r   r   )
r   r.   r   r   r   udr   r   r  r~   s
            @r   test_fromkeysz!TestMappingProtocol.test_fromkeys  s   007dRV9WX!AJJu-24E*4T,JKE!,aj9B,	AC1T(3)R[[!4,t~~,**3/#d<,,S1C:>))#.88HDE
++C0::hFGX..s34@A	.T^^ 	. __T"$D12b+"6"67)T]]3")"	t~~ 	 	#x001#6	V 	 	#t~~66A	t~~ 	 	#x001#6r   c                 l   | j                  dddd      }| j                  |j                         dddd       | j                         }| j                  |j                         |       | j	                  |j                         |j
                         | j                  t        |j                  d        y r   )r   r=   r%   r   r	  r  r?   r\   r]   s     r   	test_copyzTestMappingProtocol.test_copy  s    !qA/a1?3!1%affh4)QVVT2r   c                    t         j                  |        | j                         }| j                  |j	                  d      d u        | j                  |j	                  dd      d       | j                  ddd      }| j                  |j	                  d      d u        | j                  |j	                  dd      d       | j                  |j	                  d      d       | j                  |j	                  dd      d       y )Nr   r   r
   r   r   r   )r   r   r   r4   rH   r=   r   r]   s     r   r   zTestMappingProtocol.test_get  s     ))$/!c
d*+sA*aq12c
d*+sA*sQ'sA*r   c                    t         j                  |        | j                         }| j                  |j	                  d      d u        |j	                  dg        | j                  |j	                  d      d u        |j	                  dg       j                  d       | j                  |d   d   d       |j	                  dg       j                  d       | j                  t        |d         d       y )Nkey0r   r   r   r   r   )r   r   r   r4   rQ   appendr=   rA   r]   s     r   r   z#TestMappingProtocol.test_setdefault  s     006!V,45	VR V,45	UB&&q)5!a(	UB&&q)QuX*r   c           	         t         j                  |        dD ]1  }t        d      D ]  }d|z  }| j                         }| j                         }t        |      D ]$  }||t	        |      <   |dk  s||t	        |      <   & |dkD  r|j                         }t        |      D ]~  }|j                         x\  }}}	| j                  |t        |             |j                         x\  }
}}| j                  |t        |
             | j                  |dk  xr |	|k7           | j                  |        | j                  |        " 4 y )N)r
      r   r   )
r   r   ranger   reprr%   r'   r=   intr4   )r   copymodelog2sizesizer   r   rt   kavatakbvbtbs                r   r   z TestMappingProtocol.test_popitem  s@    --d3 	'H ""I '({'')'')t 'A!"Ad1gJ!|%&$q'
' a<At DA"#))+-FBR$$RR1"#))+-FBR$$RR1OO1(Ar$BCD A&A&#'	'r   c                     t         j                  |        | j                         }d\  }}| j                  |j	                  ||      |       |||<   | j                  |j	                  |d      |       y )N)r   defr
   )r   r   r   r=   rR   r   s       r   r   zTestMappingProtocol.test_pop  sf     ))$/ !1q!a(!q!a(r   N)rw   rx   ry   rV   rY   r^   r`   rb   r   rd   rg   r   r   r  r  r   r   r   r   r   r   r   r   r   2  sV    E
F!0
4
5$
44,-\-7^3	+	+'0	)r   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestHashMappingProtocolc                    t         j                  |         G d dt               G fddt              }| j	                         }d| |       <   | j                  t        |j                  d        G fddt              }| j	                         } |       }d||<   d	|_        | j                  |j                  |       y )
Nc                       e Zd Zy)1TestHashMappingProtocol.test_getitem.<locals>.ExcNr}   r   r   r   r~   r'    r   r   r~   c                       e Zd Z fdZd Zy)3TestHashMappingProtocol.test_getitem.<locals>.BadEqc                             r!   r   r   r(   r~   s     r   __eq__z:TestHashMappingProtocol.test_getitem.<locals>.BadEq.__eq__   r   r   c                      y)N   r   r   s    r   __hash__z<TestHashMappingProtocol.test_getitem.<locals>.BadEq.__hash__"  s    r   Nrw   rx   ry   r,  r/  r   s   r   BadEqr)    s    r   r1  ri      c                       e Zd ZdZ fdZy)5TestHashMappingProtocol.test_getitem.<locals>.BadHashFc                 ,    | j                   r        yr   rE   r   s    r   r/  z>TestHashMappingProtocol.test_getitem.<locals>.BadHash.__hash__+      99%Kr   Nrw   rx   ry   rE   r/  r   s   r   BadHashr4  )      Dr   r9  T)	r   rg   r   r   r   r?   r@   rf   rE   )r   r1  r.   r9  r   r~   s        @r   rg   z$TestHashMappingProtocol.test_getitem  s    ((.")"	F 	 !%'
(AMM26	f 	 !I!#q}}a0r   c                     t         j                  |         G d d| j                        }|j                  d      }| j	                  |d d d       | j                  |t        j                         y )Nc                       e Zd Zd Zy)5TestHashMappingProtocol.test_fromkeys.<locals>.mydictc                 *    t        j                         S r!   r   r   s    r   r   z=TestHashMappingProtocol.test_fromkeys.<locals>.mydict.__new__:  r   r   Nr   r   r   r   r   r=  9  r   r   r   r   r   )r   r  r   r  r=   r	  r   r   )r   r   r
  s      r   r  z%TestHashMappingProtocol.test_fromkeys7  s[    ))$/	.T^^ 	. __T"$D12b+"6"67r   c                     t         j                  |         G d dt               G fddt              }| j	                         } |       }d||<   d|_        | j                  |j                  |       y )Nc                       e Zd Zy)-TestHashMappingProtocol.test_pop.<locals>.ExcNr}   r   r   r   r~   rA  C  r   r   r~   c                       e Zd ZdZ fdZy)1TestHashMappingProtocol.test_pop.<locals>.BadHashFc                 ,    | j                   r        yr   r6  r   s    r   r/  z:TestHashMappingProtocol.test_pop.<locals>.BadHash.__hash__G  r7  r   Nr8  r   s   r   r9  rC  E  r:  r   r9  ri   T)r   r   r   r   r   rE   r?   rR   r   r9  r.   r   r~   s       @r   r   z TestHashMappingProtocol.test_pop@  sb    $$T*")"	f 	 !I!#quua(r   c                     | j                         }d|d<   	 d}|D ]%  }d||dz   <   |dk\  r| j                  d       |dz  }' y # t        $ r Y y w xY w)Nr
   r   z7changing dict size during iteration doesn't raise Error)r   rE   RuntimeError)r   r.   countrt   s       r   test_mutatingiterationz.TestHashMappingProtocol.test_mutatingiterationS  sp    !!	E !A#A:IIWX
	
  		s   ,A 	AAc                    | j                         }| j                  t        |      d       d|d<   | j                  t        |      d       | j                         }||d<   | j                  t        |      d        G d dt               G fdd	t              }| j                  d |       i      }| j                  t        |       y )
Nz{}r   r
   z{1: 2}z
{1: {...}}c                       e Zd Zy).TestHashMappingProtocol.test_repr.<locals>.ExcNr}   r   r   r   r~   rL  i  r   r   r~   c                       e Zd Z fdZy)2TestHashMappingProtocol.test_repr.<locals>.BadReprc                             r!   r   r   s    r   __repr__z;TestHashMappingProtocol.test_repr.<locals>.BadRepr.__repr__l  r   r   N)rw   rx   ry   rP  r   s   r   BadReprrN  k  r   r   rQ  )r   r=   r  r   r   r   r?   )r   r.   rQ  r~   s      @r   	test_reprz!TestHashMappingProtocol.test_repr`  s    !a$'!a(+!!a,/")"	f 	 79~.#tQ'r   c                     | j                         }t        t        dz         D ]  }|}| j                         }||d<    | j                  t        t
        |       y r   )r   r  r   r?   RecursionErrorr  )r   r.   rt   d0s       r   test_repr_deepz&TestHashMappingProtocol.test_repr_deepr  sZ    !(1,- 	AB##%AAaD	 	.$2r   c                    | j                  | j                         | j                                | j                  | j                  ddi      | j                  ddi              G d dt               G fddt              | j                          di      | j                  ddi      | j                  fd       | j                  fd       y )	Nr
   r   c                       e Zd Zy),TestHashMappingProtocol.test_eq.<locals>.ExcNr}   r   r   r   r~   rY    r   r   r~   c                       e Zd Z fdZd Zy)/TestHashMappingProtocol.test_eq.<locals>.BadCmpc                             r!   r   r+  s     r   r,  z6TestHashMappingProtocol.test_eq.<locals>.BadCmp.__eq__  r   r   c                      yr   r   r   s    r   r/  z8TestHashMappingProtocol.test_eq.<locals>.BadCmp.__hash__  s    r   Nr0  r   s   r   BadCmpr[    s    r   r^  c                               dk(  S r   r   )r^  s   r   r0   z1TestHashMappingProtocol.test_eq.<locals>.<lambda>  s    vx{ r   c                       k(  S r!   r   )d1d2s   r   r0   z1TestHashMappingProtocol.test_eq.<locals>.<lambda>  s    r2v r   )r=   r   r   r   r   r?   )r   r^  r~   ra  rb  s    @@@@r   test_eqzTestHashMappingProtocol.test_eqz  s    ,,.0C0C0EF++QF3++QF3	5 	#)"	V 	 1.A'#23#~.r   c                     t         j                  |         G d dt               G fddt              }| j	                         } |       }d||<   d|_        | j                  |j                  |g        y )Nc                       e Zd Zy)4TestHashMappingProtocol.test_setdefault.<locals>.ExcNr}   r   r   r   r~   rf    r   r   r~   c                       e Zd ZdZ fdZy)8TestHashMappingProtocol.test_setdefault.<locals>.BadHashFc                 ,    | j                   r        yr   r6  r   s    r   r/  zATestHashMappingProtocol.test_setdefault.<locals>.BadHash.__hash__  r7  r   Nr8  r   s   r   r9  rh    r:  r   r9  ri   T)r   r   r   r   r   rE   r?   rQ   rE  s       @r   r   z'TestHashMappingProtocol.test_setdefault  sd    ++D1")"	f 	 !I!#q||Q3r   N)rw   rx   ry   rg   r  r   rI  rR  rV  rc  r   r   r   r   r$  r$    s*    188)&($3/$4r   r$  )	r"   r   systest.supportr   r#   r   r   r$  r   r   r   <module>rl     sE      
 *g.x00 g.T	d)2 d)ND41 D4r   