a
    äzeó5  ã                   @   sN   d dl Zd dlZd dlZd dlZd dlZG dd„ dejƒZedkrJe 	¡  dS )é    Nc                   @   sŒ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!S )"ÚDictSetTestc                 C   sv   t i  ¡ ƒ}|  t|i ¡ |  t|¡ t i  ¡ ƒ}|  t|i ¡ |  t|¡ t i  ¡ ƒ}|  t|i ¡ |  t|¡ d S ©N)ÚtypeÚkeysÚassertRaisesÚ	TypeErrorÚitemsÚvalues)ÚselfZktÚitZvt© r   ú)/usr/lib/python3.9/test/test_dictviews.pyÚtest_constructors_not_callable	   s    z*DictSetTest.test_constructors_not_callablec                 C   s   dddœ}|  ¡ }|  t|ƒd¡ |  t|ƒddh¡ |  |ddh¡ |  |h d£¡ |  |ddh¡ |  |dh¡ |  |d	¡ |  d|¡ |  d|¡ |  d|¡ |  d
|¡ |  |  ¡ |  ¡ ¡ dddœ}|  |  ¡ |  ¡ ¡ |d= |  |  ¡ |  ¡ ¡ d S )Né
   ÚABC©é   Úaé   r   r   >   r   r   Úbr   é*   ÚZé   Údef)r   ÚassertEqualÚlenÚsetÚassertNotEqualÚassertInÚassertNotIn)r
   Údr   Úer   r   r   Útest_dict_keys   s$    

zDictSetTest.test_dict_keysc                 C   s$  dddœ}|  ¡ }|  t|ƒd¡ |  t|ƒddh¡ |  |ddh¡ |  |h d£¡ |  |ddh¡ |  |dh¡ |  |d	¡ |  d|¡ |  d|¡ |  d
|¡ |  d|¡ |  d|¡ |  d|¡ |  d|¡ |  |  ¡ |  ¡ ¡ | ¡ }|  |  ¡ |  ¡ ¡ d|d< |  |  ¡ |  ¡ ¡ d S )Nr   r   r   r   ©r   r   ©r   r   >   r$   r#   Zjunk)r   r   r   )r   r   r   r   )r   )r   r   é   r   r   )r   r   r   r   r   r   r   Úcopy)r
   r    r   r!   r   r   r   Útest_dict_items(   s*    
zDictSetTest.test_dict_itemsc                 C   s@   dddœ}dddœ}|   | ¡ | ¡ ¡ |  | ¡ | ¡ ¡ d S )Nr   é   ))r   r   )r   r   r   r   ©r   r   )r   r   r   r   )r
   r    r!   r   r   r   Útest_dict_mixed_keys_items?   s    

z&DictSetTest.test_dict_mixed_keys_itemsc                 C   s:   dddœ}|  ¡ }|  t|ƒddh¡ |  t|ƒd¡ d S )Nr   r   r   r   )r	   r   r   r   )r
   r    r	   r   r   r   Útest_dict_valuesE   s    
zDictSetTest.test_dict_valuesc                 C   s¨   dddœ}|   t|ƒt¡ t| ¡ ƒ}|   |t¡ |  |dkpD|dk¡ t| ¡ ƒ}|   |t¡ |  |dkpr|dk¡ t| ¡ ƒ}|   |t¡ |  |dkp |d	k¡ d S )
Nr   r   r   z#dict_items([('a', 'ABC'), (1, 10)])z#dict_items([(1, 10), ('a', 'ABC')])zdict_keys(['a', 1])zdict_keys([1, 'a'])zdict_values(['ABC', 10])zdict_values([10, 'ABC']))ÚassertIsInstanceÚreprÚstrr   Ú
assertTruer   r	   ©r
   r    Úrr   r   r   Útest_dict_reprK   s"    
ÿÿÿzDictSetTest.test_dict_reprc                    s´  dddœ}dddœ}dddœ}d	di}G ‡ fd
d„dt ƒ‰ |  | ¡ | ¡ @ ddh¡ |  | ¡ | ¡ @ dh¡ |  | ¡ | ¡ @ t ƒ ¡ |  | ¡ t | ¡ ƒ@ ddh¡ |  | ¡ t | ¡ ƒ@ dh¡ |  | ¡ t | ¡ ƒ@ t ƒ ¡ |  | ¡ t| ¡ ƒ@ ddh¡ |  | ¡ | ¡ @ d	h¡ |  | ¡ | ¡ @ d	h¡ |  | ¡ t | ¡ ƒ@ d	h¡ |  | ¡ t| ¡ ƒ@ t ¡ |  t| ¡ ƒ| ¡ @ t ¡ |  t| ¡ ˆ | ¡ ƒ@ ƒt ¡ |  t| ¡ g @ ƒt ¡ |  tg | ¡ @ ƒt ¡ |  | ¡ | ¡ B ddh¡ |  | ¡ | ¡ B h d£¡ |  | ¡ | ¡ B h d£¡ |  | ¡ t | ¡ ƒB ddh¡ |  | ¡ t | ¡ ƒB h d£¡ |  | ¡ t | ¡ ƒB h d£¡ |  | ¡ dB h d£¡ |  | ¡ | ¡ A t ƒ ¡ |  | ¡ | ¡ A ddh¡ |  | ¡ | ¡ A h d£¡ |  | ¡ t | ¡ ƒA t ƒ ¡ |  | ¡ t | ¡ ƒA ddh¡ |  | ¡ t | ¡ ƒA h d£¡ |  | ¡ t| ¡ ƒA ddh¡ |  | ¡ | ¡  t ƒ ¡ |  | ¡ | ¡  dh¡ |  | ¡ | ¡  ddh¡ |  | ¡ t | ¡ ƒ t ƒ ¡ |  | ¡ t | ¡ ƒ dh¡ |  | ¡ t | ¡ ƒ ddh¡ |  | ¡ d ddh¡ |  | ¡  	| ¡ ¡¡ |  | ¡  	| ¡ ¡¡ |  | ¡  	t
| ¡ ƒ¡¡ |  | ¡  	t | ¡ ƒ¡¡ |  | ¡  	h d£¡¡ |  | ¡  	g d¢¡¡ |  | ¡  	t g d¢ƒ¡¡ |  | ¡  	t ddgƒ¡¡ |  | ¡  	ddg¡¡ |  | ¡  	i ¡¡ |  | ¡  	| ¡ ¡¡ i }|  | ¡  	t ƒ ¡¡ |  | ¡  	g ¡¡ |  | ¡  	| ¡ ¡¡ |  | ¡  	dg¡¡ d S )Nr   r   ©r   r   r%   )r   Úcé   é   ©r    r!   r    c                       s   e Zd Z‡‡ fdd„Z‡  ZS )z7DictSetTest.test_keys_set_operations.<locals>.CustomSetc                    s   ˆ t ƒ  |¡ƒS r   )ÚsuperÚintersection©r
   Úother)Ú	CustomSetÚ	__class__r   r   r9   b   s    zDDictSetTest.test_keys_set_operations.<locals>.CustomSet.intersection)Ú__name__Ú
__module__Ú__qualname__r9   Ú__classcell__r   ©r<   )r=   r   r<   a   s   r<   r   r   >   r   r4   r   >   r   r!   r    r   r)   >   r   r   r   r   r4   )r   r   ¾   ÚzÚyÚx©rF   rE   rD   rF   rE   )r   r   r   Útupler,   Ú	frozensetZassertIsr   ÚassertFalseÚ
isdisjointÚlistr/   )r
   Úd1Úd2Úd3Zd4Úder   rB   r   Útest_keys_set_operations[   sz    


     ÿ ÿ  z$DictSetTest.test_keys_set_operationsc                 C   sØ  dddœ}dddœ}dddœ}|   | ¡ | ¡ @ ddh¡ |   | ¡ | ¡ @ dh¡ |   | ¡ | ¡ @ tƒ ¡ |   | ¡ t| ¡ ƒ@ ddh¡ |   | ¡ t| ¡ ƒ@ dh¡ |   | ¡ t| ¡ ƒ@ tƒ ¡ |   | ¡ | ¡ B ddh¡ |   | ¡ | ¡ B h d	£¡ |   | ¡ | ¡ B h d
£¡ |   | ¡ t| ¡ ƒB ddh¡ |   | ¡ t| ¡ ƒB h d	£¡ |   | ¡ t| ¡ ƒB h d
£¡ |   | ¡ | ¡ A tƒ ¡ |   | ¡ | ¡ A ddh¡ |   | ¡ | ¡ A h d
£¡ |   | ¡ | ¡  tƒ ¡ |   | ¡ | ¡  dh¡ |   | ¡ | ¡  ddh¡ |   | ¡ t| ¡ ƒ tƒ ¡ |   | ¡ t| ¡ ƒ dh¡ |   | ¡ t| ¡ ƒ ddh¡ |  | ¡  | ¡ ¡¡ |  | ¡  | ¡ ¡¡ |  | ¡  t| ¡ ƒ¡¡ |  | ¡  t| ¡ ƒ¡¡ |  | ¡  h d£¡¡ |  | ¡  g d¢¡¡ |  | ¡  tg d¢ƒ¡¡ |  | ¡  tddgƒ¡¡ |  | ¡  i ¡¡ |  | ¡  | ¡ ¡¡ i }|  | ¡  tƒ ¡¡ |  | ¡  g ¡¡ |  | ¡  | ¡ ¡¡ |  | ¡  dg¡¡ d S )Nr   r   r3   r5   r6   r7   ©r   r   ©r   r   >   ©r   r   rS   rR   >   rR   rS   )r    r5   )r!   r6   rT   rC   rG   rF   rE   )r   r   r   rJ   rK   rL   r/   )r
   rM   rN   rO   rP   r   r   r   Útest_items_set_operations¡   sv    


ÿÿÿÿÿÿÿÿÿÿ z%DictSetTest.test_items_set_operationsc                 C   sô   dddœ}|   | ¡ tddgƒ@ dh¡ |   | ¡ tddgƒB h d£¡ |   | ¡ tddgƒA ddh¡ |   | ¡ tddgƒ dh¡ | ¡ }|   |tdgƒ@ dh¡ |   |tdgƒA dh¡ |   |tdgƒB ddh¡ |   |tdgƒ dh¡ d S )	Nr   r5   )r   r%   r   >   r   r   r%   r%   r)   )r%   r5   )r   r   Úiterr   )r
   Úoriginr   r   r   r   Ú!test_set_operations_with_iteratorÙ   s    
  z-DictSetTest.test_set_operations_with_iteratorc                 C   s¼  |   t¡ i  ¡ d@  W d   ƒ n1 s,0    Y  |   t¡ i  ¡ dB  W d   ƒ n1 sb0    Y  |   t¡ i  ¡ dA  W d   ƒ n1 s˜0    Y  |   t¡ i  ¡ d  W d   ƒ n1 sÎ0    Y  |   t¡ i  ¡ d@  W d   ƒ n1 s0    Y  |   t¡ i  ¡ dB  W d   ƒ n1 s>0    Y  |   t¡ i  ¡ dA  W d   ƒ n1 sv0    Y  |   t¡ i  ¡ d  W d   ƒ n1 s®0    Y  d S )Nr   )r   r   r   r   ©r
   r   r   r   Ú$test_set_operations_with_noniterableæ   s     ****,,,z0DictSetTest.test_set_operations_with_noniterablec                 C   sH   i }|  ¡ |d< t|ƒ}|  |t¡ | ¡ |d< t|ƒ}|  |t¡ d S )Nr   )r	   r-   r,   r.   r   r0   r   r   r   Útest_recursive_reprù   s    zDictSetTest.test_recursive_reprc                 C   s8   i }t t ¡ d ƒD ]}d| ¡ i}q|  tt|¡ d S )Néd   r   )ÚrangeÚsysÚgetrecursionlimitr	   r   ÚRecursionErrorr-   )r
   r    Úir   r   r   Útest_deeply_nested_repr  s    z#DictSetTest.test_deeply_nested_reprc                 C   sJ   dddœ}|   ttj| ¡ ¡ |   ttj| ¡ ¡ |   ttj| ¡ ¡ d S )Nr   r   r   )r   r   r&   r   r	   r   ©r
   r    r   r   r   Ú	test_copy  s    
zDictSetTest.test_copyc                    s  G dd„ dt ƒ‰ G ‡ fdd„dƒ}|ƒ |ƒ  }}|ƒ |ƒ  }}||i}|  ||¡ |  || ¡ ¡ |  || ¡ ¡ |  ||f| ¡ ¡ |  ˆ |j|¡ |  ˆ | ¡ j|¡ |  ˆ | ¡ j||f¡ |  ˆ | ¡ j||f¡ |  ˆ ¡ || ¡ v  W d   ƒ n1 s0    Y  d S )Nc                   @   s   e Zd ZdS )z+DictSetTest.test_compare_error.<locals>.ExcN)r>   r?   r@   r   r   r   r   ÚExc  s   re   c                       s    e Zd Zdd„ Z‡ fdd„ZdS )z-DictSetTest.test_compare_error.<locals>.BadEqc                 S   s   dS )Né   r   rY   r   r   r   Ú__hash__  s    z6DictSetTest.test_compare_error.<locals>.BadEq.__hash__c                    s   ˆ ‚d S r   r   r:   ©re   r   r   Ú__eq__  s    z4DictSetTest.test_compare_error.<locals>.BadEq.__eq__N)r>   r?   r@   rg   ri   r   rh   r   r   ÚBadEq  s   rj   )Ú	Exceptionr   r   r	   r   r   Ú__contains__)r
   rj   Zk1Zk2Zv1Zv2r    r   rh   r   Útest_compare_error  s    zDictSetTest.test_compare_errorc                 C   sv   dddœ}t tjd ƒD ]X}|  ttjftj| ¡ |¡ |  ttjftj| ¡ |¡ |  ttjftj| 	¡ |¡ qd S )Nr   r   r   r   )
r]   ÚpickleÚHIGHEST_PROTOCOLr   r   ÚPicklingErrorÚdumpsr   r	   r   )r
   r    Úprotor   r   r   Útest_pickle,  s    
ÿÿÿzDictSetTest.test_picklec                 C   s:  t dd}|  | ¡ tjj¡ |  | ¡ tjj¡ |  | ¡ tjj¡ |  | ¡ tjj¡ |  | ¡ tjj	¡ |  | ¡ tjj
¡ |  | ¡ tjj¡ |  | ¡ tjj¡ |  | ¡ tjj¡ |  | ¡ tjj¡ |  | ¡ tjj¡ |  | ¡ tjj¡ |  | ¡ tjj¡ |  | ¡ tjj	¡ |  | ¡ tjj
¡ d S )Nr   )r   )Údictr,   r   ÚcollectionsÚabcÚKeysViewÚMappingViewÚSetÚSizedÚIterableÚ	Containerr	   Ú
ValuesViewr   Ú	ItemsViewrc   r   r   r   Útest_abc_registry6  s     
zDictSetTest.test_abc_registryN)r>   r?   r@   r   r"   r'   r*   r+   r2   rQ   rU   rX   rZ   r[   rb   rd   rm   rs   r   r   r   r   r   r      s    F8
r   Ú__main__)
Úcollections.abcru   r&   rn   r^   ZunittestZTestCaser   r>   Úmainr   r   r   r   Ú<module>   s     G