U
    jgDq                     @   s  d dl Zd dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZm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d,d- Z d.d/ Z!d0d1 Z"d2d3 Z#d4d5 Z$d6d7 Z%d8d9 Z&d:d; Z'd<d= Z(d>d? Z)d@dA Z*dBdC Z+dDdE Z,dFdG Z-dHdI Z.dJdK Z/dLdM Z0dNdO Z1dPdQ Z2dRdS Z3dTdU Z4dVdW Z5dXdY Z6dZd[ Z7d\d] Z8d^d_ Z9d`da Z:dbdc Z;ddde Z<dfdg Z=eG dhdi dieZ>e?djkre@  dS )k    N)jit
from_dtype)types)Dict)TestCaseskip_ppc64le_issue4563c                 C   s   | | S N xir	   r	   B/tmp/pip-unpacked-wheel-qtpwf23r/numba/tests/test_unicode_array.pygetitem
   s    r   c                 C   s   | | | S r   r	   r   r   jr	   r	   r   getitem2   s    r   c                 C   s   || |< | S r   r	   )r   r   vr	   r	   r   setitem   s    r   c                 C   s   || | |< | S r   r	   r   r   yr   r	   r	   r   setitem2   s    r   c                 C   s   d| |< | S )N123r	   r
   r	   r	   r   setitem_literal   s    r   c                 C   s   d| || < d S )N{   r	   )r   r   r   r	   r	   r   getitem_key!   s    r   c                 C   s   t | | S r   )lenr
   r	   r	   r   
return_len%   s    r   c                 C   s   t | | S r   )boolr
   r	   r	   r   return_bool)   s    r   c                 C   s   | | | | kS r   r	   r   r	   r	   r   equal_getitem-   s    r   c                 C   s   | | | | kS r   r	   r   r	   r	   r   notequal_getitem1   s    r    c                 C   s   | | | | k S r   r	   r   r	   r	   r   lessthan_getitem5   s    r!   c                 C   s   | | | | kS r   r	   r   r	   r	   r   greaterthan_getitem9   s    r"   c                 C   s   | | | | kS r   r	   r   r	   r	   r   lessequal_getitem=   s    r#   c                 C   s   | | | | kS r   r	   r   r	   r	   r   greaterequal_getitemA   s    r$   c                 C   s   | | || kS r   r	   r   r	   r	   r   contains_getitem2E   s    r%   c                 C   s0   | | |k}|| | k}||kr$|S t dd S )Nz#x[i] == v and v == x[i] are unequal
ValueErrorr   r   r   Zr1Zr2r	   r	   r   equal_getitem_valueI   s
    r)   c                 C   s0   | | |k}|| | k}||kr$|S t dd S )Nz#x[i] != v and v != x[i] are unequalr&   r(   r	   r	   r   notequal_getitem_valueQ   s
    r*   c                 C   s   | |   S r   )isasciir
   r	   r	   r   return_isasciiY   s    r,   c                 C   s   | |   S r   )isupperr
   r	   r	   r   return_isupper]   s    r.   c                 C   s   | |   S r   )upperr
   r	   r	   r   return_uppera   s    r0   c                 C   s   t | | S r   )strr
   r	   r	   r   
return_stre   s    r2   c                 C   s   t | | S r   )bytesr
   r	   r	   r   return_bytesi   s    r4   c                 C   s   t | | S r   )hashr
   r	   r	   r   return_hashm   s    r6   c                 C   s   | |  || S r   )findr   r	   r	   r   return_findq   s    r8   c                 C   s   | |  || S r   )rfindr   r	   r	   r   return_rfindu   s    r:   c                 C   s   | |  || S r   )
startswithr   r	   r	   r   return_startswithy   s    r<   c                 C   s   | |  || S r   )endswithr   r	   r	   r   return_endswith}   s    r>   c                 C   s   | |   S r   splitr
   r	   r	   r   return_split1   s    rA   c                 C   s   | |  || S r   r?   r   r	   r	   r   return_split2   s    rB   c                 C   s   | | j || |dS )N)sepmaxsplitr?   )r   r   r   r   rD   r	   r	   r   return_split3   s    rE   c                 C   s   | |  |S r   centerr   r   wr	   r	   r   return_center1   s    rJ   c                 C   s   | |  ||| S r   rF   r   r   rI   r   r   r	   r	   r   return_center2   s    rL   c                 C   s   | |  |S r   ljustrH   r	   r	   r   return_ljust1   s    rO   c                 C   s   | |  ||| S r   rM   rK   r	   r	   r   return_ljust2   s    rP   c                 C   s   | |  |S r   rjustrH   r	   r	   r   return_rjust1   s    rS   c                 C   s   | |  ||| S r   rQ   rK   r	   r	   r   return_rjust2   s    rT   c                 C   s   | |  || || gS r   join)r   r   r   r   zkr	   r	   r   return_join   s    rY   c                 C   s   | |  |S r   )zfillrH   r	   r	   r   return_zfill   s    r[   c                 C   s   | |   S r   lstripr
   r	   r	   r   return_lstrip1   s    r^   c                 C   s   | |  || S r   r\   r   r	   r	   r   return_lstrip2   s    r_   c                 C   s   | |   S r   rstripr
   r	   r	   r   return_rstrip1   s    rb   c                 C   s   | |  || S r   r`   r   r	   r	   r   return_rstrip2   s    rc   c                 C   s   | |   S r   stripr
   r	   r	   r   return_strip1   s    rf   c                 C   s   | |  || S r   rd   r   r	   r	   r   return_strip2   s    rg   c                 C   s   | | ||  S r   r	   r   r	   r	   r   
return_add   s    rh   c                 C   s   | |  || 7  < | | S r   r	   r   r	   r	   r   return_iadd   s    ri   c                 C   s   | | ||  S r   r	   r   r	   r	   r   
return_mul   s    rj   c                 C   s
   | |  S r   r	   r
   r	   r	   r   
return_not   s    rk   c                 C   s
   d | S )N,rU   )Zstr_arrr	   r	   r   join_string_array   s    rm   c                   @   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!d" Zd#d$ Zd%d& Z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%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUdV Z-dWdX Z.dYdZ Z/d[d\ Z0d]d^ Z1d_d` Z2dadb Z3dcdd Z4dedf Z5dgdh Z6diS )jTestUnicodeArrayc                 O   s    |||}|  |||| d S r   )assertPreciseEqual)selfpyfunccfuncargskwargsexpectedr	   r	   r   _test   s    
zTestUnicodeArray._testc              	   C   s  t ddt}td}| ||ddt|dd | td ||dd W 5 Q R X td}| ||ddt|dd | td ||dd W 5 Q R X tdd	g}| ||ddt|dd | ||dd
t|dd
 | ||d
dt|d
d | td ||d
d
 W 5 Q R X tddg}| ||ddt|dd | ||dd
t|dd
 | ||d
dt|d
d | td ||d
d
 W 5 Q R X d S )NTZnopython   12r	   r   zindex out of range   12   3   3)r   r   nparrayro   assertRaisesRegex
IndexError)rp   Z	cgetitem2Zarrr	   r	   r   test_getitem2   s*    

zTestUnicodeArray.test_getitem2c                 C   s   t }tdd|}| ||dd | ||tdd | ||tddgd | ||tddgd | ||dd | ||tdd | ||tdd	gd | ||tdd	gd d S )
NTrw   rx   r|   r	   r{   r   rz   r}   )r   r   rv   r~   r   rp   rq   rr   r	   r	   r   test_getitem   s    zTestUnicodeArray.test_getitemc                 C   s   t }tdd|}tddftdgdftddftdgdffD ]L\}}i }tt|jtj	}|||| |||| | 
|| t| qJd S )NTrw   r   r	   r      123)r   r   r~   r   r   emptyr   Zdtyper   Zint64assertEqualr1   )rp   rq   rr   r   r   d1Zd2r	   r	   r   test_getitem_key  s    z!TestUnicodeArray.test_getitem_keyc                 C   s   t }tdd|}td}| |||dd td}td}||dd}||dd}| || | || tdg}tdg}||d	d
}||d	d
}| || | || d S )NTrw      r	   "   r   s   34r   r   Z34)r   r   r~   r   rv   ro   )rp   rq   rr   r   x1x2y1y2r	   r	   r   test_setitem  s     


zTestUnicodeArray.test_setitemc           	      C   s  t }tdd|}tddg}tddg}||d|d}||d|d}| || | || tddg}tddg}||d|d}||d|d}| || | || td}td}td}td}||d	|d	}||d	|d	}| || | || td
}td
}d}d}||d	|d}||d	|d}| || | || td}td}d}d}||d	|d}||d	|d}| || | || td}td}d}d}||d	|d}||d	|d}| || | || td}td}d}d}||d	|d}||d	|d}| || | || td}td}d}d}||d	|d}||d	|d}| || | || td}td}d}d}||d	|d}||d	|d}| || | || td}td}d}d}||d	|d}||d	|d}| || | || td}td}d}d}||d	|d}||d	|d}| || | || td}td}d}d}||d	|d}||d	|d}| || | || d S )NTrw   r   ABCr   r|   r      ABCr	   r   )i  )r   )r   )u   ABǩ)u   AB􈨎)ABCD)ZAB)s   ABCD)s   AB)r   r   r~   r   ro   )	rp   rq   rr   r   r   r   r   Zz1Zz2r	   r	   r   test_setitem23  s    





















zTestUnicodeArray.test_setitem2c                 C   s   t }tdd|}td}td}||d}||d}| || | || tddg}tddg}||d}||d}| || | || tddg}tddg}||d}||d}| || | || d S )NTrw   r   r	   Z5678r   r|   )r   r   r~   r   ro   )rp   rq   rr   r   r   r   r   r	   r	   r   test_setitem_literal  s(    







z%TestUnicodeArray.test_setitem_literalc                 C   s   t }tdd|}| ||tdd | ||tdd | ||tdd | ||tdd | ||tddgd	 | ||tdd
gd	 | ||tddgd | ||tdd
gd d S )NTrw    r	       rx   rz   r{   r   r}   r|   )r   r   rv   r~   r   r   r	   r	   r   test_return_len  s    z TestUnicodeArray.test_return_lenc                 C   s   t }tdd|}| ||tdd | ||tdd | ||tdd | ||tdd | ||tddgd | ||tddgd | ||tddgd	 | ||tddgd	 d S )
NTrw   r   r	   r   rx   rz   r   r|   )r   r   rv   r~   r   r   r	   r	   r   test_return_bool  s    z!TestUnicodeArray.test_return_boolc                 C   s  t dd|}| ||tddgdd | ||ddd | ||ddd | ||tddd | ||td	dd | ||td
dgdd | ||td
dgdd | ||tddgdd | ||tddgdd | ||tddgdd | ||tddgdd | ||tddgdd | ||tddgdd | ||tddgdd | ||tddgdd | ||tddgdd | ||tddgdd d S )NTrw   r|   ry   r   rz   rx   r	   1234   1   2r{   12r}   r   rv   r~   r   r   r	   r	   r   _test_op_getitem  s$    z!TestUnicodeArray._test_op_getitemc                 C   s   |  t d S r   )r   r   rp   r	   r	   r   test_equal_getitem  s    z#TestUnicodeArray.test_equal_getitemc                 C   s   |  t d S r   )r   r    r   r	   r	   r   test_notequal_getitem  s    z&TestUnicodeArray.test_notequal_getitemc                 C   s   |  t d S r   )r   r!   r   r	   r	   r   test_lessthan_getitem  s    z&TestUnicodeArray.test_lessthan_getitemc                 C   s   |  t d S r   )r   r"   r   r	   r	   r   test_greaterthan_getitem  s    z)TestUnicodeArray.test_greaterthan_getitemc                 C   s   |  t d S r   )r   r#   r   r	   r	   r   test_lessequal_getitem  s    z'TestUnicodeArray.test_lessequal_getitemc                 C   s   |  t d S r   )r   r$   r   r	   r	   r   test_greaterequal_getitem  s    z*TestUnicodeArray.test_greaterequal_getitemc                 C   s   t dd|}| ||tddgdd | ||ddd | ||ddd | ||td	d
d	 | ||td	gdd	 | ||td	gdd | ||tdd
d | ||tdgdd | ||tdgdd d S )NTrw   r|   ry   r   rz   r   r}   r   r	   abcrx      ar   r   r	   r	   r   _test_op_getitem_value   s    z'TestUnicodeArray._test_op_getitem_valuec                 C   s   |  t d S r   )r   r)   r   r	   r	   r   test_equal_getitem_value  s    z)TestUnicodeArray.test_equal_getitem_valuec                 C   s   |  t d S r   )r   r*   r   r	   r	   r   test_notequal_getitem_value  s    z,TestUnicodeArray.test_notequal_getitem_valuec                 C   s   t }tdd|}td}td}| |||d|d | |||d|d td}td}| |||d|d | |||d|d d}td}| |||d	|d | |||d|d	 d
}td}| |||d	|d | |||d|d	 d S )NTrw   r   Z12345r	   r   s   12345r   r   r   )r%   r   r~   r   rv   )rp   rq   rr   r   r   r	   r	   r   test_contains_getitem2  s$    





z'TestUnicodeArray.test_contains_getitem2c                 C   sr   t }tdd|}| ||tdd | ||tdgd | ||tdd | ||tdgd d S )NTrw   r   r	   r      1234é)r,   r   rv   r~   r   r   r	   r	   r   test_return_isascii,  s    z$TestUnicodeArray.test_return_isasciic                 C   sr   t }tdd|}| ||tdd | ||tdgd | ||tdd | ||tdgd d S NTrw   r   r	   r      abc)r.   r   rv   r~   r   r   r	   r	   r   test_return_isupper4  s    z$TestUnicodeArray.test_return_isupperc                 C   sD   t }tdd|}| ||tdd | ||tdgd d S )NTrw   r   r	   r   )r2   r   rv   r~   r   r   r	   r	   r   test_return_str=  s    z TestUnicodeArray.test_return_strc                 C   sD   t }tdd|}| ||tdd | ||tdgd d S )NTrw      1234r	   r   )r4   r   rv   r~   r   r   r	   r	   r   test_return_bytesC  s    z"TestUnicodeArray.test_return_bytesc                 C   sr   t }tdd|}| ||tdd | ||tdgd | ||tdd | ||tdgd d S r   )r0   r   rv   r~   r   r   r	   r	   r   test_return_upperI  s    z"TestUnicodeArray.test_return_upperc                 C   s  t }tdd|}|tdd}td}ttdd }| ||  koR|kn   | ||tdd | ||tdgd | ||tdd | ||tdgd | ||td	d | ||td	gd | ||td
d | ||td
gd d S )NTrw   r   r	   r   r   r   Z	1234u00e9u   1234􈨎r   )r6   r   r~   r   r5   
assertTruerv   )rp   rq   rr   Zhash1Zhash2Zhash3r	   r	   r   	test_hashR  s    zTestUnicodeArray.test_hashc              	   C   s   t }tdd|}| ||tddtdd | ||tdddd | ||ddtdd | ||td	dtd
d | ||td	ddd | ||ddtd
d d S NTrw   r   r	   23)r   r   )r   r      23)r   )r   )r8   r   rv   r~   r   r   r	   r	   r   test_return_findg  s      z!TestUnicodeArray.test_return_findc              	   C   s   t }tdd|}| ||tddtdd | ||tdddd | ||ddtdd | ||td	dtd
d | ||td	ddd | ||ddtd
d d S r   )r:   r   rv   r~   r   r   r	   r	   r   test_return_rfindq  s      z"TestUnicodeArray.test_return_rfindc              	   C   s   t }tdd|}| ||tddtdd | ||tdddd | ||ddtdd | ||td	dtd
d | ||td	ddd | ||ddtd
d d S r   )r<   r   rv   r~   r   r   r	   r	   r   test_return_startswith{  s      z'TestUnicodeArray.test_return_startswithc              	   C   s   t }tdd|}| ||tddtdd | ||tdddd | ||ddtdd | ||td	dtd
d | ||td	ddd | ||ddtd
d d S r   )r>   r   rv   r~   r   r   r	   r	   r   test_return_endswith  s      z%TestUnicodeArray.test_return_endswithc                 C   sB   t }tdd|}| ||tdd | ||tdd d S )NTrw   12 34r	   r   )rA   r   rv   r~   r   r   r	   r	   r   test_return_split1  s    z#TestUnicodeArray.test_return_split1c              	   C   s   t }tdd|}| ||tddtdd | ||tdddd | ||ddtdd | ||td	dtd
d | ||td	ddd | ||ddtd
d d S )NTrw   r   r	    r   r   )r      12 34    r   )r   )rB   r   rv   r~   r   r   r	   r	   r   test_return_split2  s      z#TestUnicodeArray.test_return_split2c              	   C   s   t }tdd|}| ||tddtddd | ||tddddd | ||d	dtddd | ||td
dtddd | ||td
dddd | ||ddtddd d S )NTrw   1 2 3 4r	   r   ry   r   r   r      1 2 3 4r   r   r   )rE   r   rv   r~   r   r   r	   r	   r   test_return_split3  s         z#TestUnicodeArray.test_return_split3c                 C   sF   t }tdd|}| ||tddd | ||tddd d S NTrw   r   r	   (   r   )rO   r   rv   r~   r   r   r	   r	   r   test_return_ljust1  s    z#TestUnicodeArray.test_return_ljust1c              
   C   s   t }tdd|}| ||tdddtdd | ||tddddd | ||d	ddtdd | ||td
ddtdd | ||td
dddd | ||dddtdd d S NTrw   r   r	   r   =)r   r   r   r      =)r   r   )rP   r   rv   r~   r   r   r	   r	   r   test_return_ljust2  s      z#TestUnicodeArray.test_return_ljust2c                 C   sF   t }tdd|}| ||tddd | ||tddd d S r   )rS   r   rv   r~   r   r   r	   r	   r   test_return_rjust1  s    z#TestUnicodeArray.test_return_rjust1c              
   C   s   t }tdd|}| ||tdddtdd | ||tddddd | ||d	ddtdd | ||td
ddtdd | ||td
dddd | ||dddtdd d S r   )rT   r   rv   r~   r   r   r	   r	   r   test_return_rjust2  s      z#TestUnicodeArray.test_return_rjust2c                 C   sF   t }tdd|}| ||tddd | ||tddd d S r   )rJ   r   rv   r~   r   r   r	   r	   r   test_return_center1  s    z$TestUnicodeArray.test_return_center1c              
   C   s   t }tdd|}| ||tdddtdd | ||tddddd | ||d	ddtdd | ||td
ddtdd | ||td
dddd | ||dddtdd d S r   )rL   r   rv   r~   r   r   r	   r	   r   test_return_center2  s      z$TestUnicodeArray.test_return_center2c                 C   s6  t }tdd|}| ||tddtddtdd | ||tddtdddd | ||d	dtddtdd | ||d	dtdddd | ||td
dtddtdd | ||td
dtdddd | ||ddtddtdd | ||ddtdddd d S )NTrw   rl   r	   r   r   r   r   )rl      ,r   r   r   )r   )rY   r   rv   r~   r   r   r	   r	   r   test_return_join  sD            z!TestUnicodeArray.test_return_joinc                 C   sF   t }tdd|}| ||tddd | ||tddd d S r   )r[   r   rv   r~   r   r   r	   r	   r   test_return_zfill   s    z"TestUnicodeArray.test_return_zfillc                 C   sB   t }tdd|}| ||tdd | ||tdd d S NTrw     123  r	        123  )r^   r   rv   r~   r   r   r	   r	   r   test_return_lstrip1  s    z$TestUnicodeArray.test_return_lstrip1c              	   C   s   t }tdd|}| ||tddtdd | ||tdddd | ||ddtdd | ||td	dtd
d | ||td	ddd | ||ddtd
d d S NTrw   r   r	   r   r   r   )r   r   r   r   )r   )r_   r   rv   r~   r   r   r	   r	   r   test_return_lstrip2  s      z$TestUnicodeArray.test_return_lstrip2c                 C   sB   t }tdd|}| ||tdd | ||tdd d S r   )rb   r   rv   r~   r   r   r	   r	   r   test_return_rstrip1  s    z$TestUnicodeArray.test_return_rstrip1c              	   C   s   t }tdd|}| ||tddtdd | ||tdddd | ||ddtdd | ||td	dtd
d | ||td	ddd | ||ddtd
d d S r   )rc   r   rv   r~   r   r   r	   r	   r   test_return_rstrip2!  s      z$TestUnicodeArray.test_return_rstrip2c                 C   sB   t }tdd|}| ||tdd | ||tdd d S r   )rf   r   rv   r~   r   r   r	   r	   r   test_return_strip1-  s    z#TestUnicodeArray.test_return_strip1c              	   C   s   t }tdd|}| ||tddtdd | ||tdddd | ||ddtdd | ||td	dtd
d | ||td	ddd | ||ddtd
d d S r   )rg   r   rv   r~   r   r   r	   r	   r   test_return_strip24  s      z#TestUnicodeArray.test_return_strip2c              	   C   s   t }tdd|}| ||tddtdd | ||tdddd | ||ddtdd | ||td	dtd
d | ||td	ddd | ||ddtd
d d S )NTrw   abr	   cdr   r   )r      ab   cdr   r   )rh   r   rv   r~   r   r   r	   r	   r   test_return_add@  s      z TestUnicodeArray.test_return_addc              	   C   s   t }tdd|}| ||tddtdd | ||tdddd |dgdtdd}|dgdtdd}| || | ||tddtd	d | ||tddd
d |dgdtd	d}|dgdtd	d}| || d S )NTrw   r   r	   r   r   r   r   r   r   )ri   r   rv   r~   r   ro   )rp   rq   rr   ru   resultr	   r	   r   test_return_iaddL  s      z!TestUnicodeArray.test_return_iaddc              	   C   s~   t }tdd|}| ||tdddd | ||ddtdd | ||tdddd | ||ddtdd d S )NTrw   r   r	   )   r   r   )rj   r   rv   r~   r   r   r	   r	   r   test_return_mul\  s    z TestUnicodeArray.test_return_mulc                 C   s   t }tdd|}| ||tdd | ||tdd | ||dd | ||tdd | ||td	d | ||d
d d S )NTrw   r   r	   r   r   r   r   r   )r   )rk   r   rv   r~   r   r   r	   r	   r   test_return_note  s    z TestUnicodeArray.test_return_notc                 C   s.   t }tdd|}| ||tddg d S )NTrw   hiZthere)rm   r   rv   r~   r   r   r	   r	   r   	test_joinq  s    zTestUnicodeArray.test_joinN)7__name__
__module____qualname__rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r	   r	   r   rn      sh   t		

	rn   __main__)AZnumpyr~   ZunittestZnumbar   r   Z
numba.corer   Znumba.typedr   Znumba.tests.supportr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r)   r*   r,   r.   r0   r2   r4   r6   r8   r:   r<   r>   rA   rB   rE   rJ   rL   rO   rP   rS   rT   rY   r[   r^   r_   rb   rc   rf   rg   rh   ri   rj   rk   rm   rn   r   mainr	   r	   r	   r   <module>   s~        
