B
    u9aY                 @   s   d dl mZmZ d dlZd dlZd dl mZ d dlZejZdddZ	dddZ
dd	 Zd
d ZG dd dejZedkre  dS )    )verbose
TestFailedNFc             C   s  t r4|r td| ||dd ntd| |dd y| | }W n& tk
rf   |sV t rbtd Y nX |r|d kr||krt rtd td| |||f nz|r
|d k	r
t|t|ks|d | |d | kr
t rtd tdt| t|t|t|f  nt rtd	 d S )
Nz{!a} % {!a} =? {!a} ... )endz{!a} % {!a} works? ...zoverflow (this is fine)noz%r %% %r == %r != %rz%s %% %s == %s != %syes)r   printformatOverflowErrorAssertionErrorlenrepr)	formatstrargsoutputlimit
overflowokresult r   !/usr/lib/python3.7/test_format.py
testformat   s2    
*"r   c       
      C   s   t | tr&t| |||| | d}n| }t|}g }t |tsF|f}t|}|d kr`d  }}	n"t |trv|d}n|}t|}	t||||| t|||	|| d S )Nascii)
isinstancestrr   encode	bytearraytuple)
r   r   r   r   r   Zb_formatZ	ba_formatZb_argsZb_outputZ	ba_outputr   r   r   
testcommon1   s"    



r   c          
   C   s   yt | | W n~ |k
rl } z@t||kr:tr\td n"trFtd td|dtt| W d d }~X Y n.   tr~td td  Y nX td| d S )Nr   r   zUnexpected :zUnexpected exceptionz"did not get expected exception: %s)r   r   r   r   r   r   )r   r   	exceptionexcmsgexcr   r   r   test_excI   s    
 & r"   c             C   s&   t | ||| t | d||| d S )Nr   )r"   r   )r   r   r   r    r   r   r   test_exc_commonZ   s    r#   c               @   s`   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
dd Zdd Ze	j
dd ZdS )
FormatTestc             C   s  t ddd t ddd t dtjdfd	d
 t dddd	d
 t dddd	d
 t dddd	d
 t ddd t dd t dd t dd t dd t dd t dd t dd t dd t ddd t dd d! t d"dd# t d"d d$ t d%dd& t d%d d' d(}t d%|d) t d%| d* t d+| d* t d,| d* t d-| d. t d/| d0 t d1| d2 t d3| d0 t d4| d5 t d4|d6 t d7|d8 t d9|d: t d;|d< t d=|d) t d>|d) t d?|d@ t dA|dB t d%t|dCdD dE}t d|dF t d| dG t dH| dG t dI| dG t dJ| dK t dL| dM t dN| dO t dP| dM t dQ| dR t dQ|dS t dT|dU t dV|dW t dX|dY t dZ|dF t d[|dF t d\|d] t d^|d_ t d`|da t db|dc t dd|de t df|dg t df| dh t di|dj t dk|dl t dm|dn t do|dp t do| dq t dr|ds t dt|du t dv|dn t dw|dx t dy|dz t d{|d| t d}|d~ t d|d t d|d t d|d t d|d d}t d"|d t d"| d t d| d t d| d t d| d t d| d t d| d t d| d t d| d t d|d t d|d t d|d t d|d t d|d t d|d t d|d t d|d t d|d t d"|d t d|d t d| d t d|d t d|d t d|d t d|d t d| d t d|d t d|d t d|d t d|d t d|d t d|d t d|d t d|d t d|d t d|d t d|d t d|dă t d|d t d|dǃ t d|dă t d%ddʃ t d%dd̃ t d%ddʃ t dfdd΃ t ddddσ t dddЃ t ddd҃ t d"ddӃ t d%ddӃ t dfddԃ t ddddՃ t dddʃ t ddd̃ t d"ddʃ t d"dd̃ t ddd܃ t dddރ trtd߃ tddtd tddtd td%dtd td%dtd tddtd tddtd d S )Nz%%r   %z%.1d)   1z%.*dr&   T)r   z%.100dZd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001z%#.117xZw0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001z%#.118xZx0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001z%f)g      ?z1.000000z%#.*g)m   gц>)n   gц>)r)   gQ2<bz%12.*f)i@ g      ?z%#.*Gz%#.*fz%#.*Fz%x
   al    h] Z
174876e800z%oZ12Z1351035564000z%dZ10Z100000000000l   
~l!]c Z123456789012345678901234567890z-123456789012345678901234567890z%5dz%31dz%32dz  -123456789012345678901234567890z%-32dz -123456789012345678901234567890 z%032dz -0123456789012345678901234567890z%-032dz%034dz"-000123456789012345678901234567890Z"0000123456789012345678901234567890z%0+34dz"+000123456789012345678901234567890z%+34dz"   +123456789012345678901234567890z%34dz"    123456789012345678901234567890z%.2dz%.30dz%.31dZ0123456789012345678901234567890z%32.31dz  0123456789012345678901234567890Z123456________________________   l   E#=*H<V4$ Z1234567890abcdef12345z-1234567890abcdef12345z%5xz%22xz%23xz -1234567890abcdef12345z%-23xz-1234567890abcdef12345 z%023xz-01234567890abcdef12345z%-023xz%025xz-0001234567890abcdef12345Z00001234567890abcdef12345z%0+25xz+0001234567890abcdef12345z%+25xz   +1234567890abcdef12345z%25xz    1234567890abcdef12345z%.2xz%.21xz%.22xZ01234567890abcdef12345z%23.22xz 01234567890abcdef12345z%-23.22xz01234567890abcdef12345 z%XZ1234567890ABCDEF12345z%#XZ0X1234567890ABCDEF12345z%#xZ0x1234567890abcdef12345z-0x1234567890abcdef12345z%#27xz    0x1234567890abcdef12345z%#-27xz0x1234567890abcdef12345    z%#027xZ0x00001234567890abcdef12345z%#.23xZ0x001234567890abcdef12345z-0x001234567890abcdef12345z%#27.23xz  0x001234567890abcdef12345z	%#-27.23xz0x001234567890abcdef12345  z	%#027.23xz%#+.23xz+0x001234567890abcdef12345z%# .23xz 0x001234567890abcdef12345z%#+.23Xz+0X001234567890ABCDEF12345z
%#+027.23Xz+0X0001234567890ABCDEF12345z
%# 027.23Xz 0X0001234567890ABCDEF12345z	%#+27.23Xz +0X001234567890ABCDEF12345z
%#-+27.23xz+0x001234567890abcdef12345 z
%#- 27.23xz 0x001234567890abcdef12345 l   KSp.']w9
 Z 12345670123456701234567012345670z!-12345670123456701234567012345670z%5oz%33oz%34oz" -12345670123456701234567012345670z%-34oz"-12345670123456701234567012345670 z%034oz"-012345670123456701234567012345670z%-034oz%036oz$-00012345670123456701234567012345670Z$000012345670123456701234567012345670z%0+36oz$+00012345670123456701234567012345670z%+36oz$   +12345670123456701234567012345670z%36oz$    12345670123456701234567012345670z%.2oz%.32oz%.33oZ!012345670123456701234567012345670z%34.33oz" 012345670123456701234567012345670z%-34.33oz"012345670123456701234567012345670 z%#oZ"0o12345670123456701234567012345670z#-0o12345670123456701234567012345670z%#38oz&    0o12345670123456701234567012345670z%#-38oz&0o12345670123456701234567012345670    z%#038oZ&0o000012345670123456701234567012345670z%#.34oZ$0o0012345670123456701234567012345670z%-0o0012345670123456701234567012345670z%#38.34oz&  0o0012345670123456701234567012345670z	%#-38.34oz&0o0012345670123456701234567012345670  z	%#038.34oz%#+.34oz%+0o0012345670123456701234567012345670z%# .34oz% 0o0012345670123456701234567012345670z	%#+38.34oz& +0o0012345670123456701234567012345670z
%#-+38.34oz&+0o0012345670123456701234567012345670 z
%#- 38.34oz& 0o0012345670123456701234567012345670 z
%#+038.34oz&+0o00012345670123456701234567012345670z
%# 038.34oz& 0o00012345670123456701234567012345670z%#.33oZ#0o012345670123456701234567012345670z%#.32oz%035.33oZ#00012345670123456701234567012345670z	%0#35.33o*   Z42iz-42g      E@Z0x1Z0X1Z0o1r   Z0o00Z0x0Z0X0B   i"   iz%gg?z1.1z%#gz1.10000zTesting exceptionszincomplete formatz% %sz2unsupported format character '%' (0x25) at index 2z(%d format: a number is required, not str   1z*%d format: a number is required, not bytesz*%x format: an integer is required, not strgQ	@z,%x format: an integer is required, not float)	r   sysmaxsizefloatr   r   r#   
ValueError	TypeError)selfZbigr   r   r   test_common_formata   s4   







zFormatTest.test_common_formatc             C   s   t ddd t ddd t ddd t ddd tr<td td	d
td tddtd tddtd tddtd tdtjd
 td tddtd tddtd tddtd t	dkrydt	df  W n t
k
r   Y n
X tdd S )Nz%ru   ͸z'\u0378'z%au   ʹu   'ʹ'z'\u0374'zTesting exceptionszabc %br&   z2unsupported format character 'b' (0x62) at index 5z%gr'   zmust be real number, not strz	no formatz4not all arguments converted during string formattingz%cz%c arg not in range(0x110000)gQ	@z%c requires int or charZab   xiz%*diz!"%*d"%(maxsize, -127) should fail)r   r   r   r"   r5   r6   r
   r2   
maxunicoder3   MemoryErrorr   )r7   r   r   r   test_str_format  s.    zFormatTest.test_str_formatc             C   s0  t ddd t ddd t dtdd t ddd t ddd	 G d
d dt}| }t ddd t dtdd t d|d t dtdd t ddd t dtdd t d|d t dtdd t ddd t ddd t ddd t ddd t ddd t ddd t ddd t ddd tr4td tddtd tddtd  td!dtd" td!dtd" td!tdtd" tdd#td$ tdd%td$ tdd&d' td$ tdd(td) tdd*td) tddtd) tdd+td, tdd-td, t	d.kr,yd/t	d0f  W n t
k
r"   Y n
X td1d S )2Ns   %c         Zs   %5cA   s       As   %-5cs   A    c               @   s   e Zd Zdd ZdS )z=FormatTest.test_bytes_and_bytearray_format.<locals>.FakeBytesc             S   s   dS )Ns   123r   )r7   r   r   r   	__bytes__I  s    zGFormatTest.test_bytes_and_bytearray_format.<locals>.FakeBytes.__bytes__N)__name__
__module____qualname__rB   r   r   r   r   	FakeBytesH  s   rF   s   %bs   abcs   defs   123s   %ss   %agQ	@s   3.14s   ghis   b'ghi'Zjkls   'jkl'u   Մs   '\u0544's   %rzTesting exceptionss   %gr'   z float argument required, not strr1   z"float argument required, not bytess	   no formatz3not all arguments converted during bytes formattingr9   z%c arg not in range(256)         s   Zaz5%c requires an integer in range(256) or a single byteYZXczR%b requires a bytes-like object, or an object that implements __bytes__, not 'str'ZWdiz%*diz!"%*d"%(maxsize, -127) should fail)r   r   object
memoryviewr   r   r"   r6   r
   r3   r<   r   )r7   rF   Zfbr   r   r   test_bytes_and_bytearray_format>  sn    
z*FormatTest.test_bytes_and_bytearray_formatc             C   s4   t ddd t ddd tddd t dd	d
 d S )Nza br   za%cb)r   za%sb)zc dzac dbs   a%sb)s   c ds   ac db)r   r   )r7   r   r   r   test_nul  s    zFormatTest.test_nulc             C   s  t ddd | tddd | tddd | td	d
d | tddd | tddd | tddd | tddd | td	dd | tddd | tddd | tddd | tddd | td	dd | tdd d! | tdd"d# d S )$Nu   €=%f)g      ?u   €=1.000000abcu    <5u	   abc  {   u	   123  g(@u    <6u
   12.3  y                u    <4u   0j  y      ?       @u    <8u   (1+2j)  u    >5u	     abcu	     123u    >6u
     12.3u    >8u     (1+2j)u    >4u     0ju    ^5u	    abc u	    123 u    ^6u
    12.3 u    ^8u    (1+2j) u    ^4u    0j )r   assertEqualr	   )r7   r   r   r   test_non_ascii  s     zFormatTest.test_non_asciic          
   C   s   yt t j}t t jd W n4 t jk
rR } z| d| W d d }~X Y nX zt  }|d }|d }tdd}| || | |	|dd tdd}| || | || | |	|dd	| d
  W d t t j| X d S )N zCannot set locale: {}thousands_sepdecimal_pointi[nZ	123456789g     J@Z12345)
locale	setlocaleLC_ALLErrorZskipTestr	   
localeconvZassertInrQ   replace)r7   oldlocerrr\   sepZpointtextr   r   r   test_locale  s"    "

 zFormatTest.test_localec             C   s   d}|  d| | |  d| | |  d| | |  d| | |  d| | |  d|| |  d|| |  d	|| |  d
|| |  d|| |  d|| |  |d | |  | | d S )NZabcdez%sz%.5sz%.10sz%1sz%5sz{0}z{0:s}z{0:.5s}z{0:.10s}z{0:1s}z{0:5s}r   )ZassertIsr	   )r7   ra   r   r   r   test_optimisations  s    zFormatTest.test_optimisationsc          	   C   s   d}|  t|dd |  t|dd | t}t|dtjd   W d Q R X t|}|  t|dd |  t|dd	 | t}t|dtjd   W d Q R X d S )
Ng333333?z.0fr'   z.3fz1.200z.%sfr&   z1+0jz1.200+0.000j)rQ   r	   assertRaisesr5   r2   r3   complex)r7   fcmcr   r   r   test_precision  s    zFormatTest.test_precisionc          	   C   sl   ddl m} d}| t}t|d|d   W d Q R X t|}| t}t|d|d   W d Q R X d S )Nr   )INT_MAXg333333?z.%sfr&   )Z	_testcapirj   rd   r5   r	   re   )r7   rj   rf   rg   rh   r   r   r   test_precision_c_limits  s    z"FormatTest.test_precision_c_limitsN)rC   rD   rE   r8   r=   rM   rN   rR   rb   supportZcpython_onlyrc   ri   rk   r   r   r   r   r$   _   s    =!Jr$   __main__)NNF)NNF)Ztest.supportr   r   rX   r2   rl   ZunittestZMAX_Py_ssize_tr3   r   r   r"   r#   ZTestCaser$   rC   mainr   r   r   r   <module>   s   
#
   