
    ;e                         d Z ddlZddl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                     dS dS )z'Unit tests for collections.defaultdict.    N)defaultdictc                      t           S N)list     ,/usr/lib/python3.11/test/test_defaultdict.pyfoobarr
      s    Kr   c                   P    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S )TestDefaultDictc                 \   t                      }|                     |j        d            t          |_        |d                             d           |                     |ddgi           |d                             d           |                     |dddgi           |d          |d          |                     |ddgg g d           |                     |d         |d         cxuo	|d         unc            t          t          dd	          }|                     |j        t                     |                     |ddd	           |                     |d
         d           |                     |d         d           |                     |d         g            |                     d
|           |                     d
|                                           |                     d|           |                     d|                                           |                     d|           |                     d|                                           |                     d|           |                     d|                                           d |_        |                     |j        d            	 |d          | 	                    d           n2# t          $ r%}|                     |j        d           Y d }~nd }~ww xY w|                     t          t           d           d S )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   s   ]]+T222!
2bb2$Z(((
2bb2r(^,,,
2
22r(;;<<<2bf::::BrF::::;;;1!,,,+T222Qq11222EA&&&EA&&&B$$$eR   eRWWYY'''eR   eRWWYY'''b"b"''))$$$R   RWWYY'''!+T222	6rFF II45555  	. 	. 	.SXu--------	. 	)[!44444s   ;K 
L#LLc                     t                      }|                     t          |j        d           t          |_        |                     |                    d          g            d S )Nr   )r   r"   r    __missing__r   r   r   )r$   r%   s     r	   test_missingzTestDefaultDict.test_missing4   sU    ]](BNB777!++R00000r   c                    t                      }|                     |j        d            |                     t          |          d           |                     t	          t          |                    |           d|d<   |                     t          |          d           t          t
                    }|                     |j        t
                     d|d<   |                     t          |          d           d }t          |          }|                     |j        |u            |d	          |                     t          |          d
t          |          z             d S )Nzdefaultdict(None, {}))      zdefaultdict(None, {11: 41})r   r   z$defaultdict(<class 'int'>, {12: 42})c                      dS )N+   r   r   r   r	   r   z&TestDefaultDict.test_repr.<locals>.fooE   s    ""r   r   zdefaultdict(%s, {13: 43}))r   r   r   reprevalintr   )r$   r%   r&   r   d3s        r	   	test_reprzTestDefaultDict.test_repr:   s<   ]]+T222b#:;;;d2hh,,,2b#@AAA+S1112b#IJJJ*c1222
2b#>c#JKKKKKr   c                    t                      }|                                }|                     t          |          t                      |                     |j        d            |                     |i            t
          |_        |                                }|                     t          |          t                      |                     |j        t
                     |                     |i            |d          |                                }|                     t          |          t                      |                     |j        t
                     |                     |dg i           |d          |                     |g g d           t                      }d|d<   |                                }|                     |d         d           d S )Nr   r   )r   r   a)r   copyr   typer   r   )r$   r%   r&   r4   d4des          r	   	test_copyzTestDefaultDict.test_copyK   s   ]]WWYYb;///+T222R   !WWYYb;///+T222R   
2WWYYb;///+T222b"X&&&
2""--... MM#FFHH3$$$$$r   c                 t   t          t          ddi          }t          j        |          }|                     |j        t                     |                     ||           t
          |_        t          j        |          }|                     |j        t
                     |                     ||           d S Nr   )r   r
   r8   r   r   r   r$   r%   r&   s      r	   test_shallow_copyz!TestDefaultDict.test_shallow_copyd   s    !Q((Yr]]+V444R   !Yr]]+T222R     r   c                    t          t          ddgi          }t          j        |          }|                     |j        t                     |                     ||           |                     |d         |d         u           t          |_        t          j        |          }|                     |j        t                     |                     ||           d S r?   )r   r
   r8   deepcopyr   r   r   r   r@   s      r	   test_deep_copyzTestDefaultDict.test_deep_copyn   s    !aS**]2+V444R   1RU*+++!]2+T222R     r   c                     t                      }	 |d          |                     d           d S # t          $ r,}|                     |j        d         d           Y d }~d S 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_factoryy   s    ]]	+tHH II)*****  	0 	0 	0SXa[$/////////	0s   / 
A%!A  A%c                      G d dt                     } |            }|                     t          |          d           d S )Nc                       e Zd Zd Zd ZdS )0TestDefaultDict.test_recursive_repr.<locals>.subc                     | j         | _        d S 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      s2        5 5 5    r   rR   zBsub\(<bound method .*sub\._factory of sub\(\.\.\., \{\}\)>, \{\}\))r   assertRegexr1   )r$   rR   r;   s      r	   test_recursive_reprz#TestDefaultDict.test_recursive_repr   sh    	 	 	 	 	+ 	 	 	
 CEEa/	0 	0 	0 	0 	0r   c                 H    |                      t          t          i            d S r   )r"   r#   r   rL   s    r	   test_callable_argz!TestDefaultDict.test_callable_arg   s     )["55555r   c                     t          t                    }|d          t          t          j        dz             D ]A}t          j        ||          }t          j        |          }|                     ||           Bd S r?   )r   r3   rangepickleHIGHEST_PROTOCOLdumpsloadsr   )r$   r;   protosos        r	   test_picklingzTestDefaultDict.test_pickling   sx    	!62Q677 	# 	#EQ&&AQAQ""""	# 	#r   c                    t          t          ddd          }t          t          ddd          }||z  }|                     |j        t                     |                     |dddd           |                     t          |          g d           ||z  }|                     |j        t                     |                     |dddd           |                     t          |          g d           |t          |          z  }|                     |j        t                     |                     |dddd           |                     t          |          g d           t          |          |z  }|                     |j        t                     |                     |dddd           |                     t          |          g d           | 	                    t                    5  |t          |                                          z   d d d            n# 1 swxY w Y   | 	                    t                    5  t          |                                          |z   d d d            n# 1 swxY w Y   |t          |                                          z  }|                     |j        t                     |                     |dddd           |                     t          |          g d           | 	                    t                    5  |d z  }d d d            d S # 1 swxY w Y   d S )	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233!ec)3///Sef"="=>>>cIII...!ec)3///Sfq"9"9:::cIII...477{d*C000Tuv#>#>???dYYY///Aww{d*C000Tv!#:#:;;;dYYY///y)) 	  	 QWWYY	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 y)) 	  	 OOa	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	
T!''))__a'---QEaF ; ;<<<a))),,,y)) 	 	IA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   5%H&&H*-H*%I<<J J $L77L;>L;N)rO   rP   rQ   r(   r+   r5   r=   rA   rD   rF   rT   rV   r`   rn   r   r   r	   r   r      s        "5 "5 "5H1 1 1L L L"% % %2! ! !	! 	! 	!+ + +
0 
0 
06 6 6# # #$ $ $ $ $r   r   __main__)__doc__osr8   rY   tempfileunittestcollectionsr   r
   TestCaser   rO   mainr   r   r	   <module>rw      s    - - 				     # # # # # #  o o o o oh' o o ob zHMOOOOO r   