a
    ç´«j¦U  ã                   @   sì   d dl Z d dlZd dlmZmZmZ d dlZd dlm	Z	 e j
jG dd„ de	jƒƒZG dd„ de	jƒZG dd	„ d	e	jƒZG d
d„ de	jƒZG dd„ de	jƒZe j
jG dd„ de	jƒƒZe j
jG dd„ de	jƒƒZe j
jG dd„ de	jƒƒZdS )é    N)Úassert_array_equalÚassert_equalÚassert_raises)Úutilc                7   @   s\  e Zd ZdZdZg d¢ZdZeD ]ÀZeZe	dd� 
ee¡Zee de› de› d	e› d
e› de› de› de› d	e› de› de› de› de› de› de› de› de› de› de› de› de› de› de› de› de› de› d�3¡7 Zq ej de¡dd„ ƒZej dedd… ¡dd„ ƒZej de¡dd„ ƒZej de¡d d!„ ƒZej de¡d"d#„ ƒZdS )$ÚTestCharacterStringú.f90Ztest_character_string©Ú1Ú3ÚstarÚ ú(*))r   z

        subroutine Ú_input_z(c, o, n)
          character*zß, intent(in) :: c
          integer n
          !f2py integer, depend(c), intent(hide) :: n = slen(c)
          integer*1, dimension(n) :: o
          !f2py intent(out) o
          o = transfer(c, o)
        end subroutine Ú_output_zÍ, intent(out) :: c
          integer n
          integer*1, dimension(n), intent(in) :: o
          !f2py integer, depend(o), intent(hide) :: n = len(o)
          c = transfer(o, c)
        end subroutine Ú_array_input_z;(c, o, m, n)
          integer m, i, n
          character*aH  , intent(in), dimension(m) :: c
          !f2py integer, depend(c), intent(hide) :: m = len(c)
          !f2py integer, depend(c), intent(hide) :: n = f2py_itemsize(c)
          integer*1, dimension(m, n), intent(out) :: o
          do i=1,m
            o(i, :) = transfer(c(i), o(i, :))
          end do
        end subroutine Ú_array_output_z!(c, o, m, n)
          character*a  , intent(out), dimension(m) :: c
          integer n
          integer*1, dimension(m, n), intent(in) :: o
          !f2py character(f2py_len=n) :: c
          !f2py integer, depend(o), intent(hide) :: m = len(o)
          !f2py integer, depend(o), intent(hide) :: n = shape(o, 1)
          do i=1,m
            c(i) = transfer(o(i, :), c(i))
          end do
        end subroutine Ú_2d_array_input_zH(c, o, m1, m2, n)
          integer m1, m2, i, j, n
          character*aÍ  , intent(in), dimension(m1, m2) :: c
          !f2py integer, depend(c), intent(hide) :: m1 = len(c)
          !f2py integer, depend(c), intent(hide) :: m2 = shape(c, 1)
          !f2py integer, depend(c), intent(hide) :: n = f2py_itemsize(c)
          integer*1, dimension(m1, m2, n), intent(out) :: o
          do i=1,m1
            do j=1,m2
              o(i, j, :) = transfer(c(i, j), o(i, j, :))
            end do
          end do
        end subroutine z	
        Úlengthc                 C   s\   ddi  ||¡}t| j| jd | ƒ}ddddœ| }t||ƒtjttt	|ƒƒdd	�ƒ d S )
Nr   r   r   ÚaÚabcÚabcdeabcdeabcder   Úu1©Údtype)
ÚgetÚgetattrÚmoduleÚfprefixr   ÚnpÚarrayÚlistÚmapÚord©Úselfr   ÚfsuffixÚfr   © r'   ú^/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/numpy/f2py/tests/test_character.pyÚ
test_inputM   s    zTestCharacterString.test_inputNéÿÿÿÿc                 C   sR   |}t | j| jd | ƒ}dddœ| }t|tjttt|ƒƒdd�ƒ| 	¡ ƒ d S )Nr   r   r   )r	   r
   r   r   )
r   r   r   r   r   r   r    r!   r"   Úencoder#   r'   r'   r(   Útest_outputV   s    ÿzTestCharacterString.test_outputc                 C   sn   |}t | j| jd | ƒ}tjddddœ| ddddœ| gd	d
�}tjdd„ |D ƒdd
�}t||ƒ|ƒ d S )Nr   r   r   r   r   ÚAÚABCÚABCDEABCDEABCDEÚSr   c                 S   s   g | ]}d d„ |D ƒ‘qS )c                 S   s   g | ]}|‘qS r'   r'   ©Ú.0Úcr'   r'   r(   Ú
<listcomp>i   ó    zCTestCharacterString.test_array_input.<locals>.<listcomp>.<listcomp>r'   ©r2   Úsr'   r'   r(   r4   i   r5   z8TestCharacterString.test_array_input.<locals>.<listcomp>r   ©r   r   r   r   r   r   ©r$   r   r%   r&   r   Úexpectedr'   r'   r(   Útest_array_input`   s    ÿþz$TestCharacterString.test_array_inputc                 C   sn   |}t | j| jd | ƒ}tjddddœ| ddddœ| gd	d
�}tjdd„ |D ƒdd
�}t||ƒ|ƒ d S )Nr   r   r   r   r   r-   r.   r/   r0   r   c                 S   s   g | ]}d d„ |D ƒ‘qS )c                 S   s   g | ]}|‘qS r'   r'   r1   r'   r'   r(   r4   u   r5   zDTestCharacterString.test_array_output.<locals>.<listcomp>.<listcomp>r'   r6   r'   r'   r(   r4   u   r5   z9TestCharacterString.test_array_output.<locals>.<listcomp>r   r8   )r$   r   r%   r&   r:   r   r'   r'   r(   Útest_array_outputl   s    ÿþz%TestCharacterString.test_array_outputc                 C   s�   |}t | j| jd | ƒ}tjddddœ| ddddœ| gd	d
ddœ| ddddœ| ggdd�}tjdd„ |D ƒddd�}t||ƒ|ƒ d S )Nr   r   r   r   r   r-   r.   r/   r&   ZfghZfghijfghijfghijÚFZFGHZFGHIJFGHIJFGHIJr0   r   c                 S   s   g | ]}d d„ |D ƒ‘qS )c                 S   s   g | ]}d d„ |D ƒ‘qS )c                 S   s   g | ]}|‘qS r'   r'   r1   r'   r'   r(   r4   ‚   r5   zQTestCharacterString.test_2d_array_input.<locals>.<listcomp>.<listcomp>.<listcomp>r'   )r2   Úitemr'   r'   r(   r4   ‚   r5   zFTestCharacterString.test_2d_array_input.<locals>.<listcomp>.<listcomp>r'   )r2   Úrowr'   r'   r(   r4   ‚   r5   z;TestCharacterString.test_2d_array_input.<locals>.<listcomp>r   ©r   Úorderr8   r9   r'   r'   r(   Útest_2d_array_inputx   s    ÿÿþüÿz'TestCharacterString.test_2d_array_input)Ú__name__Ú
__module__Ú__qualname__Úsuffixr   Zlength_listÚcoder   r%   Údictr   ÚclengthÚtextwrapÚdedentÚpytestÚmarkÚparametrizer)   r,   r;   r<   rB   r'   r'   r'   r(   r      sˆ   þþý	÷	÷õõôïïííëääââá(Ø(Ø*Ö*Ö,Ô6Ê6Ê9

	

r   c                3   @   s   e Zd ZdZdZe de› de› de› de› de› de› d	e› d
e› de› de› de› de› de› de› de› de› de› de› de› de› de› de› de› de› d�1¡Zej	 
dddg¡dd „ ƒZd!d"„ Zej	 
dg d#¢¡d$d%„ ƒZd&d'„ Zej	 
dg d#¢¡d(d)„ ƒZd*d+„ Zd,d-„ Zd.d/„ Zej	 
dddg¡d0d1„ ƒZd2d3„ Zej	 
dddg¡d4d5„ ƒZej	 
dddg¡d6d7„ ƒZd8d9„ Zej	 d:¡d;d<„ ƒZd=d>„ Zd?S )@ÚTestCharacterr   Ztest_characterú
       subroutine z™_input(c, o)
          character, intent(in) :: c
          integer*1 o
          !f2py intent(out) o
          o = transfer(c, o)
       end subroutine z_input

       subroutine z�_output(c, o)
          character :: c
          integer*1, intent(in) :: o
          !f2py intent(out) c
          c = transfer(o, c)
       end subroutine z_output

       subroutine z“_input_output(c, o)
          character, intent(in) :: c
          character o
          !f2py intent(out) o
          o = c
       end subroutine z!_input_output

       subroutine zŒ_inout(c, n)
          character :: c, n
          !f2py intent(in) n
          !f2py intent(inout) c
          c = n
       end subroutine z_inout

       function z…_return(o) result (c)
          character :: c
          character, intent(in) :: o
          c = transfer(o, c)
       end function z_return

       subroutine zè_array_input(c, o)
          character, intent(in) :: c(3)
          integer*1 o(3)
          !f2py intent(out) o
          integer i
          do i=1,3
            o(i) = transfer(c(i), o(i))
          end do
       end subroutine z _array_input

       subroutine a'  _2d_array_input(c, o)
          character, intent(in) :: c(2, 3)
          integer*1 o(2, 3)
          !f2py intent(out) o
          integer i, j
          do i=1,2
            do j=1,3
              o(i, j) = transfer(c(i, j), o(i, j))
            end do
          end do
       end subroutine z#_2d_array_input

       subroutine zØ_array_output(c, o)
          character :: c(3)
          integer*1, intent(in) :: o(3)
          !f2py intent(out) c
          do i=1,3
            c(i) = transfer(o(i), c(i))
          end do
       end subroutine z!_array_output

       subroutine zÊ_array_inout(c, n)
          character :: c(3), n(3)
          !f2py intent(in) n(3)
          !f2py intent(inout) c(3)
          do i=1,3
            c(i) = n(i)
          end do
       end subroutine z _array_inout

       subroutine a   _2d_array_inout(c, n)
          character :: c(2, 3), n(2, 3)
          !f2py intent(in) n(2, 3)
          !f2py intent(inout) c(2. 3)
          integer i, j
          do i=1,2
            do j=1,3
              c(i, j) = n(i, j)
            end do
          end do
       end subroutine z!_2d_array_inout

       function z»_array_return(o) result (c)
          character, dimension(3) :: c
          character, intent(in) :: o(3)
          do i=1,3
            c(i) = o(i)
          end do
       end function z_array_return

       function zœ_optional(o) result (c)
          character, intent(in) :: o
          !f2py character o = "a"
          character :: c
          c = o
       end function z_optional
    r   r3   ÚS1c                 C   s¨   t | j| jd ƒ}t|tjd|d�ƒtdƒƒ t|tjd|d�ƒtdƒƒ t|tjdg|d�ƒtdƒƒ t|tjd|d�ƒtdƒƒ t|tjdgg|d�ƒtdƒƒ d S )NÚ_inputr   r   ó   ar   )r   r   r   r   r   r   r"   ©r$   r   r&   r'   r'   r(   r)   ó   s    zTestCharacter.test_inputc              
   C   s´  t | j| jd ƒ}t|dƒtdƒƒ t|dƒtdƒƒ t|dƒdƒ t|dƒdƒ t|dƒdƒ t|dƒtdƒƒ t|d	ƒtdƒƒ t|dgƒtdƒƒ t|t d¡ƒtdƒƒ t|t dg¡ƒtdƒƒ t d¡}t||ƒtdƒƒ t dg¡}t||ƒtdƒƒ z|g ƒ W n8 t�yH } zt|ƒ 	d
¡�s4‚ W Y d }~nd }~0 0 t
|j› d�ƒ‚z|dƒ W n8 t�yž } zt|ƒ 	d¡�sŠ‚ W Y d }~nd }~0 0 t
|j› d�ƒ‚d S )NrR   r   rS   r   r   r5   ó    Úabs   abz got 0-listz! should have failed on empty listéa   z got int instancez  should have failed on int value)r   r   r   r   r"   r   r   Ú
IndexErrorÚstrÚendswithÚSystemErrorrC   Ú	TypeError©r$   r&   r   Úmsgr'   r'   r(   Útest_input_variaý   s6    
zTestCharacter.test_input_varia)r3   rQ   ÚU1c                 C   sv   t | j| jd ƒ}t|tjg d¢|d�ƒtjtttdƒƒdd�ƒ t|tjg d¢|d�ƒtjtttdƒƒdd�ƒ d S )NÚ_array_input©r   Úbr3   r   r   Úi1©rS   ó   bó   c)	r   r   r   r   r   r   r    r!   r"   rT   r'   r'   r(   r;      s    ÿÿzTestCharacter.test_array_inputc              
   C   s¸   t | j| jd ƒ}t|g d¢ƒtjtttdƒƒdd�ƒ t|g d¢ƒtjtttdƒƒdd�ƒ z|g d¢ƒ W n4 t	y¢ } zt
|ƒ d¡sŽ‚ W Y d }~nd }~0 0 t|j› d	�ƒ‚d S )
Nra   rb   r   rd   r   re   ©r   rc   r3   Údú)th dimension must be fixed to 3 but got 4ú" should have failed on wrong input)r   r   r   r   r   r   r    r!   r"   Ú
ValueErrorrY   rZ   r[   rC   )r$   r&   r^   r'   r'   r(   Útest_array_input_varia)  s"    ÿÿÿ
ÿz$TestCharacter.test_array_input_variac                 C   sZ   t | j| jd ƒ}tjg d¢g d¢g|dd�}| |dkr@tjntj¡}t||ƒ|ƒ d S )NZ_2d_array_inputrb   ©ri   Úer&   r=   r@   r`   )	r   r   r   r   r   ÚviewZuint32Zuint8r   )r$   r   r&   r   r:   r'   r'   r(   rB   :  s    
ÿÿz!TestCharacter.test_2d_array_inputc                 C   s6   t | j| jd ƒ}t|tdƒƒdƒ t|dƒdƒ d S )NÚ_outputrS   r   rU   )r   r   r   r   r"   ©r$   r&   r'   r'   r(   r,   C  s    zTestCharacter.test_outputc                 C   s<   t | j| jd ƒ}t|tttdƒƒƒtjtdƒdd�ƒ d S )NZ_array_outputr   rQ   r   )	r   r   r   r   r    r!   r"   r   r   rr   r'   r'   r(   r<   I  s    ÿzTestCharacter.test_array_outputc                 C   s@   t | j| jd ƒ}t|dƒdƒ t|dƒdƒ t|dƒdƒ d S )NZ_input_outputrS   r   r   rU   ©r   r   r   r   rr   r'   r'   r(   Útest_input_outputO  s    zTestCharacter.test_input_outputc                 C   sª   t | j| jd ƒ}tjtdƒ|d�}||dƒ t|tjtdƒ|jd�ƒ ||dd … dƒ t|tjtdƒ|jd�ƒ tjdg|d�}||dƒ t|tjdg|jd�ƒ d S )	NÚ_inoutr   r   r-   ÚAbcé   ÚBZABc)r   r   r   r   r   r    r   r   )r$   r   r&   r   r'   r'   r(   Ú
test_inoutV  s    

zTestCharacter.test_inoutc              
   C   sÊ   t | j| jd ƒ}tjddd�}||dƒ t|tjd|jd�ƒ tjdgdd�}||dƒ t|tjdg|jd�ƒ z|ddƒ W n4 ty´ } zt|ƒ 	d¡s ‚ W Y d }~nd }~0 0 t
|j› d�ƒ‚d S )	Nru   r   ZS3r   r-   rv   z
 got 3-strz  should have failed on str value)r   r   r   r   r   r   r   rl   rY   rZ   r[   rC   r]   r'   r'   r(   Útest_inout_variad  s    

zTestCharacter.test_inout_variac              
   C   s4  t | j| jd ƒ}tjg d¢|dd�}tjg d¢|dd�}|||ƒ t||ƒ tjg d¢|d�}||dd … |ƒ t|tjg d	¢|d�ƒ tjg d¢g|dd�}|||ƒ t|tjg d¢g|d�ƒ tjg d¢|dd�}z|||ƒ W n8 t�y } zt|ƒ d
¡�s
‚ W Y d }~nd }~0 0 t	|j
› d�ƒ‚d S )NZ_array_inout©r-   rx   ÚCr=   r@   rb   rh   r   rw   )r   r-   rx   r|   rj   rk   )r   r   r   r   r   r   rl   rY   rZ   r[   rC   )r$   r   r&   Únr   r^   r'   r'   r(   Útest_array_inoutv  s,    


ÿ
ÿzTestCharacter.test_array_inoutc                 C   sb   t | j| jd ƒ}tjg d¢g d¢g|dd�}tjg d¢g d¢g|dd�}|||ƒ t||ƒ d S )NZ_2d_array_inoutr{   )ÚDÚEr=   r=   r@   rb   rn   r8   )r$   r   r&   r}   r   r'   r'   r(   Útest_2d_array_inout’  s    
ÿþ
ÿþ
z!TestCharacter.test_2d_array_inoutc                 C   s$   t | j| jd ƒ}t|dƒdƒ d S )NZ_returnr   rS   rs   rr   r'   r'   r(   Útest_returnž  s    zTestCharacter.test_returnz*fortran function returning array segfaultsc                 C   s6   t | j| jd ƒ}tjtdƒdd�}t||ƒ|ƒ d S )NZ_array_returnr   rQ   r   )r   r   r   r   r   r    r   )r$   r&   r   r'   r'   r(   Útest_array_return£  s    zTestCharacter.test_array_returnc                 C   s0   t | j| jd ƒ}t|ƒ dƒ t|dƒdƒ d S )NZ	_optionalrS   ó   Brs   rr   r'   r'   r(   Útest_optionalª  s    zTestCharacter.test_optionalN)rC   rD   rE   rF   r   rJ   rK   rG   rL   rM   rN   r)   r_   r;   rm   rB   r,   r<   rt   ry   rz   r~   r�   r‚   Úskiprƒ   r…   r'   r'   r'   r(   rO   ‡   s’   ÿúøóñìêåã!ß#Ý+Õ-Ó7É9Ç@ÀB¾I·KµU«W©]£_¡dœ
g
	#






rO   c                   @   sª   e Zd ZdZdZe de› de› de› de› de› de› d	e› d
e› de› de› de› de› d�¡Zej	j
dd„ ƒZdd„ Zdd„ Zdd„ Zej	 dddg¡dd„ ƒZdS )ÚTestMiscCharacterr   Ztest_misc_characterrP   a(  _gh18684(x, y, m)
         character(len=5), dimension(m), intent(in) :: x
         character*5, dimension(m), intent(out) :: y
         integer i, m
         !f2py integer, intent(hide), depend(x) :: m = f2py_len(x)
         do i=1,m
           y(i) = x(i)
         end do
       end subroutine z_gh18684

       subroutine z«_gh6308(x, i)
         integer i
         !f2py check(i>=0 && i<12) i
         character*5 name, x
         common name(12)
         name(i + 1) = x
       end subroutine z_gh6308

       subroutine zý_gh4519(x)
         character(len=*), intent(in) :: x(:)
         !f2py intent(out) x
         integer :: i
         ! Uncomment for debug printing:
         !do i=1, size(x)
         !   print*, "x(",i,")=", x(i)
         !end do
       end subroutine z_gh4519

       pure function aq  _gh3425(x) result (y)
         character(len=*), intent(in) :: x
         character(len=len(x)) :: y
         integer :: i
         do i = 1, len(x)
           j = iachar(x(i:i))
           if (j>=iachar("a") .and. j<=iachar("z") ) then
             y(i:i) = achar(j-32)
           else
             y(i:i) = x(i:i)
           endif
         end do
       end function z_gh3425

       subroutine aO  _character_bc_new(x, y, z)
         character, intent(in) :: x
         character, intent(out) :: y
         !f2py character, depend(x) :: y = x
         !f2py character, dimension((x=='a'?1:2)), depend(x), intent(out) :: z
         character, dimension(*) :: z
         !f2py character, optional, check(x == 'a' || x == 'b') :: x = 'a'
         !f2py callstatement (*f2py_func)(&x, &y, z)
         !f2py callprotoargument character*, character*, character*
         if (y.eq.x) then
           y = x
         else
           y = 'e'
         endif
         z(1) = 'c'
       end subroutine z%_character_bc_new

       subroutine aG  _character_bc_old(x, y, z)
         character, intent(in) :: x
         character, intent(out) :: y
         !f2py character, depend(x) :: y = x[0]
         !f2py character, dimension((*x=='a'?1:2)), depend(x), intent(out) :: z
         character, dimension(*) :: z
         !f2py character, optional, check(*x == 'a' || x[0] == 'b') :: x = 'a'
         !f2py callstatement (*f2py_func)(x, y, z)
         !f2py callprotoargument char*, char*, char*
          if (y.eq.x) then
           y = x
         else
           y = 'e'
         endif
         z(1) = 'c'
       end subroutine z_character_bc_old
    c                 C   s:   t | j| jd ƒ}tjddgdd�}||ƒ}t||ƒ d S )NZ_gh18684ÚabcdeZfghijÚS5r   r8   )r$   r&   ÚxÚyr'   r'   r(   Útest_gh18684  s    zTestMiscCharacter.test_gh18684c                 C   s~   t | j| jd ƒ}t| jjjjt d¡ƒ tt| jjjƒdƒ |ddƒ t| jjjd dƒ |ddƒ t| jjjd d	ƒ d S )
NZ_gh6308r‰   é   rˆ   r   s   abcdeZ12345é   s   12345)	r   r   r   r   Z_BLNK_Únamer   r   Úlenrr   r'   r'   r(   Útest_gh6308  s    

zTestMiscCharacter.test_gh6308c              
   C   sÈ   t | j| jd ƒ}dtdt d¡d�fdtdt d¡d�ftjg d¢dd	�td
t d¡d�fg d¢td
t d¡d�fddgtdt d¡d�ffD ]2\}}||ƒ}| ¡ D ]\}}tt ||ƒ|ƒ q¨q�d S )NZ_gh4519r   r'   rQ   )Úshaper   ÚtextZS4)r	   Ú2r
   r   )é   )r	   r”   Z34ZS2r   )é   )	r   r   r   rH   r   r   r   Úitemsr   )r$   r&   rŠ   r:   ÚrÚkÚvr'   r'   r(   Útest_gh4519  s    ÿÿùzTestMiscCharacter.test_gh4519c                 C   s@   t | j| jd ƒ}t|dƒdƒ t|dƒdƒ t|dƒdƒ d S )NZ_gh3425ZabCs   ABCr   r5   ZabC12ds   ABC12Drs   rr   r'   r'   r(   Útest_gh3425(  s    zTestMiscCharacter.test_gh3425ÚstateÚnewÚoldc                    sr   t | j| jd | ƒ‰ ˆ ƒ \}}t|dƒ tt|ƒdƒ ˆ dƒ\}}t|dƒ tt|ƒdƒ tt‡ fdd„ƒ d S )NZ_character_bc_rS   rw   rf   r–   c                      s   ˆ dƒS )Nrg   r'   r'   ©r&   r'   r(   Ú<lambda>=  r5   z5TestMiscCharacter.test_character_bc.<locals>.<lambda>)r   r   r   r   r�   r   Ú	Exception)r$   r�   r3   r   r'   r    r(   Útest_character_bc1  s    


z#TestMiscCharacter.test_character_bcN)rC   rD   rE   rF   r   rJ   rK   rG   rL   rM   ÚslowrŒ   r‘   r›   rœ   rN   r£   r'   r'   r'   r(   r‡   ±  sD   ÿ	÷õïíåã)×+Õ:Æ<ÄKµ
N
	r‡   c                   @   s.   e Zd Ze dddd¡gZdd„ Zdd„ Zd	S )
ÚTestStringScalarArrÚtestsÚsrcÚstringzscalar_string.f90c                 C   sB   | j jj| j jjfD ](}d}|j|ks*J ‚d}|j|ksJ ‚qd S )Nr'   z|S8)r   Ústring_testr¨   Zstring77r’   r   ©r$   Úoutr:   r'   r'   r(   Ú	test_charC  s    ÿzTestStringScalarArr.test_charc                 C   sB   | j jj| j jjfD ](}d}|j|ks*J ‚d}|j|ksJ ‚qd S )N)rŽ   é   z|S12)r   r©   ZstrarrZstrarr77r’   r   rª   r'   r'   r(   Útest_char_arrK  s    ÿz!TestStringScalarArr.test_char_arrN)rC   rD   rE   r   ÚgetpathÚsourcesr¬   r®   r'   r'   r'   r(   r¥   @  s   r¥   c                   @   s&   e Zd Ze dddd¡gZdd„ ZdS )ÚTestStringAssumedLengthr¦   r§   r¨   z	gh24008.fc                 C   s   | j  dd¡ d S )NZjoeZbob)r   Zgreet)r$   r'   r'   r(   Útest_gh24008V  s    z$TestStringAssumedLength.test_gh24008N)rC   rD   rE   r   r¯   r°   r²   r'   r'   r'   r(   r±   S  s   r±   c                   @   s&   e Zd Ze dddd¡gZdd„ ZdS )ÚTestStringOptionalInOutr¦   r§   r¨   zgh24662.f90c                 C   sv   | j  ¡  tjddd�}| j  |¡ d| ¡  ¡ v s8J ‚t t¡�  d}| j  |¡ W d   ƒ n1 sh0    Y  d S )NÚhiZS32r   zoutput stringZHi)	r   Zstring_inout_optionalr   r   ÚtobytesÚdecoderL   Zraisesr¢   )r$   r   Zaar'   r'   r(   Útest_gh24662]  s    
z$TestStringOptionalInOut.test_gh24662N)rC   rD   rE   r   r¯   r°   r·   r'   r'   r'   r(   r³   Y  s   r³   c                   @   s8   e Zd Ze dddd¡e dddd¡gZdZdd„ Zd	S )
ÚTestNewCharHandlingr¦   r§   r¨   zgh25286.pyfúgh25286.f90Ú_char_handling_testc                 C   s   | j  d¡}|dksJ ‚d S ©NÚTr–   ©r   Zcharint©r$   Úinfor'   r'   r(   Útest_gh25286p  s    z TestNewCharHandling.test_gh25286N©rC   rD   rE   r   r¯   r°   Úmodule_namerÀ   r'   r'   r'   r(   r¸   g  s
   þr¸   c                   @   s8   e Zd Ze dddd¡e dddd¡gZdZdd„ Zd	S )
ÚTestBCCharHandlingr¦   r§   r¨   zgh25286_bc.pyfr¹   rº   c                 C   s   | j  d¡}|dksJ ‚d S r»   r½   r¾   r'   r'   r(   rÀ   }  s    zTestBCCharHandling.test_gh25286NrÁ   r'   r'   r'   r(   rÃ   t  s
   þrÃ   )rL   rJ   Znumpy.testingr   r   r   Únumpyr   Znumpy.f2py.testsr   rM   r¤   ZF2PyTestr   rO   r‡   r¥   r±   r³   r¸   rÃ   r'   r'   r'   r(   Ú<module>   s&   ~  , 