U
    #c2                     @   s"  d dl Z d dlZd dlZd dlmZmZmZmZm	Z	m
Z
 d dlmZ eejZejeejjk Zdej ZeeeekZ[dd ZeeedZejjejd ekd	d
dd Zejjedd
dd Zejjedd
ejdejej e!e"fdd Z#dd Z$ejjedd
dd Z%dd Z&dd Z'dd Z(dd Z)G dd  d Z*d!d" Z+ejjed#d
ejjedd
d$d% Z,ejjed#d
ejjedd
d&d' Z-ejjed(d
ejjedd
d)d* Z.G d+d, d,eZ/ejd-dd. d gd/d0 Z0ejd1d2d3gd4d5 Z1dS )6    N)assert_assert_equalassert_raisesassert_warnsassert_array_equaltemppath)CommaDecimalPointLocale   c                  C   s,   dt j } t| | | g}t|d |  dS )z?Confirm that extracting a value doesn't convert to python floatr	   N)LD_INFOepsnparrayr   )oa r   D/tmp/pip-unpacked-wheel-b2rbor69/numpy/core/tests/test_longdouble.pytest_scalar_extraction   s    
r   g?   z%repr precision not enough to show epsreasonc                  C   s,   dt j } ttt| | dt|   d S )Nr	   zrepr was %s)r
   r   r   r   
longdoublereprr   r   r   r   test_repr_roundtrip!   s    
r   Need strtold_lc                  C   s(   dt j } ttt| d|  d S )Nr	   ascii)r
   r   r   r   r   r   encoder   r   r   r   test_repr_roundtrip_bytes)   s    
r   strtypec                 C   s   dt j }| tjtfkr,| t|d}n| t|}|t|ksJttj	|gd | d}||
tjk svt||k stt	|gd 
| |k stdS )z
    Test that string representations of long-double roundtrip both
    for array casting and scalar coercion, see also gh-15608.
    r	   r      dtypeN)r
   r   r   bytes_bytesr   r   r   AssertionErrorZasarrayZastypeall)r   r   Zo_strZo_strarrr   r   r   #test_array_and_stringlike_roundtrip/   s    
r&   c                   C   s    t ttjd t ttjd d S )NZspamz1.0 flub)r   
ValueErrorr   r   r   r   r   r   test_bogus_stringI   s    r(   c                  C   sN   dt j } dt|  d }t| gd }ttj|dtjd|d| d d S )Nr	       sepr!   zreading '%s')err_msg)r
   r   r   r   r   r   
fromstringr   )r   sr   r   r   r   test_fromstringN   s    
r0   c               
   C   s  dD ]} t tjdd| dtddddg t tjd	d| dtd
dddg t tjdd| dtddddg tt$ t tjd| ddtdg W 5 Q R X tt$ t tjd| ddtdg W 5 Q R X tt$ t tjd| ddtdg W 5 Q R X tt$ t tjd| ddtdg W 5 Q R X tt$ t tjd| ddtdg W 5 Q R X tt$ t tjd| ddtd
g W 5 Q R X qd S )NcomplexZcdoubleZcfloatz1, 2 ,  3  ,4,r+         ?       @      @      @z1j, -2j,  3j, 4e1j              ?                            @              D@z1+1j,2-2j, -3+3j,  -4e1+4j      ?      ?       @                   @      D      @z1+2 j,3r!   r,   z1+ 2j,3z1 +2j,3z1+jz1+z1j+1)r   r   r.   r   r   DeprecationWarning)ctyper   r   r   test_fromstring_complexW   sD    












rC   c                	   C   s:   t t( ttjdtddtdddg W 5 Q R X d S )Nz1. 2. 3. flop 4.r)   r@   r4   r5   r6   r   rA   r   r   r.   floatr   r   r   r   r   test_fromstring_bogusw   s    
rF   c                	   C   s2   t t  ttjdddtg  W 5 Q R X d S )NZxxxxxxr,   r   rA   r   r   r.   r   r   r   r   r   test_fromstring_empty}   s    
rJ   c                	   C   s4   t t" ttjdddtdg W 5 Q R X d S )NZ
1xx3x4x5x6rG   rH   r	   rI   r   r   r   r   test_fromstring_missing   s    

rK   c                   @   s   e Zd Zdej Zeegd Zd	dd eD Z
dd Zdd	 Zejjed
ddd Zejjed
ddd Zejjed
ddd Zejjed
ddd ZdS )TestFileBasedr	   r*    c                 C   s   g | ]}t |d  qS )
)r   ).0tr   r   r   
<listcomp>   s     zTestFileBased.<listcomp>c              
   C   sp   t  J}t|d}|d W 5 Q R X tt tj|tdd}W 5 Q R X W 5 Q R X t|t	dddg d S )Nwtz1. 2. 3. flop 4.
r)   r@   r4   r5   r6   )
r   openwriter   rA   r   fromfilerE   r   r   selfpathfresr   r   r   test_fromfile_bogus   s    
$z!TestFileBased.test_fromfile_bogusc                 C   s  dD ]}t  6}t|d}|d W 5 Q R X tj||dd}W 5 Q R X t|tdddd	g t  6}t|d}|d
 W 5 Q R X tj||dd}W 5 Q R X t|tddddg t  6}t|d}|d W 5 Q R X tj||dd}W 5 Q R X t|tddddg t  J}t|d}|d W 5 Q R X tt tj||dd}W 5 Q R X W 5 Q R X t|tdg t  J}t|d}|d W 5 Q R X tt tj||dd}W 5 Q R X W 5 Q R X t|tdg t  J}t|d}|d W 5 Q R X tt tj||dd}W 5 Q R X W 5 Q R X t|tdg t  J}t|d}|d W 5 Q R X tt tj||dd}W 5 Q R X W 5 Q R X t|tdg t  J}t|d}|d W 5 Q R X tt tj||dd}W 5 Q R X W 5 Q R X t|tdg t  J}t|d}|d W 5 Q R X tt tj||dd}W 5 Q R X W 5 Q R X t|tdg qd S )Nr1   rR   z1, 2 ,  3  ,4
r3   r@   r4   r5   r6   r7   z1j, -2j,  3j, 4e1j
r8   r9   r:   r;   z1+1j,2-2j, -3+3j,  -4e1+4j
r<   r=   r>   r?   z1+2 j,3
z1+ 2j,3
z1 +2j,3
z1+j
z1+
z1j+1
)	r   rS   rT   r   rU   r   r   r   rA   )rW   rB   rX   rY   rZ   r   r   r   test_fromfile_complex   sh    

$
$
$
$
$
$z#TestFileBased.test_fromfile_complexr   r   c              
   C   sV   t  :}t|d}|| j W 5 Q R X tj|tjdd}W 5 Q R X t|| j d S )NrR   rN   r@   )	r   rS   rT   outr   rU   r   r   tgtrV   r   r   r   test_fromfile   s
    zTestFileBased.test_fromfilec              
   C   sT   t  8}t|d}|| j W 5 Q R X tj|tjd}W 5 Q R X t|| j d S NrR   r    )	r   rS   rT   r]   r   Z
genfromtxtr   r   r^   rV   r   r   r   test_genfromtxt   s
    zTestFileBased.test_genfromtxtc              
   C   sT   t  8}t|d}|| j W 5 Q R X tj|tjd}W 5 Q R X t|| j d S r`   )	r   rS   rT   r]   r   Zloadtxtr   r   r^   rV   r   r   r   test_loadtxt   s
    zTestFileBased.test_loadtxtc              	   C   sD   t  (}| jj|dd tj|tjdd}W 5 Q R X t|| j d S )Nr)   rH   r@   )r   r^   Ztofiler   rU   r   r   )rW   rX   rZ   r   r   r   test_tofile_roundtrip  s    z#TestFileBased.test_tofile_roundtripN)__name__
__module____qualname__r
   r   Zldblr   r   r^   joinr]   r[   r\   pytestmarkskipifstring_to_longdouble_inaccurater_   ra   rb   rc   r   r   r   r   rL      s*   
	R


rL   c                  C   s   dt j } tt| dk d S )Nr	   1)r
   r   r   r   r   r   r   r   test_repr_exact  s    
rm   z	BUG #2376c                  C   s    dt j } td| dk d S )Nr	   z{0:.40g}rl   )r
   r   r   formatr   r   r   r   test_format  s    
ro   c                  C   s   dt j } td|  dk d S )Nr	   z%.40grl   )r
   r   r   r   r   r   r   test_percent  s    
rp   zarray repr problemc                  C   sV   dt j } t| g}tjdgtjd}t||ks>tdtt|t|k d S )Nr	   r    zprecision loss creating arrays)	r
   r   r   r   r   r%   r'   r   r   )r   r   br   r   r   test_array_repr&  s    
rr   c                   @   sD   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S )TestCommaDecimalPointLocalec                 C   s   d}t |tt| d S )Ng      ?)r   r   r   r   )rW   r   r   r   r   test_repr_roundtrip_foreign8  s    z7TestCommaDecimalPointLocale.test_repr_roundtrip_foreignc                 C   s*   d}t jt|tdd}t|d | d S )NgX9v?r)   r@   r   )r   r.   r   rE   r   )rW   rY   r   r   r   r   test_fromstring_foreign_repr<  s    z8TestCommaDecimalPointLocale.test_fromstring_foreign_reprc              	   C   s6   t t$ ttjdtddtdg W 5 Q R X d S N1,234r)   r@   r4   rD   rW   r   r   r   !test_fromstring_best_effort_floatA  s    

z=TestCommaDecimalPointLocale.test_fromstring_best_effort_floatc              	   C   s8   t t& ttjdtjddtdg W 5 Q R X d S rv   )r   rA   r   r   r.   r   r   rx   r   r   r   test_fromstring_best_effortF  s    

z7TestCommaDecimalPointLocale.test_fromstring_best_effortc                 C   s.   d}t j|t jdd}t|d t | d S )Nz1.234r)   r@   r   )r   r.   r   r   )rW   r/   r   r   r   r   test_fromstring_foreignK  s    z3TestCommaDecimalPointLocale.test_fromstring_foreignc                 C   s2   t ddddg}t jdt jdd}t|| d S )Nr	   r   r      z1,2,3,4,r3   r@   )r   r   r.   r   r   )rW   r   rq   r   r   r   test_fromstring_foreign_sepP  s    z7TestCommaDecimalPointLocale.test_fromstring_foreign_sepc              	   C   s8   t t& tjdtjdd}t|d d W 5 Q R X d S )Nrw   r)   r@   r   r	   )r   rA   r   r.   r   r   )rW   rq   r   r   r   test_fromstring_foreign_valueU  s    
z9TestCommaDecimalPointLocale.test_fromstring_foreign_valueN)
rd   re   rf   rt   ru   ry   rz   r{   r}   r~   r   r   r   r   rs   6  s   rs   int_vali   c              	   C   s   t | }tjddb}tddt t| t|ks<ttt	tjj
t	tjj
rr|rr|d jtksrtW 5 Q R X d S )NT)recordalwaysrM   r   )strwarningscatch_warningsfilterwarningsRuntimeWarningr   r   r$   Zallclosefinfomaxdoublecategory)r   Zstr_valwr   r   r   test_longdouble_from_int[  s    r   bool_valTFc                 C   s    t | t t| kstd S )N)r   r   intr$   )r   r   r   r   test_longdouble_from_boolo  s    r   )2r   rh   Znumpyr   Znumpy.testingr   r   r   r   r   r   Znumpy.core.tests._localesr   r   r   r
   r   r   Zlongdouble_longer_than_doubleZ_or   rk   r   lenZrepr_precisionri   rj   Z	precisionr   r   ZparametrizeZstr_r"   r   r#   r&   r(   r0   rC   rF   rJ   rK   rL   rm   ro   rp   rr   rs   r   r   r   r   r   r   <module>   st    




  	% 
 