
    dafh                         d Z ddlZddlZddlZddlmZ d Z G d dej                        Ze	dk(  r ej                          yy)z'Unit tests for collections.defaultdict.    N)defaultdictc                      t         S N)list     0/root/Python-3.12.4/Lib/test/test_defaultdict.pyfoobarr
   	   s    Kr   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y)TestDefaultDictc                 F   t               }| j                  |j                  d        t        |_        |d   j	                  d       | j                  |ddgi       |d   j	                  d       | j                  |dddgi       |d    |d    | j                  |ddgg g d       | j                  |d   |d   cxuxr |d   unc        t        t        dd	      }| j                  |j                  t               | j                  |ddd	       | j                  |d
   d       | j                  |d   d       | j                  |d   g        | j                  d
|       | j                  d
|j                                | j                  d|       | j                  d|j                                | j                  d|       | j                  d|j                                | j                  d|       | j                  d|j                                d |_        | j                  |j                  d        	 |d    | j                  d       | j                  t        t         d       y # t        $ r&}| j                  |j                  d       Y d }~Fd }~ww xY w)N   *            )r   r   r         )foobarr   r      zd2[15] didn't raise KeyError)r   )r   assertEqualdefault_factoryr   append
assertTrueassertInkeysassertNotInfailKeyErrorargsassertRaises	TypeError)selfd1d2errs       r	   
test_basiczTestDefaultDict.test_basic   s5   ]++T2!
2bb2$Z(
2bb2r(^,
2
22r(;<2bf:BrF:;1!,++T2Qq12EA&EA&B$eR eRWWY'eR eRWWY'b"b"'')$R RWWY'!++T2	6rF II45)[!4	  	.SXXu--	.s   ?I1 1	J :JJ c                     t               }| j                  t        |j                  d       t        |_        | j                  |j                  d      g        y )Nr   )r   r"   r    __missing__r   r   r   )r$   r%   s     r	   test_missingzTestDefaultDict.test_missing2   s@    ](BNNB7!+R0r   c                 Z   t               }| j                  |j                  d        | j                  t        |      d       | j                  t	        t        |            |       d|d<   | j                  t        |      d       t        t
              }| j                  |j                  t
               d|d<   | j                  t        |      d       d }t        |      }| j                  |j                  |u        |d	    | j                  t        |      d
t        |      z         y )Nzdefaultdict(None, {}))      zdefaultdict(None, {11: 41})r   r   z$defaultdict(<class 'int'>, {12: 42})c                       y)N+   r   r   r   r	   r   z&TestDefaultDict.test_repr.<locals>.fooC   s    "r   r   zdefaultdict(%s, {13: 43}))r   r   r   reprevalintr   )r$   r%   r&   r   d3s        r	   	test_reprzTestDefaultDict.test_repr8   s    ]++T2b#:;d2h,2b#@A++S12b#IJ**c12
2b#>c#JKr   c                    t               }|j                         }| j                  t        |      t                | j                  |j                  d        | j                  |i        t
        |_        |j                         }| j                  t        |      t                | j                  |j                  t
               | j                  |i        |d    |j                         }| j                  t        |      t                | j                  |j                  t
               | j                  |dg i       |d    | j                  |g g d       t               }d|d<   |j                         }| j                  |d   d       y )Nr   r   )r   r   a)r   copyr   typer   r   )r$   r%   r&   r4   d4des          r	   	test_copyzTestDefaultDict.test_copyI   s8   ]WWYb;/++T2R !WWYb;/++T2R 
2WWYb;/++T2b"X&
2""-. M#FFH3$r   c                 Z   t        t        ddi      }t        j                  |      }| j                  |j                  t               | j                  ||       t
        |_        t        j                  |      }| j                  |j                  t
               | j                  ||       y Nr   )r   r
   r8   r   r   r   r$   r%   r&   s      r	   test_shallow_copyz!TestDefaultDict.test_shallow_copyb   s    !Q(YYr]++V4R !YYr]++T2R r   c                    t        t        ddgi      }t        j                  |      }| j	                  |j
                  t               | j	                  ||       | j                  |d   |d   u       t        |_        t        j                  |      }| j	                  |j
                  t               | j	                  ||       y r?   )r   r
   r8   deepcopyr   r   r   r   r@   s      r	   test_deep_copyzTestDefaultDict.test_deep_copyl   s    !aS*]]2++V4R 1RU*+!]]2++T2R r   c                     t               }	 |d    | j                  d       y # t        $ r)}| j                  |j                  d   d       Y d }~y d }~ww xY w)N)r   zexpected KeyErrorr   )r   r   r    r   r!   )r$   r%   r'   s      r	   test_keyerror_without_factoryz-TestDefaultDict.test_keyerror_without_factoryw   sQ    ]	+tH II)*  	0SXXa[$//	0s   # 	AAAc                 f     G d dt               } |       }| j                  t        |      d       y )Nc                       e Zd Zd Zd Zy)0TestDefaultDict.test_recursive_repr.<locals>.subc                 &    | j                   | _        y r   )_factoryr   r$   s    r	   __init__z9TestDefaultDict.test_recursive_repr.<locals>.sub.__init__   s    '+}}$r   c                     g S r   r   rL   s    r	   rK   z9TestDefaultDict.test_recursive_repr.<locals>.sub._factory   s    	r   N)__name__
__module____qualname__rM   rK   r   r   r	   subrI      s    5r   rR   zBsub\(<bound method .*sub\._factory of sub\(\.\.\., \{\}\)>, \{\}\))r   assertRegexr1   )r$   rR   r;   s      r	   test_recursive_reprz#TestDefaultDict.test_recursive_repr   s0    	+ 	
 Ea/	0r   c                 :    | j                  t        t        i        y r   )r"   r#   r   rL   s    r	   test_callable_argz!TestDefaultDict.test_callable_arg   s    )["5r   c                     t        t              }|d    t        t        j                  dz         D ]?  }t        j
                  ||      }t        j                  |      }| j                  ||       A y r?   )r   r3   rangepickleHIGHEST_PROTOCOLdumpsloadsr   )r$   r;   protosos        r	   test_picklingzTestDefaultDict.test_pickling   s_    	!622Q67 	#EQ&AQAQ"	#r   c                    t        t        ddd      }t        t        ddd      }||z  }| j                  |j                  t               | j                  |dddd       | j                  t        |      g d       ||z  }| j                  |j                  t               | j                  |dddd       | j                  t        |      g d       |t        |      z  }| j                  |j                  t               | j                  |dddd       | j                  t        |      g d       t        |      |z  }| j                  |j                  t               | j                  |dddd       | j                  t        |      g d       | j                  t              5  |t        |j                               z   d d d        | j                  t              5  t        |j                               |z   d d d        |t        |j                               z  }| j                  |j                  t               | j                  |dddd       | j                  t        |      g d       | j                  t              5  |d z  }d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)	Nr   r   )r   r   zeroone)r   r   )r   r   r   )r   r   r   )r   r3   strassertIsr   assertDictEqualr   r   dictr"   r#   items)r$   ir^   i_ss_ii_dsds_is          r	   
test_unionzTestDefaultDict.test_union   s;   q\*E23!ec))3/Sef"=>cI.!ec))3/Sfq"9:cI.47{d**C0Tuv#>?dY/Aw{d**C0Tv!#:;dY/y) 	 QWWY	 y) 	 Oa	  	
T!'')_a''-QEaF ;<a),y) 	IA	 		  	 	  	 	 	s$   .J (J,J8 J),J58KN)rO   rP   rQ   r(   r+   r5   r=   rA   rD   rF   rT   rV   r`   rn   r   r   r	   r   r      s;    "5H1L"%2!	!+
06#$r   r   __main__)__doc__r8   rY   unittestcollectionsr   r
   TestCaser   rO   mainr   r   r	   <module>ru      sH    -    #oh'' ob zHMMO r   