
    ;eWW                     |    d dl Z d dlZd dlZ G d de j                  Z G d de          Z G d de          ZdS )    Nc                   ~    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dS )BasicTestMappingProtocolNc                     	 ddddS )N2value1         )1key1key2 selfs    )/usr/lib/python3.11/test/mapping_tests.py
_referencez#BasicTestMappingProtocol._reference   s    	%':::    c                 ,    	 |                                  S N)	type2testr   s    r   _empty_mappingz'BasicTestMappingProtocol._empty_mapping   s    ,~~r   c                 n    	 |                                  }|                                D ]
\  }}|||<   |S r   )r   items)r   dataxkeyvalues        r   _full_mappingz&BasicTestMappingProtocol._full_mapping   sC    	!!**,, 	 	JCAcFFr   c                 8   t          j        j        | g|R i | |                                                                 | _        | j                                        \  }}||i| _        | j                                        \  }}||i| _        || j        |<   d S r   )	unittestTestCase__init__r   copy	referencepopitemother	inmapping)r   argskwr   r   s        r   r#   z!BasicTestMappingProtocol.__init__   s    "45$555"555**//11 ^++--
U%[
 ^++--
Ue#sr   c                 r   	                                   }t          |          }                      j                  |u r|} j                                        D ]!\  }}                     |         |           "t           j                                                  d         	 	                    t          	fd                                t          |          d                                t                    t           j                              j        D ]}                     |            j        D ]}                     |                                ||                                                                |                                |           |r                     d           s                     d            fd} |t!                                                    t                                                     j                                                    |t!                    t                                                     j                                                    |t!                                                    t                                                     j                                                    |t!                                                    t                                                     j                                                   t%          t!                                                              \  }}t%          t!           j                                                            \  	}                                         ||          |                                                    	|          |                                	           d S )Nr   c                                S r   r   )dknownkeys   r   <lambda>z4BasicTestMappingProtocol.test_read.<locals>.<lambda>6   s    1X; r   z#Empty mapping must compare to Falsez!Full mapping must compare to Truec                 F                        t          | d                                          t          | d                     t          |           }                     t          |          t          |          cxk    ot          |          k    nc            d S )N__next____iter__)
assertTruehasattrlistset)iterlstrefr   r   s       r   check_iterandlistz=BasicTestMappingProtocol.test_read.<locals>.check_iterandlistH   s    OOGD*55666OOGD*55666T

AOOCFFCHH6666c#hh666677777r   )r   dictr   r%   r   assertEqualr5   r'   keysassertRaisesKeyErrorlenassertInassertNotInassertNotEqualfailr7   valuesnextget)
r   pp1r   r   kr:   
knownvaluer-   r.   s
   `       @@r   	test_readz"BasicTestMappingProtocol.test_read+   s   !!!WWt~..66A...00 	, 	,JCQsVU++++
))**1-($6$6$6$6$6777Q###QT^!4!4555 	  	 AMM!Q 	# 	#AQ""""AAAq!!!Aq!!!>dii=>>>@$))?@@@	8 	8 	8 	8 	8
 	$qvvxx..$qvvxx...--//	1 	1 	1$q''4>>4>3F3F3H3HIII$qxxzz**D,<,<.//11	3 	3 	3$qwwyy//4		??...00	2 	2 	2 $qwwyy//**
U#D)9)9););$<$<==*sJ//777x44jAAA1%%%%%r   c                 ~   |                                  | j                                        D ]&\  }|<   |                              |           '| j                                        D ]$= |                     t          fd           %|                                                      | j                   |                     t                    | j                   t                                                    }|                                                      |           |                     t                    | j                   | 
                    | j                  }t          t          |                                                    \  }t          t          | j                                                            \  }}|                     |                    |          |           |                     |         |           |                     |                    ||          |           |                     ||         |           |                     |                    |          |           |                     ||           |                     t          |j        |           d}|||<   |                     |                    ||          |           |                     ||           |                     |                    ||          |           |                                \  }|                     |           |                     || j                            |                                  |                     t          j                   d S )Nc                                S r   r   )r   rH   s   r   r/   z5BasicTestMappingProtocol.test_write.<locals>.<lambda>d   s    qv r   i  )r   r%   r   r<   r=   r>   r?   updater;   r5   r   rF   r7   r'   
setdefaultpoprB   r&   )	r   r   r   r-   r.   rK   defaultr   rH   s	          @@r   
test_writez#BasicTestMappingProtocol.test_write[   s<   !!...00 	, 	,JCAcFQsVU++++>&&(( 	7 	7C#h6666!!	   a$.111QWWYY!!	a$.111t~..$qwwyy//**
U#D)9)9););$<$<==*c:66>>>3'''h
;;ZHHH8j111x*5551%%%(AE8444 (x11:>>>1%%%x117;;;YY[[
Ua   s 3444




(AI.....r   c                 z    |                      |                                 |                                            d S r   )r<   r   r   s    r   test_constructorz)BasicTestMappingProtocol.test_constructor   s6    ,,..0C0C0E0EFFFFFr   c                 H   |                      |                                             |                      | j                   |                      t          |                                           du            |                      t          | j                  du            d S )NFT)r3   r   r%   boolr   s    r   	test_boolz"BasicTestMappingProtocol.test_bool   s    D//111222'''T002233u<===T^,,455555r   c                 0   |                                  }|                     t          |                                          g            | j        }|                     t          | j                                                  d         |                                           |                     t          | j                                                  d         |                                           | 	                    t          |j        d            d S Nr   )r   r<   r5   r=   r%   rA   r(   rB   r'   r>   	TypeErrorr   r-   s     r   	test_keysz"BasicTestMappingProtocol.test_keys   s    !!affhh,,,Nd4>..0011!4affhh???djoo//003QVVXX>>>)QVT22222r   c                     |                                  }|                     t          |                                          g            |                     t
          |j        d            d S r   )r   r<   r5   rE   r>   r[   r\   s     r   test_valuesz$BasicTestMappingProtocol.test_values   sY    !!ahhjj))2...)QXt44444r   c                     |                                  }|                     t          |                                          g            |                     t
          |j        d            d S r   )r   r<   r5   r   r>   r[   r\   s     r   
test_itemsz#BasicTestMappingProtocol.test_items   sW    !!aggii"---)QWd33333r   c                 t    |                                  }|                     t          |          d           d S rZ   )r   r<   r@   r\   s     r   test_lenz!BasicTestMappingProtocol.test_len   s5    !!Q#####r   c                 4   | j         }|                     |t          | j                                                  d                  t          | j                                                  d                    |                     t          |j                   d S rZ   )	r%   r<   r5   r(   r=   rE   r>   r[   __getitem__r\   s     r   test_getitemz%BasicTestMappingProtocol.test_getitem   s    N4 3 3 5 566q9:dn335566q9	; 	; 	; 	)Q]33333r   c                 0   |                                  }|                    | j                   |                     t	          |                                          t	          | j                                                             |                                  }|                                 |                     ||                                             |                                  }|                    | j                                                   |                     t	          |                                          t	          | j                                                             |                                  }|                    | j                                                   |                     t	          |                                          t	          | j                                                             |                     t          t          f|j        d           |  G fdd          }|	                                 |                     |                       t          |                                          }t          | j                                                  }|                     ||            G d dt                    |                                  } G fdd          }|                     |j         |                       |	                                  G fdd          }|                     |j         |                        G fd	d          }|                     |j         |                       |                                  } G fd
dt                    }|                     |j         |                       |                     t          |j        dg           d S )N*   c                   &    e Zd Z fdZd Zd ZdS )<BasicTestMappingProtocol.test_update.<locals>.SimpleUserDictc                      j         | _        d S r   )r%   r-   )r   	outerselfs    r   r#   zEBasicTestMappingProtocol.test_update.<locals>.SimpleUserDict.__init__   s    ",r   c                 4    | j                                         S r   r-   r=   r   s    r   r=   zABasicTestMappingProtocol.test_update.<locals>.SimpleUserDict.keys       v{{}}$r   c                     | j         |         S r   r-   r   is     r   re   zHBasicTestMappingProtocol.test_update.<locals>.SimpleUserDict.__getitem__       vay r   N__name__
__module____qualname__r#   r=   re   )rl   s   r   SimpleUserDictrj      sL        - - - - -% % %! ! ! ! !r   ry   c                       e Zd ZdS )1BasicTestMappingProtocol.test_update.<locals>.ExcNrv   rw   rx   r   r   r   Excr{                r   r}   c                       e Zd Z fdZdS )=BasicTestMappingProtocol.test_update.<locals>.FailingUserDictc                     r   r   r   r}   s    r   r=   zBBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys       	r   N)rv   rw   rx   r=   r}   s   r   FailingUserDictr      s.              r   r   c                        e Zd Z fdZd ZdS )r   c                 6     G fdd          } |            S )Nc                   &    e Zd Zd Zd Z fdZdS )UBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIterc                     d| _         d S Nr	   rs   r   s    r   r#   z^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__init__   s    !"r   c                     | S r   r   r   s    r   r2   z^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__iter__       #r   c                 (    | j         r	d| _         dS )Nr   ar   r   s    r   r1   z^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__next__   s    6 '%&DF#&3!	r   Nrv   rw   rx   r#   r2   r1   r   s   r   	BogonIterr      sL        # # #$ $ $" " " " " " "r   r   r   )r   r   r}   s     r   r=   zBBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys   sC    	" 	" 	" 	" 	" 	" 	" 	" 	" 	" !y{{"r   c                     |S r   r   )r   r   s     r   re   zIBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.__getitem__   s    
r   Nrv   rw   rx   r=   re   r   s   r   r   z=BasicTestMappingProtocol.test_update.<locals>.FailingUserDict   s=        # # # # #    r   c                        e Zd Zd Z fdZdS )r   c                 0     G d d          } |            S )Nc                        e Zd Zd Zd Zd ZdS )r   c                 .    t          d          | _        d S )Nr   )ordrs   r   s    r   r#   z^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__init__   s    !$Sr   c                     | S r   r   r   s    r   r2   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	   )rs   r   chrStopIteration)r   rtns     r   r1   z^BasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter.__next__   s<    6SXX--"%df++C FFaKFF#&J++r   Nr   r   r   r   r   zUBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys.<locals>.BogonIter   sA        * * *$ $ $, , , , ,r   r   r   )r   r   s     r   r=   zBBasicTestMappingProtocol.test_update.<locals>.FailingUserDict.keys   s8    
, 
, 
, 
, 
, 
, 
, 
, !y{{"r   c                     r   r   )r   r   r}   s     r   re   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dS )4BasicTestMappingProtocol.test_update.<locals>.badseqc                     | S r   r   r   s    r   r2   z=BasicTestMappingProtocol.test_update.<locals>.badseq.__iter__      r   c                                  r   r   r   s    r   r1   z=BasicTestMappingProtocol.test_update.<locals>.badseq.__next__      ceer   Nrv   rw   rx   r2   r1   r   s   r   badseqr     =                r   r   r   )r   rO   r'   r<   r5   r   r>   r[   AttributeErrorclearsortedr%   	Exceptionobject
ValueError)	r   r-   ry   i1i2r   r   r}   rl   s	          @@r   test_updatez$BasicTestMappingProtocol.test_update   s	   !!	aggii$tz/?/?/A/A*B*BCCC !!	


D//11222 !!	!!##$$$aggii$tz/?/?/A/A*B*BCCC !!	!!##$$$aggii$tz/?/?/A/A*B*BCCC 	9n5qxDDD		! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	
				!!"""AGGIIDN((**++R   """"")"""!!	 	 	 	 	 	 	 	 	 	 	#qx):):;;;					 	 	 	 	 	 	 	 	 	 	#qx):):;;;	 	 	 	 	 	 	 	 	 	  	#qx):):;;;!!	 	 	 	 	 	 	V 	 	 	 	#qx222*ah<<<<<r   c                 X   |                                  }|                     |                    t          | j                                                  d                   d u            |                     |                    t          | j                                                  d         d          d           | j        }|                     |                    t          | j                                                  d                   d u            |                     |                    t          | j                                                  d         d          d           |                     |                    t          | j                                                  d                   t          | j        	                                          d                    |                     |                    t          | j                                                  d         d          t          | j        	                                          d                    | 
                    t          |j                   | 
                    t          |j        d d d            d S )Nr   r   )r   r3   rG   r5   r'   r=   r<   r%   r(   rE   r>   r[   r\   s     r   test_getz!BasicTestMappingProtocol.test_get  s   !!d4:??#4#455a899TABBBtDJOO$5$566q91==qAAANd4:??#4#455a899TABBBtDJOO$5$566q91==qAAAtDN$7$7$9$9::1=>>dn335566q9	; 	; 	;tDN$7$7$9$9::1=qAAdn335566q9	; 	; 	;)QU+++)QUD$=====r   c                 n    |                                  }|                     t          |j                   d S r   )r   r>   r[   rP   r\   s     r   test_setdefaultz(BasicTestMappingProtocol.test_setdefault  s1    !!)Q\22222r   c                     |                                  }|                     t          |j                   |                     t          |j        d           d S Nrh   )r   r>   r?   r&   r[   r\   s     r   test_popitemz%BasicTestMappingProtocol.test_popitem   sK    !!(AI...)QY33333r   c                    |                                  }t          | j                                                  d         \  }}|||<   |                     t
          |j        t          | j                                                  d                    | 	                    |                    |          |           | 	                    t          |          d           |                     t
          |j        |           d S rZ   )r   r5   r(   r   r>   r?   rQ   r'   r=   r<   r@   r   r-   rJ   vs       r   test_popz!BasicTestMappingProtocol.test_pop%  s    !!DN((**++A.1!(AE4
0A0A+B+B1+EFFFq1%%%Q###(AE1-----r   )rv   rw   rx   r   r   r   r   r#   rL   rS   rU   rX   r]   r_   ra   rc   rf   r   r   r   r   r   r   r   r   r   r      s2        I; ; ;       $ $ $.& .& .&`(/ (/ (/TG G G6 6 63 3 35 5 54 4 4$ $ $4 4 4]= ]= ]=B> > >3 3 34 4 4
	. 	. 	. 	. 	.r   r   c                   n    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S )TestMappingProtocolc                    t                               |            |                     |                                 |                                 u           |                     |                     dd          ddd           d S )Nr	   r
   r   y)r   rU   r3   r   r<   r   r   s    r   rU   z$TestMappingProtocol.test_constructor2  sy     11$777++--T5H5H5J5JJKKK!q113C3CDDDDDr   c                    t                               |            |                     |                                             |                     |                     ddi                     |                     t          |                                           du            |                     t          |                     ddi                    du            d S )Nr   r   FT)r   rX   r3   r   r   rW   r   s    r   rX   zTestMappingProtocol.test_bool7  s     **4000D//111222**C:66777T002233u<===T//c
;;<<DEEEEEr   c                    t                               |            |                                 }|                     t	          |                                          g            |                     ddd          }|                                }|                     d|           |                     d|           |                     d|           d S )Nr	   r
   r   br   r   c)	r   r]   r   r<   r5   r=   r   rA   rB   )r   r-   rJ   s      r   r]   zTestMappingProtocol.test_keys>  s     **4000!!affhh,,,QQ//00FFHHc1c1a     r   c                     t                               |            |                     ddi          }|                     t	          |                                          dg           d S )Nr	   r
   )r   r_   r   r<   r5   rE   r\   s     r   r_   zTestMappingProtocol.test_valuesH  s[     ,,T222!u%%ahhjj))A3/////r   c                     t                               |            |                     ddi          }|                     t	          |                                          dg           d S )Nr	   r
   r	   r
   )r   ra   r   r<   r5   r   r\   s     r   ra   zTestMappingProtocol.test_itemsM  sY     ++D111!u%%aggii6(33333r   c                    |                                  }|                     d|           |                     d|v           |                     d|v           |                     ddd          }|                     d|           |                     d|           |                     d|           |                     t          |j                   d S )Nr   r	   r
   r   r   r   )r   rB   r3   r   rA   r>   r[   __contains__r\   s     r   test_containsz!TestMappingProtocol.test_containsS  s    !!a   SAX'''1%%%QQ//00c1c1a   )Q^44444r   c                     t                               |            |                     ddd          }|                     t	          |          d           d S )Nr	   r
   r   )r   rc   r   r<   r@   r\   s     r   rc   zTestMappingProtocol.test_len_  sS     ))$///QQ//00Q#####r   c                    t                               |            |                     ddd          }|                     |d         d           |                     |d         d           d|d<   d|d<   |                     |d         d           |                     |d         d           |d= |                     |ddd	           |                     t
          |j                   d S )
Nr	   r
   r   r   r   r   r      )r   r   )r   rf   r   r<   r>   r[   re   r\   s     r   rf   z TestMappingProtocol.test_getitemd  s     --d333QQ//003###3#####3###3###cF!!,,---)Q]33333r   c                     |                      dddd          }|                                 |                     |i            |                     t          |j        d            d S Nr	   r
   r   r   )r   r   r<   r>   r[   r\   s     r   
test_clearzTestMappingProtocol.test_clearr  s`    !qA//				B)QWd33333r   c                    t                               |            |                                 }|                    ddi           |                    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g           |                     |ddd           |                                 }|                    d
dgdd           |                     |ddd           |                     ddd          }|                    |                     dddd                                                     |                     |ddddd            G d d          }|                                 |                     |                       |                     |dddd           d S )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dS )7TestMappingProtocol.test_update.<locals>.SimpleUserDictc                     dddd| _         d S r   rq   r   s    r   r#   z@TestMappingProtocol.test_update.<locals>.SimpleUserDict.__init__  s    ar   c                 4    | j                                         S r   rn   r   s    r   r=   z<TestMappingProtocol.test_update.<locals>.SimpleUserDict.keys  ro   r   c                     | j         |         S r   rq   rr   s     r   re   zCTestMappingProtocol.test_update.<locals>.SimpleUserDict.__getitem__  rt   r   Nru   r   r   r   ry   r     sA        ) ) )% % %! ! ! ! !r   ry   )r   r   r   rO   r<   r   r   r   )r   r-   ry   s      r   r   zTestMappingProtocol.test_updatey  s    ,,T222!!	!C	!B	Aa!!!qAOO,,, 	



qAOO,,, !!	3	2	1Qq11222 !!	*i()))"--... !!	*i(A333NN+++ !qzz**	##qAOO44::<<===qAa00111	! 	! 	! 	! 	! 	! 	! 	! 	
				!!"""qAOO,,,,,r   c                 .  	 |                      | j                            d          d d d d           |                                 }|                     |                    d          |u           |                      |                    d          d d d d           |                      |                    dd          ddd           |                      |                    g           i            d }|                      |                     |                      dd i           |                     t          i j        d            G d d	| j                  }|                      |                    d
          d
d i           |                       |                                d
          d
d i           |                     |                    d
          j        |u            |                      |                                d
          j        |u            |                     t          |                    d
                    |u             G d d| j                  }|                    d          }|                      |d d d           | 	                    |t          j                   |                     t          t          j                    G d dt                    	 G 	fdd| j                  }|                     	|j        dg            G 	fddt                    }|                     	| j        j         |                        G 	fdd| j                  }|                     	|j        dg           d S )Nabc)r   r   r   )r   r   r   c               3      K   dV  d S r   r   r   r   r   gz,TestMappingProtocol.test_fromkeys.<locals>.g  s      GGGGGr   r	   r   c                       e Zd ZdS )3TestMappingProtocol.test_fromkeys.<locals>.dictlikeNr|   r   r   r   dictliker     r~   r   r   r   c                       e Zd Zd ZdS )1TestMappingProtocol.test_fromkeys.<locals>.mydictc                 (    t          j                    S r   collectionsUserDictclss    r   __new__z9TestMappingProtocol.test_fromkeys.<locals>.mydict.__new__      "+---r   Nrv   rw   rx   r   r   r   r   mydictr     #        . . . . .r   r   abr   c                       e Zd ZdS ).TestMappingProtocol.test_fromkeys.<locals>.ExcNr|   r   r   r   r}   r     r~   r   r}   c                       e Zd Z fdZdS )3TestMappingProtocol.test_fromkeys.<locals>.baddict1c                                  r   r   )r   r)   kwargsr}   s      r   r#   z<TestMappingProtocol.test_fromkeys.<locals>.baddict1.__init__  r   r   N)rv   rw   rx   r#   r   s   r   baddict1r     .              r   r   c                        e Zd Zd Z fdZdS )1TestMappingProtocol.test_fromkeys.<locals>.BadSeqc                     | S r   r   r   s    r   r2   z:TestMappingProtocol.test_fromkeys.<locals>.BadSeq.__iter__  r   r   c                                  r   r   r   s    r   r1   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dS )3TestMappingProtocol.test_fromkeys.<locals>.baddict2c                                  r   r   )r   r   r   r}   s      r   __setitem__z?TestMappingProtocol.test_fromkeys.<locals>.baddict2.__setitem__  r   r   N)rv   rw   rx   r  r   s   r   baddict2r    r   r   r  )r<   r   fromkeysr   r3   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77dRV9W9WXXX!!AJJu--2444E**4T,J,JKKKE!,,ajj999B,,,	 	 	AACC1T(333)R[!444,,,,,t~,,,**3//#d<<<,,S11C:>>>))#..8HDEEE

++C00:hFGGGX..s3344@AAA	. 	. 	. 	. 	.T^ 	. 	. 	. __T""$D11222b+"6777)T]333""""")"""	 	 	 	 	 	 	t~ 	 	 	 	#x01#666	 	 	 	 	 	 	V 	 	 	 	#t~6AAA	 	 	 	 	 	 	t~ 	 	 	 	#x01#66666r   c                    |                      dddd          }|                     |                                dddd           |                                 }|                     |                                |           |                     |                                |j                   |                     t          |j        d            d S r   )r   r<   r$   r   r  r  r>   r[   r\   s     r   	test_copyzTestMappingProtocol.test_copy  s    !qA//a1??333!!1%%%affhh444)QVT22222r   c                    t                               |            |                                 }|                     |                    d          d u            |                     |                    dd          d           |                     ddd          }|                     |                    d          d u            |                     |                    dd          d           |                     |                    d          d           |                     |                    dd          d           d S )Nr   r   r	   r
   r   r   )r   r   r   r3   rG   r<   r   r\   s     r   r   zTestMappingProtocol.test_get  s    ))$///!!c

d*+++sA***aq1122c

d*+++sA***sQ'''sA*****r   c                 p   t                               |            |                                 }|                     |                    d          d u            |                    dg            |                     |                    d          d u            |                    dg                               d           |                     |d         d         d           |                    dg                               d           |                     t          |d                   d           d S )Nkey0r   r   r   r   r
   )r   r   r   r3   rP   appendr<   r@   r\   s     r   r   z#TestMappingProtocol.test_setdefault  s	    00666!!V,,4555	VR   V,,4555	UB&&q)))5!a(((	UB&&q)))QuX*****r   c           	      "   t                               |            dD ]p}t          d          D ]\}d|z  }|                                 }|                                 }t          |          D ],}||t	          |          <   |dk     r||t	          |          <   -|dk    r|                                }t          |          D ]}|                                x\  }}}	|                     |t          |                     |                                x\  }
}}|                     |t          |
                     | 	                    |dk     o|	|k                | 	                    |            | 	                    |            ^rd S )N)r	      r
   r   )
r   r   ranger   reprr$   r&   r<   intr3   )r   copymodelog2sizesizer   r   rs   kavatakbvbtbs                r   r   z TestMappingProtocol.test_popitem  s    --d333 	' 	'H ""II ' '({''))''))t ' 'A!"Ad1ggJ!||%&$q''
a<<At D DA"#))++-FBR$$RR111"#))++-FBR$$RR111OO1(Ar$BCCCCA&&&A&&&&#'	' 	'r   c                    t                               |            |                                 }d\  }}|                     |                    ||          |           |||<   |                     |                    |d          |           d S )N)r   defr	   )r   r   r   r<   rQ   r   s       r   r   zTestMappingProtocol.test_pop  s     ))$/// !!1q!a(((!q!a(((((r   N)rv   rw   rx   rU   rX   r]   r_   ra   r   rc   rf   r   r   r
  r  r   r   r   r   r   r   r   r   r   1  s       E E E
F F F! ! !0 0 0
4 4 4
5 
5 
5$ $ $
4 4 44 4 4,- ,- ,-\-7 -7 -7^3 3 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
d	S )
TestHashMappingProtocolc                    t                               |             G d dt                     G fddt                    }|                                 }d| |            <   |                     t          |j        d            G fddt                    }|                                 } |            }d||<   d	|_        |                     |j        |           d S )
Nc                       e Zd ZdS )1TestHashMappingProtocol.test_getitem.<locals>.ExcNr|   r   r   r   r}   r&    r~   r   r}   c                        e Zd Z fdZd ZdS )3TestHashMappingProtocol.test_getitem.<locals>.BadEqc                                  r   r   r   r'   r}   s     r   __eq__z:TestHashMappingProtocol.test_getitem.<locals>.BadEq.__eq__  r   r   c                     dS )N   r   r   s    r   __hash__z<TestHashMappingProtocol.test_getitem.<locals>.BadEq.__hash__!  s    rr   Nrv   rw   rx   r+  r.  r   s   r   BadEqr(    s=                r   r0  rh      c                       e Zd ZdZ fdZdS )5TestHashMappingProtocol.test_getitem.<locals>.BadHashFc                 *    | j         r
             dS r   rD   r   s    r   r.  z>TestHashMappingProtocol.test_getitem.<locals>.BadHash.__hash__*      9 #%%K2r   Nrv   rw   rx   rD   r.  r   s   r   BadHashr3  (  3        D      r   r8  T)	r   rf   r   r   r   r>   r?   re   rD   )r   r0  r-   r8  r   r}   s        @r   rf   z$TestHashMappingProtocol.test_getitem  s#   ((...""""")"""	 	 	 	 	 	 	F 	 	 	 !!%%''
(AM2666	 	 	 	 	 	 	f 	 	 	 !!GII!#q}a00000r   c                     t                               |             G d d| j                  }|                    d          }|                     |d d d           |                     |t          j                   d S )Nc                       e Zd Zd ZdS )5TestHashMappingProtocol.test_fromkeys.<locals>.mydictc                 (    t          j                    S r   r   r   s    r   r   z=TestHashMappingProtocol.test_fromkeys.<locals>.mydict.__new__9  r   r   Nr   r   r   r   r   r<  8  r   r   r   r   r   )r   r
  r   r  r<   r  r   r   )r   r   r	  s      r   r
  z%TestHashMappingProtocol.test_fromkeys6  s    ))$///	. 	. 	. 	. 	.T^ 	. 	. 	. __T""$D11222b+"677777r   c                    t                               |             G d dt                     G fddt                    }|                                 } |            }d||<   d|_        |                     |j        |           d S )Nc                       e Zd ZdS )-TestHashMappingProtocol.test_pop.<locals>.ExcNr|   r   r   r   r}   r@  B  r~   r   r}   c                       e Zd ZdZ fdZdS )1TestHashMappingProtocol.test_pop.<locals>.BadHashFc                 *    | j         r
             dS r   r5  r   s    r   r.  z:TestHashMappingProtocol.test_pop.<locals>.BadHash.__hash__F  r6  r   Nr7  r   s   r   r8  rB  D  r9  r   r8  rh   T)r   r   r   r   r   rD   r>   rQ   r   r8  r-   r   r}   s       @r   r   z TestHashMappingProtocol.test_pop?  s    $$T***""""")"""	 	 	 	 	 	 	f 	 	 	 !!GII!#qua(((((r   c                     |                                  }d|d<   	 d}|D ]*}d||dz   <   |dk    r|                     d           |dz  }+d S # t          $ r Y d S w xY w)Nr	   r   z7changing dict size during iteration doesn't raise Error)r   rD   RuntimeError)r   r-   countrs   s       r   test_mutatingiterationz.TestHashMappingProtocol.test_mutatingiterationR  s    !!!	E  !A#A::IIWXXX
	 
  	 	 	DD	s   /A 
AAc                    |                                  }|                     t          |          d           d|d<   |                     t          |          d           |                                  }||d<   |                     t          |          d            G d dt                     G fdd	t                    }|                     d |            i          }|                     t          |           d S )
Nz{}r
   r	   z{1: 2}z
{1: {...}}c                       e Zd ZdS ).TestHashMappingProtocol.test_repr.<locals>.ExcNr|   r   r   r   r}   rK  h  r~   r   r}   c                       e Zd Z fdZdS )2TestHashMappingProtocol.test_repr.<locals>.BadReprc                                  r   r   r   s    r   __repr__z;TestHashMappingProtocol.test_repr.<locals>.BadRepr.__repr__k  r   r   N)rv   rw   rx   rO  r   s   r   BadReprrM  j  r   r   rP  )r   r<   r  r   r   r   r>   )r   r-   rP  r}   s      @r   	test_reprz!TestHashMappingProtocol.test_repr_  s   !!a$'''!a(+++!!!a,///""""")"""	 	 	 	 	 	 	f 	 	 	 7799~..#tQ'''''r   c                     |                                  }t          t          j                    dz             D ]}|}|                                  }||d<   |                     t
          t          |           d S )Nr   r	   )r   r  sysgetrecursionlimitr>   RecursionErrorr  )r   r-   rs   d0s       r   test_repr_deepz&TestHashMappingProtocol.test_repr_deepq  sw    !!s,..455 	 	AB##%%AAaDD.$22222r   c                 $   |                      |                                 |                                            |                      |                     ddi          |                     ddi                      G d dt                     G fddt                    |                                  di          |                     ddi          |                     fd           |                     fd           d S )	Nr	   r
   c                       e Zd ZdS ),TestHashMappingProtocol.test_eq.<locals>.ExcNr|   r   r   r   r}   rZ  ~  r~   r   r}   c                        e Zd Z fdZd ZdS )/TestHashMappingProtocol.test_eq.<locals>.BadCmpc                                  r   r   r*  s     r   r+  z6TestHashMappingProtocol.test_eq.<locals>.BadCmp.__eq__  r   r   c                     dS r   r   r   s    r   r.  z8TestHashMappingProtocol.test_eq.<locals>.BadCmp.__hash__  s    qr   Nr/  r   s   r   BadCmpr\    s=                r   r_  c                                     dk    S r   r   )r_  s   r   r/   z1TestHashMappingProtocol.test_eq.<locals>.<lambda>  s    vvxx{ r   c                       k    S r   r   )d1d2s   r   r/   z1TestHashMappingProtocol.test_eq.<locals>.<lambda>  s    r2v r   )r<   r   r   r   r   r>   )r   r_  r}   rb  rc  s    @@@@r   test_eqzTestHashMappingProtocol.test_eqy  s?   ,,..0C0C0E0EFFF++QF33++QF33	5 	5 	5 	#"""")"""	 	 	 	 	 	 	V 	 	 	 1..A''#2222333#~~~~~.....r   c                    t                               |             G d dt                     G fddt                    }|                                 } |            }d||<   d|_        |                     |j        |g            d S )Nc                       e Zd ZdS )4TestHashMappingProtocol.test_setdefault.<locals>.ExcNr|   r   r   r   r}   rg    r~   r   r}   c                       e Zd ZdZ fdZdS )8TestHashMappingProtocol.test_setdefault.<locals>.BadHashFc                 *    | j         r
             dS r   r5  r   s    r   r.  zATestHashMappingProtocol.test_setdefault.<locals>.BadHash.__hash__  r6  r   Nr7  r   s   r   r8  ri    r9  r   r8  rh   T)r   r   r   r   r   rD   r>   rP   rD  s       @r   r   z'TestHashMappingProtocol.test_setdefault  s    ++D111""""")"""	 	 	 	 	 	 	f 	 	 	 !!GII!#q|Q33333r   N)rv   rw   rx   rf   r
  r   rH  rQ  rW  rd  r   r   r   r   r#  r#    s        1 1 188 8 8) ) )&  ( ( ($3 3 3/ / /$4 4 4 4 4r   r#  )r!   r   rS  r"   r   r   r#  r   r   r   <module>rk     s         



g. g. g. g. g.x0 g. g. g.T	d) d) d) d) d)2 d) d) d)ND4 D4 D4 D4 D41 D4 D4 D4 D4 D4r   