a
    äze^µ  ã                   @   s>  d dl Z d dlZd dlZd dlZ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
ƒZG dd„ de
ƒZG dd„ deƒZG dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ dƒZG dd„ dƒZG dd„ de	jƒZG dd„ dejƒZedkr:e	  ¡  dS )é    Nc                   @   s   e Zd ZdS )Úlist2N©Ú__name__Ú
__module__Ú__qualname__© r   r   ú&/usr/lib/python3.9/test/test_pprint.pyr      s   r   c                   @   s   e Zd Zdd„ ZdS )Úlist3c                 C   s
   t  | ¡S ©N)ÚlistÚ__repr__©Úselfr   r   r   r      s    zlist3.__repr__N©r   r   r   r   r   r   r   r   r	      s   r	   c                   @   s   e Zd ZdS )Útuple2Nr   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd„ ZdS )Útuple3c                 C   s
   t  | ¡S r
   )Útupler   r   r   r   r   r      s    ztuple3.__repr__Nr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )Úset2Nr   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd„ ZdS )Úset3c                 C   s
   t  | ¡S r
   )Úsetr   r   r   r   r   r       s    zset3.__repr__Nr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )Ú
frozenset2Nr   r   r   r   r   r   #   s   r   c                   @   s   e Zd Zdd„ ZdS )Ú
frozenset3c                 C   s
   t  | ¡S r
   )Ú	frozensetr   r   r   r   r   r   '   s    zfrozenset3.__repr__Nr   r   r   r   r   r   &   s   r   c                   @   s   e Zd ZdS )Údict2Nr   r   r   r   r   r   *   s   r   c                   @   s   e Zd Zdd„ ZdS )Údict3c                 C   s
   t  | ¡S r
   )Údictr   r   r   r   r   r   .   s    zdict3.__repr__Nr   r   r   r   r   r   -   s   r   c                   @   s   e Zd Zdd„ ZdS )ÚUnorderablec                 C   s   t t| ƒƒS r
   )ÚstrÚidr   r   r   r   r   2   s    zUnorderable.__repr__Nr   r   r   r   r   r   1   s   r   c                   @   sL   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S )Ú	Orderablec                 C   s
   || _ d S r
   ©Ú_hash)r   Úhashr   r   r   Ú__init__7   s    zOrderable.__init__c                 C   s   dS )NFr   ©r   Úotherr   r   r   Ú__lt__9   s    zOrderable.__lt__c                 C   s   | |kS r
   r   r$   r   r   r   Ú__gt__;   s    zOrderable.__gt__c                 C   s   | |kS r
   r   r$   r   r   r   Ú__le__=   s    zOrderable.__le__c                 C   s   dS )NTr   r$   r   r   r   Ú__ge__?   s    zOrderable.__ge__c                 C   s   | |u S r
   r   r$   r   r   r   Ú__eq__A   s    zOrderable.__eq__c                 C   s   | |uS r
   r   r$   r   r   r   Ú__ne__C   s    zOrderable.__ne__c                 C   s   | j S r
   r    r   r   r   r   Ú__hash__E   s    zOrderable.__hash__N)r   r   r   r#   r&   r'   r(   r)   r*   r+   r,   r   r   r   r   r   6   s   r   c                   @   s2  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!d"„ Zd#d$„ Zd%d&„ Zejejjd'd(„ ƒƒZd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Z d3d4„ Z!d5d6„ Z"d7d8„ Z#d9d:„ Z$d;d<„ Z%d=d>„ Z&d?d@„ Z'dAdB„ Z(dCdD„ Z)dEdF„ Z*dGS )HÚQueryTestCasec                 C   s,   t tdƒƒ| _t tdƒƒ| _| j| jd< d S )Néd   éÈ   iôÿÿÿ)r   ÚrangeÚaÚbr   r   r   r   ÚsetUpJ   s    zQueryTestCase.setUpc                 C   sÌ   t  ¡ }t jdddt ¡ dd}t  dddt ¡ ¡}t jdd}|  t¡& t  dddt ¡ d¡}W d   ƒ n1 sv0    Y  | jtt jdd	 | jtt jd
d | jtt jdd | jtt jd
d d S )Né   é(   é   T)ÚindentÚwidthÚdepthÚstreamÚcompactF©Z
sort_dictséÿÿÿÿ©r7   r   ©r9   ©r8   )ÚpprintÚPrettyPrinterÚioÚStringIOZassertRaisesÚ	TypeErrorÚ
ValueError)r   Úppr   r   r   Ú	test_initO   s    
ÿ4zQueryTestCase.test_initc                 C   s¢   t  ¡ }dddddgdddidtdƒd	d
d d| j| jfD ]d}|  t  |¡d|f ¡ |  t  |¡d|f ¡ |  | |¡d|f ¡ |  | |¡d|f ¡ q8d S )Né   g       @y               @Úabcé   )rI   rI   s   defs   ghiTF.úexpected not isrecursive for %rúexpected isreadable for %r)	rA   rB   Ú	bytearrayr1   r2   ÚassertFalseÚisrecursiveÚ
assertTrueÚ
isreadable)r   rG   Úsafer   r   r   Ú
test_basic\   s"    þÿÿÿÿzQueryTestCase.test_basicc                 C   sH  | j | jd< i | _| j | jd<  | jd< | jd< t ¡ }| j | j| j| j| jffD ]L}|  t |¡d¡ |  t |¡d¡ |  | |¡d¡ |  | |¡d¡ qT| j 	¡  | j d d …= | jd d …= | j | j| j| j| jffD ]d}|  t |¡d|f ¡ |  t |¡d|f ¡ |  | |¡d|f ¡ |  | |¡d|f ¡ qÞd S )	NéC   r   é   rI   zexpected isrecursivezexpected not isreadablerL   rM   )
r1   r2   ÚdrA   rB   rQ   rP   rO   rR   Úclear)r   rG   ZickyrS   r   r   r   Útest_knottedm   s2     
ÿÿÿÿzQueryTestCase.test_knottedc                 C   s‚   t  ¡ }tdƒt t jfD ]d}|  t  |¡d|f ¡ |  t  |¡d|f ¡ |  | |¡d|f ¡ |  | |¡d|f ¡ qd S )NrK   rL   zexpected not isreadable for %r)rA   rB   ÚtyperP   rO   rR   )r   rG   Z
unreadabler   r   r   Útest_unreadableŽ   s    ÿÿÿÿzQueryTestCase.test_unreadablec              9   C   sd  ddddddt ƒ dtƒ tƒ g tƒ tƒ tƒ tƒ tƒ tƒ t	ƒ t
ƒ i tƒ tƒ | jtdddd	d
dt dƒddgddidddgdditdƒtdƒttdƒƒddgtddgƒtddgƒttdƒƒtdhƒtdhƒtdhƒtdhƒt	dhƒt
dhƒtddiƒtddiƒtdddƒddd df9D ]R}t|ƒ}|  t |¡|¡ |  tj|ddd dd¡|¡ |  t |¡|¡ qd S )Nr   y                g        Ú ó    r   iúÿÿÿy      À      Àg      ø¿Úxó   x©rK   rK   é   )rV   rI   r4   r6   r.   é   é   é
   iõÿÿÿr=   TF.rV   )r8   r7   Ú
ú )rN   r   r   r   r	   r   r   r   r   r   r   r   r   rQ   rA   r0   ÚreprÚassertEqualÚpformatÚreplaceZsaferepr)r   ÚsimpleZnativer   r   r   Útest_same_as_repr   s4    	


$
ðÿÿzQueryTestCase.test_same_as_reprc                 C   s  ddddddddœ}d}t tfD ]}|  t ||ƒ¡|¡ q tdƒ}dd tt|ƒ¡ }t	t
fD ]}|  t ||ƒ¡|¡ q`ttdƒƒ}d	d tt|ƒ¡ }ttfD ]}|  t ||ƒ¡|¡ q¤tdƒ}d
d tt|ƒ¡ }t	t
fD ]}|  tj||ƒdd|¡ qäd S )Nr   i»»  iªª  )ZRPM_calZRPM_cal2Z	Speed_calZcontroldesk_runtime_usZmain_code_runtime_usZread_io_runtime_usZwrite_io_runtime_usz¦{'RPM_cal': 0,
 'RPM_cal2': 48059,
 'Speed_cal': 0,
 'controldesk_runtime_us': 0,
 'main_code_runtime_us': 0,
 'read_io_runtime_us': 0,
 'write_io_runtime_us': 43690}r.   z[%s]z,
 z(%s)z[   %s]z,
    r4   r>   )r   r   rh   rA   ri   r0   ÚjoinÚmapr   r   r   r   r   )r   ÚoÚexprZ   r   r   r   Útest_basic_line_wrap¾   s.    úz"QueryTestCase.test_basic_line_wrapc                 C   s^   t tdƒƒ}tdddd}||g}d}|  tj|ddd	|¡ d
}|  tj|ddd	|¡ d S )Nrd   rV   rI   rK   )ÚfirstÚsecondÚthirdzN[   [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    {'first': 1, 'second': 2, 'third': 3}]r4   é*   )r7   r8   za[   [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    {   'first': 1,
        'second': 2,
        'third': 3}]é)   )r   r0   r   rh   rA   ri   )r   Zo1Zo2ro   Úexpectedr   r   r   Útest_nested_indentationsâ   s    z&QueryTestCase.test_nested_indentationsc                 C   sh   d}t |ƒ}|  tj|dd|¡ |  tj|dd|¡ |  tj|dd|¡ |  tj|ddd¡ d S )Nz[[[[[[1, 2, 3],
     '1 2']]]],
 {1: [1, 2, 3],
  2: [12, 34]},
 'abc def ghi',
 ('ab cd ef',),
 set2({1, 23}),
 [[[[[1, 2, 3],
     '1 2']]]]]é   r@   é   é   é   zÙ[[[[[[1,
      2,
      3],
     '1 '
     '2']]]],
 {1: [1,
      2,
      3],
  2: [12,
      34]},
 'abc def '
 'ghi',
 ('ab cd '
  'ef',),
 set2({1,
       23}),
 [[[[[1,
      2,
      3],
     '1 '
     '2']]]]])Úevalrh   rA   ri   )r   rw   ro   r   r   r   Ú
test_widthñ   s    
zQueryTestCase.test_widthc                 C   sT   ddddœ}|   t |¡d¡ |   t ||g¡d¡ |   t dg gi dœ¡d¡ d S )NrV   ©r1   r2   Úcz{'a': 1, 'b': 1, 'c': 1}z4[{'a': 1, 'b': 1, 'c': 1}, {'a': 1, 'b': 1, 'c': 1}]r`   )zxy	ab
r6   r   z#{5: [[]], 'xy\tab\n': (3,), (): {}})rh   rA   ri   ©r   rW   r   r   r   Útest_sorted_dict  s    ÿÿzQueryTestCase.test_sorted_dictc                 C   s>   t  d¡}|  tj|ddd¡ |  tj||gddd¡ d S )NZcbaFr<   z!{'c': None, 'b': None, 'a': None}zF[{'c': None, 'b': None, 'a': None}, {'c': None, 'b': None, 'a': None}])r   Úfromkeysrh   rA   ri   r   r   r   r   Útest_sort_dict)  s
    
ÿzQueryTestCase.test_sort_dictc                 C   sp   t  ¡ }|  tj|ddd¡ t  g ¡}|  tj|ddd¡ d ¡ }t  t|t ¡ ƒ¡}|  t |¡d¡ d S )NrV   r@   zOrderedDict()ú*the quick brown fox jumped over a lazy dogzèOrderedDict([('the', 0),
             ('quick', 1),
             ('brown', 2),
             ('fox', 3),
             ('jumped', 4),
             ('over', 5),
             ('a', 6),
             ('lazy', 7),
             ('dog', 8)]))	ÚcollectionsÚOrderedDictrh   rA   ri   ÚsplitÚzipÚ	itertoolsÚcount©r   rW   Úwordsr   r   r   Útest_ordered_dict/  s    
ÿzQueryTestCase.test_ordered_dictc                 C   sj   d  ¡ }tt|t ¡ ƒƒ}t |¡}|  t 	|¡d¡ t
 t|t ¡ ƒ¡}t |¡}|  t 	|¡d¡ d S )Nr…   zßmappingproxy({'a': 6,
              'brown': 2,
              'dog': 8,
              'fox': 3,
              'jumped': 4,
              'lazy': 7,
              'over': 5,
              'quick': 1,
              'the': 0})a^  mappingproxy(OrderedDict([('the', 0),
                          ('quick', 1),
                          ('brown', 2),
                          ('fox', 3),
                          ('jumped', 4),
                          ('over', 5),
                          ('a', 6),
                          ('lazy', 7),
                          ('dog', 8)])))rˆ   r   r‰   rŠ   r‹   ÚtypesÚMappingProxyTyperh   rA   ri   r†   r‡   )r   r   rW   Úmr   r   r   Útest_mapping_proxyB  s    


z QueryTestCase.test_mapping_proxyc                 C   s"   t  ¡ }t |¡}|  |d¡ d S )Nznamespace()©r   ÚSimpleNamespacerA   ri   rh   ©r   ÚnsÚ	formattedr   r   r   Útest_empty_simple_namespace]  s    
z)QueryTestCase.test_empty_simple_namespacec                 C   s(   t jddd}t |¡}|  |d¡ d S )NrV   rI   )r1   r2   znamespace(a=1, b=2)r“   r•   r   r   r   Útest_small_simple_namespaceb  s    
z)QueryTestCase.test_small_simple_namespacec                 C   s:   t jddddddddd	d
	}tj|dd}|  |d¡ d S )Nr   rV   rI   rK   r4   r6   ra   rb   rc   ©	ZtheZquickZbrownÚfoxZjumpedZoverr1   ZlazyZdogé<   r@   zŸnamespace(the=0,
          quick=1,
          brown=2,
          fox=3,
          jumped=4,
          over=5,
          a=6,
          lazy=7,
          dog=8)r“   r•   r   r   r   Útest_simple_namespaceg  s    ÷z#QueryTestCase.test_simple_namespacec                 C   sJ   G dd„ dt jƒ}|ddddddd	d
dd	}tj|dd}|  |d¡ d S )Nc                   @   s   e Zd ZdS )zGQueryTestCase.test_simple_namespace_subclass.<locals>.AdvancedNamespaceNr   r   r   r   r   ÚAdvancedNamespace€  r]   rž   r   rV   rI   rK   r4   r6   ra   rb   rc   rš   rœ   r@   zçAdvancedNamespace(the=0,
                  quick=1,
                  brown=2,
                  fox=3,
                  jumped=4,
                  over=5,
                  a=6,
                  lazy=7,
                  dog=8)r“   )r   rž   r–   r—   r   r   r   Útest_simple_namespace_subclass  s    ÷z,QueryTestCase.test_simple_namespace_subclassc                 C   s&   dddœ}d}|   tƒ  |¡|¡ d S )Nz should be presented using repr()z	like.this)znames with spaceszothers.should.not.bez[{'names with spaces': 'should be presented using repr()',
 others.should.not.be: like.this})rh   ÚDottedPrettyPrinterri   )r   ro   rp   r   r   r   Útest_subclassing˜  s
    ÿzQueryTestCase.test_subclassingc                 C   s  |   t tƒ ¡d¡ |   t ttdƒƒ¡d¡ |   tjttdƒƒddd¡ |   tjttdƒƒddd¡ |   tjttdƒƒddd	¡ |   t tƒ ¡d
¡ |   t ttdƒƒ¡d¡ |   tjttdƒƒddd¡ |   tjttdƒƒddd¡ |   tjt	tdƒƒddd¡ d S )Nzset()rK   z	{0, 1, 2}rb   é   r@   z{0,
 1,
 2,
 3,
 4,
 5,
 6}z?set2({0,
      1,
      2,
      3,
      4,
      5,
      6})zset3({0, 1, 2, 3, 4, 5, 6})zfrozenset()zfrozenset({0, 1, 2})zbfrozenset({0,
           1,
           2,
           3,
           4,
           5,
           6})zifrozenset2({0,
            1,
            2,
            3,
            4,
            5,
            6})z!frozenset3({0, 1, 2, 3, 4, 5, 6}))
rh   rA   ri   r   r0   r   r   r   r   r   r   r   r   r   Útest_set_reprs   s     ÿÿÿzQueryTestCase.test_set_reprsc                 C   sH   d}t j d¡}|  t |¡|¡ d}t j |¡}|  t |¡|¡ d S )NaE  {frozenset(): frozenset({frozenset({2}), frozenset({0}), frozenset({1})}),
 frozenset({0}): frozenset({frozenset(),
                            frozenset({0, 2}),
                            frozenset({0, 1})}),
 frozenset({1}): frozenset({frozenset(),
                            frozenset({1, 2}),
                            frozenset({0, 1})}),
 frozenset({2}): frozenset({frozenset(),
                            frozenset({1, 2}),
                            frozenset({0, 2})}),
 frozenset({1, 2}): frozenset({frozenset({2}),
                               frozenset({1}),
                               frozenset({0, 1, 2})}),
 frozenset({0, 2}): frozenset({frozenset({2}),
                               frozenset({0}),
                               frozenset({0, 1, 2})}),
 frozenset({0, 1}): frozenset({frozenset({0}),
                               frozenset({1}),
                               frozenset({0, 1, 2})}),
 frozenset({0, 1, 2}): frozenset({frozenset({1, 2}),
                                  frozenset({0, 2}),
                                  frozenset({0, 1})})}rK   aK5  {frozenset({frozenset({0, 2}), frozenset({0})}): frozenset({frozenset({frozenset({0,
                                                                                  2}),
                                                                       frozenset({0,
                                                                                  1,
                                                                                  2})}),
                                                            frozenset({frozenset({0}),
                                                                       frozenset({0,
                                                                                  1})}),
                                                            frozenset({frozenset(),
                                                                       frozenset({0})}),
                                                            frozenset({frozenset({2}),
                                                                       frozenset({0,
                                                                                  2})})}),
 frozenset({frozenset({0, 1}), frozenset({1})}): frozenset({frozenset({frozenset({0,
                                                                                  1}),
                                                                       frozenset({0,
                                                                                  1,
                                                                                  2})}),
                                                            frozenset({frozenset({0}),
                                                                       frozenset({0,
                                                                                  1})}),
                                                            frozenset({frozenset({1}),
                                                                       frozenset({1,
                                                                                  2})}),
                                                            frozenset({frozenset(),
                                                                       frozenset({1})})}),
 frozenset({frozenset({1, 2}), frozenset({1})}): frozenset({frozenset({frozenset({1,
                                                                                  2}),
                                                                       frozenset({0,
                                                                                  1,
                                                                                  2})}),
                                                            frozenset({frozenset({2}),
                                                                       frozenset({1,
                                                                                  2})}),
                                                            frozenset({frozenset(),
                                                                       frozenset({1})}),
                                                            frozenset({frozenset({1}),
                                                                       frozenset({0,
                                                                                  1})})}),
 frozenset({frozenset({1, 2}), frozenset({2})}): frozenset({frozenset({frozenset({1,
                                                                                  2}),
                                                                       frozenset({0,
                                                                                  1,
                                                                                  2})}),
                                                            frozenset({frozenset({1}),
                                                                       frozenset({1,
                                                                                  2})}),
                                                            frozenset({frozenset({2}),
                                                                       frozenset({0,
                                                                                  2})}),
                                                            frozenset({frozenset(),
                                                                       frozenset({2})})}),
 frozenset({frozenset(), frozenset({0})}): frozenset({frozenset({frozenset({0}),
                                                                 frozenset({0,
                                                                            1})}),
                                                      frozenset({frozenset({0}),
                                                                 frozenset({0,
                                                                            2})}),
                                                      frozenset({frozenset(),
                                                                 frozenset({1})}),
                                                      frozenset({frozenset(),
                                                                 frozenset({2})})}),
 frozenset({frozenset(), frozenset({1})}): frozenset({frozenset({frozenset(),
                                                                 frozenset({0})}),
                                                      frozenset({frozenset({1}),
                                                                 frozenset({1,
                                                                            2})}),
                                                      frozenset({frozenset(),
                                                                 frozenset({2})}),
                                                      frozenset({frozenset({1}),
                                                                 frozenset({0,
                                                                            1})})}),
 frozenset({frozenset({2}), frozenset()}): frozenset({frozenset({frozenset({2}),
                                                                 frozenset({1,
                                                                            2})}),
                                                      frozenset({frozenset(),
                                                                 frozenset({0})}),
                                                      frozenset({frozenset(),
                                                                 frozenset({1})}),
                                                      frozenset({frozenset({2}),
                                                                 frozenset({0,
                                                                            2})})}),
 frozenset({frozenset({0, 1, 2}), frozenset({0, 1})}): frozenset({frozenset({frozenset({1,
                                                                                        2}),
                                                                             frozenset({0,
                                                                                        1,
                                                                                        2})}),
                                                                  frozenset({frozenset({0,
                                                                                        2}),
                                                                             frozenset({0,
                                                                                        1,
                                                                                        2})}),
                                                                  frozenset({frozenset({0}),
                                                                             frozenset({0,
                                                                                        1})}),
                                                                  frozenset({frozenset({1}),
                                                                             frozenset({0,
                                                                                        1})})}),
 frozenset({frozenset({0}), frozenset({0, 1})}): frozenset({frozenset({frozenset(),
                                                                       frozenset({0})}),
                                                            frozenset({frozenset({0,
                                                                                  1}),
                                                                       frozenset({0,
                                                                                  1,
                                                                                  2})}),
                                                            frozenset({frozenset({0}),
                                                                       frozenset({0,
                                                                                  2})}),
                                                            frozenset({frozenset({1}),
                                                                       frozenset({0,
                                                                                  1})})}),
 frozenset({frozenset({2}), frozenset({0, 2})}): frozenset({frozenset({frozenset({0,
                                                                                  2}),
                                                                       frozenset({0,
                                                                                  1,
                                                                                  2})}),
                                                            frozenset({frozenset({2}),
                                                                       frozenset({1,
                                                                                  2})}),
                                                            frozenset({frozenset({0}),
                                                                       frozenset({0,
                                                                                  2})}),
                                                            frozenset({frozenset(),
                                                                       frozenset({2})})}),
 frozenset({frozenset({0, 1, 2}), frozenset({0, 2})}): frozenset({frozenset({frozenset({1,
                                                                                        2}),
                                                                             frozenset({0,
                                                                                        1,
                                                                                        2})}),
                                                                  frozenset({frozenset({0,
                                                                                        1}),
                                                                             frozenset({0,
                                                                                        1,
                                                                                        2})}),
                                                                  frozenset({frozenset({0}),
                                                                             frozenset({0,
                                                                                        2})}),
                                                                  frozenset({frozenset({2}),
                                                                             frozenset({0,
                                                                                        2})})}),
 frozenset({frozenset({1, 2}), frozenset({0, 1, 2})}): frozenset({frozenset({frozenset({0,
                                                                                        2}),
                                                                             frozenset({0,
                                                                                        1,
                                                                                        2})}),
                                                                  frozenset({frozenset({0,
                                                                                        1}),
                                                                             frozenset({0,
                                                                                        1,
                                                                                        2})}),
                                                                  frozenset({frozenset({2}),
                                                                             frozenset({1,
                                                                                        2})}),
                                                                  frozenset({frozenset({1}),
                                                                             frozenset({1,
                                                                                        2})})})})ÚtestZtest_setÚcuberh   rA   ri   Z	linegraph)r   Zcube_repr_tgtr¥   Zcubo_repr_tgtZcubor   r   r   Útest_set_of_sets_reprsÌ  s     z$QueryTestCase.test_set_of_sets_reprsc                 C   sÐ   d}dddddddiiiiii}ddddddg gggggg}|   t |¡t|ƒ¡ |   t |¡t|ƒ¡ |   t |¡t|ƒ¡ d}d	}d
}|   tj|dd|¡ |   tj|dd|¡ |   tj|dd|¡ d S )N)rV   )rI   )rK   )r4   )r6   ra   rV   rI   rK   r4   r6   ra   z
(1, (...))z
{1: {...}}z
[1, [...]]r?   )rh   rA   ri   rg   )r   Znested_tupleZnested_dictZnested_listZ	lv1_tupleZlv1_dictZlv1_listr   r   r   Ú
test_depth   s    zQueryTestCase.test_depthc              	   C   s   d}dd„ t |ƒD ƒ}t |¡ t|td}dd„ }|  |t t|ƒ¡ƒdd 	t
t|ƒ¡ d	 ¡ |  |t t|ƒ¡ƒd
d 	t
t|ƒ¡ d ¡ |  |t t |¡¡ƒdd 	dd„ |D ƒ¡ d	 ¡ |  t tdddi¡dttƒ d ¡ ddg}|  t t |d¡¡dtt|tdƒ ¡ d S )Nr¢   c                 S   s   g | ]
}t ƒ ‘qS r   )r   ©Ú.0Úir   r   r   Ú
<listcomp>²  r]   z>QueryTestCase.test_sort_unorderable_values.<locals>.<listcomp>)Úkeyc                 S   s   |   dd¡  dd¡S )Nrf   r\   re   )rj   )Úsr   r   r   Ú<lambda>µ  r]   z<QueryTestCase.test_sort_unorderable_values.<locals>.<lambda>Ú{ú,Ú}zfrozenset({z})c                 s   s   | ]}d | V  qdS )z%r:NoneNr   )r©   Úkr   r   r   Ú	<genexpr>¼  r]   z=QueryTestCase.test_sort_unorderable_values.<locals>.<genexpr>r   rV   z{1: 0, z: 0})rV   r
   z{%r: 0, %r: 0})r0   ÚrandomÚshuffleÚsortedr   rh   rA   ri   r   rm   rn   rg   r   r   rƒ   r   r   )r   ÚnÚkeysZskeysZcleanr   r   r   Útest_sort_unorderable_values¯  s*    
ÿÿÿÿÿz*QueryTestCase.test_sort_unorderable_valuesc                 C   s
  t ƒ }tt|ƒƒ}|  ||¡ |  tt|ƒƒtt|ƒƒ¡ |  t||gƒ||g¡ |  t||gƒ||g¡ |  tj	t
||gƒddd||f ¡ |  tj	t
||gƒddd||f ¡ |  tj	t ||g¡ddd||f ¡ |  tj	t ||g¡ddd||f ¡ d S )NrV   r@   z	{%r,
 %r}z{%r: None,
 %r: None})r   r   r"   Z
assertLessr   rZ   rh   r¶   rA   ri   r   r   rƒ   )r   r1   r2   r   r   r   Ú*test_sort_orderable_and_unorderable_valuesÇ  s$    
ÿ
ÿ
ÿ
ÿz8QueryTestCase.test_sort_orderable_and_unorderable_valuesc                 C   sx  d}|   tj|ddd¡ |   tjd|ddœddd	¡ d
}|   tj|ddt|ƒ¡ |   tj|ddd¡ |   tj|ddd¡ |   tj|gggggddd¡ |   tj|gggggddd¡ |   tj|gggggddd¡ d}|   tj|ddt|ƒ¡ |   t d¡d¡ |d9 }tddƒD ]N}tj||d}|   t|ƒ|¡ tj|gd |d}|   t|ƒ|gd ¡ q$d S )Nr…   é   r@   ú6('the quick brown '
 'fox jumped over '
 'a lazy dog')rV   rI   r   r{   zW{'a': 1,
 'b': 'the quick brown '
      'fox jumped over '
      'a lazy dog',
 'c': 2}u@   Portons dix bons "whiskys"
Ã  l'avocat goujat	 qui fumait au zooéD   é   uN   ('Portons dix bons "whiskys"\n'
 "Ã  l'avocat goujat\t qui "
 'fumait au zoo')r¢   uV   ('Portons dix bons '
 '"whiskys"\n'
 "Ã  l'avocat "
 'goujat\t qui '
 'fumait au zoo')é#   u^   [[[[['Portons dix bons "whiskys"\n'
     "Ã  l'avocat goujat\t qui "
     'fumait au zoo']]]]]un   [[[[['Portons dix bons '
     '"whiskys"\n'
     "Ã  l'avocat "
     'goujat\t qui '
     'fumait au zoo']]]]]é   uv   [[[[['Portons dix '
     'bons "whiskys"\n'
     "Ã  l'avocat "
     'goujat\t qui '
     'fumait au '
     'zoo']]]]]ZdxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxéP   r\   ú''rd   rK   r5   )rh   rA   ri   rg   r0   r}   )r   r›   ÚspecialZunwrappabler8   r—   r   r   r   Útest_str_wrapÛ  s.    ÿÿ   zQueryTestCase.test_str_wrapc                 C   sD   dd„ t dƒD ƒdd„ t dƒD ƒ }d}|  tj|ddd	|¡ d S )
Nc                 S   s   g | ]}t t|| ƒƒ‘qS r   ©r   r0   r¨   r   r   r   r«     r]   z.QueryTestCase.test_compact.<locals>.<listcomp>r6   c                 S   s   g | ]}t t|ƒƒ‘qS r   rÅ   r¨   r   r   r   r«     r]   ra   z­[[], [0], [0, 1, 2, 3],
 [0, 1, 2, 3, 4, 5, 6, 7, 8],
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
  14, 15],
 [], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3],
 [0, 1, 2, 3, 4]]é/   T©r8   r;   )r0   rh   rA   ri   )r   ro   rw   r   r   r   Útest_compact  s
    ÿzQueryTestCase.test_compactc                 C   s   d}d}dg| }t |d ƒD ]
}|g}qt |d d |d|  d ƒD ]B}tj||dd ¡ }ttt|ƒƒ}|  ||¡ |  ||d ¡ qHd S )	Nr¢   rd   r   rV   rI   rK   TrÇ   )	r0   rA   ri   Ú
splitlinesÚmaxrn   ÚlenZassertLessEqualZassertGreater)r   ZlevelsZnumberro   rª   ÚwÚlinesZmaxwidthr   r   r   Útest_compact_width#  s    
"z QueryTestCase.test_compact_widthc                 C   sÒ  |   tjdddd¡ |   tjdddd¡ d}|   tj|ddt|ƒ¡ |   tj|d	dd
¡ |   tj|ddd¡ |   tj|ddd¡ ttdƒƒ}|   tj|ddt|ƒ¡ |   tj|ddd¡ |   tj|ddd¡ |   tj|ddd¡ |   tjd|ddœddd¡ |   tjd|ddœddd¡ |   tj|ggggggddd¡ |   tj|ggggggddd¡ tddƒD ]N}tj||d}|   t|ƒ|¡ tj|gd |d}|   t|ƒ|gd ¡ q~d S )Nr]   rV   r@   zb''s   abcdzb'abcd'ó   abcdefghijklmnopqrstuvwxyzé   r»   z$(b'abcdefghijkl'
 b'mnopqrstuvwxyz')é   z)(b'abcdefghijkl'
 b'mnopqrstuvwx'
 b'yz')rz   é=   é0   zD(b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b'
 b'\x0c\r\x0e\x0f')é    zI(b'\x00\x01\x02\x03'
 b'\x04\x05\x06\x07\x08\t\n\x0b'
 b'\x0c\r\x0e\x0f')zN(b'\x00\x01\x02\x03'
 b'\x04\x05\x06\x07'
 b'\x08\t\n\x0b'
 b'\x0c\r\x0e\x0f')rI   r   é   zJ{'a': 1,
 'b': b'abcdefghijkl'
      b'mnopqrstuvwx'
      b'yz',
 'c': 2}r¢   zJ{'a': 1,
 'b': b'abcdefgh'
      b'ijklmnop'
      b'qrstuvwxyz',
 'c': 2}r{   z3[[[[[[b'abcdefghijklmnop'
      b'qrstuvwxyz']]]]]]rv   zS[[[[[[b'\x00\x01\x02\x03\x04\x05\x06\x07'
      b'\x08\t\n\x0b\x0c\r\x0e\x0f']]]]]]é@   )rh   rA   ri   rg   Úbytesr0   r}   )r   ÚlettersrÃ   r8   r—   r   r   r   Útest_bytes_wrap/  s:    ÿÿÿÿ""zQueryTestCase.test_bytes_wrapc                 C   sF  |   tjtƒ ddd¡ tdƒ}|   tj|ddt|ƒ¡ |   tj|ddd¡ |   tj|ddd	¡ |   tj|d
dd	¡ ttdƒƒ}|   tj|ddt|ƒ¡ |   tj|ddd¡ |   tj|ddd¡ |   tj|ddd¡ |   tjd|ddœddd¡ |   tj|gggggddd¡ |   tj|gggggddd¡ d S )NrV   r@   zbytearray(b'')rÏ   r5   é   z6bytearray(b'abcdefghijkl'
          b'mnopqrstuvwxyz')é   zDbytearray(b'abcdefghijkl'
          b'mnopqrstuvwx'
          b'yz')r{   rz   éH   é9   zVbytearray(b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b'
          b'\x0c\r\x0e\x0f')rv   zdbytearray(b'\x00\x01\x02\x03'
          b'\x04\x05\x06\x07\x08\t\n\x0b'
          b'\x0c\r\x0e\x0f')zrbytearray(b'\x00\x01\x02\x03'
          b'\x04\x05\x06\x07'
          b'\x08\t\n\x0b'
          b'\x0c\r\x0e\x0f')rI   r   r¾   zi{'a': 1,
 'b': bytearray(b'abcdefghijkl'
                b'mnopqrstuvwx'
                b'yz'),
 'c': 2}é%   zE[[[[[bytearray(b'abcdefghijklmnop'
               b'qrstuvwxyz')]]]]]é2   ze[[[[[bytearray(b'\x00\x01\x02\x03\x04\x05\x06\x07'
               b'\x08\t\n\x0b\x0c\r\x0e\x0f')]]]]])rh   rA   ri   rN   rg   r0   )r   rØ   rÃ   r   r   r   Útest_bytearray_wraph  s$    ÿÿ z!QueryTestCase.test_bytearray_wrapc                 C   sT   t  t¡}|  tj|ddd¡ d ¡ }t  tt|t 	¡ ƒ¡}|  t |¡d¡ d S )NrV   r@   zdefaultdict(<class 'int'>, {})r…   zñdefaultdict(<class 'int'>,
            {'a': 6,
             'brown': 2,
             'dog': 8,
             'fox': 3,
             'jumped': 4,
             'lazy': 7,
             'over': 5,
             'quick': 1,
             'the': 0}))
r†   ÚdefaultdictÚintrh   rA   ri   rˆ   r‰   rŠ   r‹   rŒ   r   r   r   Útest_default_dict“  s    
ÿzQueryTestCase.test_default_dictc                 C   sB   t  ¡ }|  tj|ddd¡ t  d¡}|  tj|ddd¡ d S )NrV   r@   z	Counter()Zsenselessnessr5   zDCounter({'s': 6,
         'e': 4,
         'n': 2,
         'l': 1}))r†   ÚCounterrh   rA   ri   r   r   r   r   Útest_counter¥  s    
ÿzQueryTestCase.test_counterc                 C   s„   t  ¡ }|  tj|ddd¡ d ¡ }tt|t 	¡ ƒƒ}t  t
|ƒ¡}|  t |¡d¡ t  t
|ƒt  |¡¡}|  t |¡d¡ d S )NrV   r@   zChainMap({})r…   z»ChainMap({'a': 6,
          'brown': 2,
          'dog': 8,
          'fox': 3,
          'jumped': 4,
          'lazy': 7,
          'over': 5,
          'quick': 1,
          'the': 0})aö  ChainMap({'a': 6,
          'brown': 2,
          'dog': 8,
          'fox': 3,
          'jumped': 4,
          'lazy': 7,
          'over': 5,
          'quick': 1,
          'the': 0},
         OrderedDict([('the', 0),
                      ('quick', 1),
                      ('brown', 2),
                      ('fox', 3),
                      ('jumped', 4),
                      ('over', 5),
                      ('a', 6),
                      ('lazy', 7),
                      ('dog', 8)])))r†   ÚChainMaprh   rA   ri   rˆ   r   r‰   rŠ   r‹   r   r‡   )r   rW   r   Úitemsr   r   r   Útest_chainmap°  s    ÿÿzQueryTestCase.test_chainmapc                 C   sœ   t  ¡ }|  tj|ddd¡ t jdd}|  tj|ddd¡ d ¡ }t  t|t ¡ ƒ¡}|  t |¡d¡ t jt|t ¡ ƒdd}|  t |¡d	¡ d S )
NrV   r@   z	deque([])rb   )Úmaxlenzdeque([], maxlen=7)r…   z²deque([('the', 0),
       ('quick', 1),
       ('brown', 2),
       ('fox', 3),
       ('jumped', 4),
       ('over', 5),
       ('a', 6),
       ('lazy', 7),
       ('dog', 8)])zšdeque([('brown', 2),
       ('fox', 3),
       ('jumped', 4),
       ('over', 5),
       ('a', 6),
       ('lazy', 7),
       ('dog', 8)],
      maxlen=7))	r†   Údequerh   rA   ri   rˆ   r‰   rŠ   r‹   rŒ   r   r   r   Ú
test_deque×  s    ÿÿzQueryTestCase.test_dequec                 C   sP   t  ¡ }|  tj|ddd¡ d ¡ }t  t|t ¡ ƒ¡}|  t |¡d¡ d S )NrV   r@   z{}r…   zi{'a': 6,
 'brown': 2,
 'dog': 8,
 'fox': 3,
 'jumped': 4,
 'lazy': 7,
 'over': 5,
 'quick': 1,
 'the': 0})	r†   ÚUserDictrh   rA   ri   rˆ   r‰   rŠ   r‹   rŒ   r   r   r   Útest_user_dictõ  s    ÿzQueryTestCase.test_user_dictc                 C   sP   t  ¡ }|  tj|ddd¡ d ¡ }t  t|t ¡ ƒ¡}|  t |¡d¡ d S )NrV   r@   z[]r…   z{[('the', 0),
 ('quick', 1),
 ('brown', 2),
 ('fox', 3),
 ('jumped', 4),
 ('over', 5),
 ('a', 6),
 ('lazy', 7),
 ('dog', 8)])	r†   ÚUserListrh   rA   ri   rˆ   r‰   rŠ   r‹   rŒ   r   r   r   Útest_user_list  s    ÿzQueryTestCase.test_user_listc                 C   s^   t  d¡}|  tj|ddd¡ t  d¡}|  tj|ddd¡ |  tjd|iddd¡ d S )	Nr\   rV   r@   rÂ   r…   r¢   r¼   zF{1: 'the quick '
    'brown fox '
    'jumped over a '
    'lazy dog'})r†   Ú
UserStringrh   rA   ri   r   r   r   r   Útest_user_string  s    

ÿÿzQueryTestCase.test_user_stringN)+r   r   r   r3   rH   rT   rY   r[   rl   rq   rx   r~   r‚   r„   rŽ   r’   r˜   r™   r   rŸ   r¡   r£   ÚunittestZexpectedFailurer¤   ÚsupportZcpython_onlyr¦   r§   r¹   rº   rÄ   rÈ   rÎ   rÙ   rà   rã   rå   rè   rë   rí   rï   rñ   r   r   r   r   r-   H   sL   !!$&, R<9+'r-   c                   @   s   e Zd Zdd„ ZdS )r    c                 C   sD   t |tƒr,d|v r t|ƒddfS |ddfS ntj | ||||¡S d S )Nrf   rV   r   )Ú
isinstancer   rg   rA   rB   Úformat)r   ÚobjectÚcontextÚ	maxlevelsÚlevelr   r   r   rõ   *  s    

ÿzDottedPrettyPrinter.formatN)r   r   r   rõ   r   r   r   r   r    (  s   r    Ú__main__)!r†   rC   rŠ   rA   r´   Ztest.supportr¤   Ztest.test_setr   rò   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZTestCaser-   rB   r    r   Úmainr   r   r   r   Ú<module>   s>          g
