o
    Ô­jlU  ã                   @   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	 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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                   @   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 g 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‘¡¡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ú.f90Ú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/CropPilot/venv/lib/python3.10/site-packages/numpy/f2py/tests/test_character.pyÚ
test_inputL   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_outputU   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   ó   g | ]	}d d„ |D ƒ‘qS )c                 S   ó   g | ]}|‘qS r(   r(   ©Ú.0Úcr(   r(   r)   Ú
<listcomp>h   ó    zCTestCharacterString.test_array_input.<locals>.<listcomp>.<listcomp>r(   ©r5   Úsr(   r(   r)   r7   h   ó    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/   r0   r1   r   c                 S   r2   )c                 S   r3   r(   r(   r4   r(   r(   r)   r7   t   r8   zDTestCharacterString.test_array_output.<locals>.<listcomp>.<listcomp>r(   r9   r(   r(   r)   r7   t   r;   z9TestCharacterString.test_array_output.<locals>.<listcomp>r   r<   )r%   r   r&   r'   r>   r   r(   r(   r)   Útest_array_outputk   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/   r0   r'   ÚfghÚfghijfghijfghijÚFÚFGHÚFGHIJFGHIJFGHIJr1   r   c                 S   r2   )c                 S   r2   )c                 S   r3   r(   r(   r4   r(   r(   r)   r7   �   r8   zQTestCharacterString.test_2d_array_input.<locals>.<listcomp>.<listcomp>.<listcomp>r(   )r5   Úitemr(   r(   r)   r7   �   r;   zFTestCharacterString.test_2d_array_input.<locals>.<listcomp>.<listcomp>r(   )r5   Úrowr(   r(   r)   r7   �   r;   z;TestCharacterString.test_2d_array_input.<locals>.<listcomp>r   ©r   Úorderr<   r=   r(   r(   r)   Útest_2d_array_inputw   s   ÿÿþüÿz'TestCharacterString.test_2d_array_input)Ú__name__Ú
__module__Ú__qualname__Úsuffixr   Úlength_listÚcoder   r&   Údictr   ÚclengthÚtextwrapÚdedentÚjoinÚpytestÚmarkÚparametrizer*   r-   r?   r@   rJ   r(   r(   r(   r)   r      sŠ    þþý	÷	÷õõôïïííëääââá(Ø(Ø*Ö*Ö,Ô6Ê6Ê9

	

r   c                   @   s  e Zd ZdZdZe d g 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‘¡¡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/d0„ Ze	j
 dddg¡d1d2„ ƒZd3d4„ Ze	j
 dddg¡d5d6„ ƒZe	j
 dddg¡d7d8„ ƒZd9d:„ Ze	j
 d;¡d<d=„ ƒZd>d?„ Zd@S )AÚTestCharacterr   Útest_characterr   ú
       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   r6   Ú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 n ty¢ } zt|ƒ 	d
¡s˜‚ W Y d }~nd }~ww t
|j› d�ƒ‚z|dƒ W n tyÌ } zt|ƒ 	d¡sÁ‚ W Y d }~d S d }~ww t
|j› d�ƒ‚)Nr]   r   r^   r   r   ó    ó    Ú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ÚSystemErrorrK   Ú	TypeError©r%   r'   r   Úmsgr(   r(   r)   Útest_input_variaü   sB   
ÿ€ÿÿ€ÿzTestCharacter.test_input_varia)r6   r\   Ú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   Úbr6   r   r   Úi1©r^   ó   bó   c)	r   r   r   r   r   r    r!   r"   r#   r_   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 n t	yR } zt
|ƒ d¡sG‚ W Y d }~d S d }~ww t|j› d	�ƒ‚)
Nrm   rn   r   rp   r   rq   ©r   ro   r6   Ú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#   Ú
ValueErrorre   rf   rg   rK   )r%   r'   rj   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 )NÚ_2d_array_inputrn   ©ru   Úer'   rC   rH   rl   )	r   r   r   r   r    ÚviewÚuint32Úuint8r   )r%   r   r'   r   r>   r(   r(   r)   rJ   9  s   
ÿÿz!TestCharacter.test_2d_array_inputc                 C   s6   t | j| jd ƒ}t|tdƒƒdƒ t|dƒdƒ d S )NÚ_outputr^   r   ra   )r   r   r   r   r#   ©r%   r'   r(   r(   r)   r-   B  s   zTestCharacter.test_outputc                 C   s<   t | j| jd ƒ}t|tttdƒƒƒtjtdƒdd�ƒ d S )NÚ_array_outputr   r\   r   )	r   r   r   r   r!   r"   r#   r   r    r�   r(   r(   r)   r@   H  s   ÿzTestCharacter.test_array_outputc                 C   s@   t | j| jd ƒ}t|dƒdƒ t|dƒdƒ t|dƒdƒ d S )NÚ_input_outputr^   r   r   ra   ©r   r   r   r   r�   r(   r(   r)   Útest_input_outputN  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é   ÚBÚABc)r   r   r   r   r    r!   r   r   )r%   r   r'   r   r(   r(   r)   Ú
test_inoutU  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 n ty[ } zt|ƒ 	d¡sP‚ W Y d }~d S d }~ww t
|j› d�ƒ‚)	Nr†   r   ÚS3r   r.   r‡   z
 got 3-strz  should have failed on str value)r   r   r   r   r    r   r   rx   re   rf   rg   rK   ri   r(   r(   r)   Útest_inout_variac  s    

ÿ€ÿzTestCharacter.test_inout_variac              
   C   s.  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 n tyŽ } zt|ƒ d
¡sƒ‚ W Y d }~d S d }~ww t	|j
› d�ƒ‚)NÚ_array_inout©r.   r‰   ÚCrC   rH   rn   rt   r   rˆ   )r   r.   r‰   r�   rv   rw   )r   r   r   r   r    r   rx   re   rf   rg   rK   )r%   r   r'   Únr   rj   r(   r(   r)   Útest_array_inoutu  s2   


ÿþ€ÿ
ÿ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 )NÚ_2d_array_inoutr�   )ÚDÚErC   rC   rH   rn   r{   r<   )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 )NÚ_returnr   r^   r„   r�   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 )NÚ_array_returnr   r\   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 )NÚ	_optionalr^   ó   Br„   r�   r(   r(   r)   Útest_optional©  s   zTestCharacter.test_optionalN)rK   rL   rM   rN   r   rS   rT   rU   rP   rV   rW   rX   r*   rk   r?   ry   rJ   r-   r@   r…   r‹   r�   r’   r–   r˜   Úskiprš   r�   r(   r(   r(   r)   rY   †   s”    ÿúøóñìêåã!ß#Ý+Õ-Ó7É9Ç@ÀB¾I·KµU«W©]£_¡dœg
	#






rY   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dd„ Zdd„ Z	dd„ Z
dd„ Zej dddg¡dd„ ƒZdS )ÚTestMiscCharacterr   Útest_misc_characterr[   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 )NÚ_gh18684ÚabcdeÚfghijÚS5r   r<   )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 )
NÚ_gh6308r¤   é   r¢   r   s   abcdeÚ12345é   s   12345)	r   r   r   r   Ú_BLNK_Únamer   r   Úlenr�   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 ]\}}||ƒ}| ¡ D ]\}}tt ||ƒ|ƒ qTqHd S )NÚ_gh4519r   r(   r\   )Úshaper   ÚtextÚS4)r
   Ú2r   r   )é   )r
   r´   Ú34ÚS2r   )é   )	r   r   r   rQ   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 )NÚ_gh3425ÚabCs   ABCr   r`   ÚabC12ds   ABC12Dr„   r�   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 )NÚ_character_bc_r^   rˆ   rr   r¸   c                      s   ˆ dƒS )Nrs   r(   r(   ©r'   r(   r)   Ú<lambda>;  s    z5TestMiscCharacter.test_character_bc.<locals>.<lambda>)r   r   r   r   r®   r   Ú	Exception)r%   rÂ   r6   r   r(   rÆ   r)   Útest_character_bc/  s   


z#TestMiscCharacter.test_character_bcN)rK   rL   rM   rN   r   rS   rT   rP   r§   r¯   r½   rÁ   rV   rW   rX   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   óB   | 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Í   Ústring77r±   r   ©r%   Úoutr>   r(   r(   r)   Ú	test_charA  ó   ÿûzTestStringScalarArr.test_charc                 C   rÎ   )N)r«   é   z|S12)r   rÏ   ÚstrarrÚstrarr77r±   r   rÑ   r(   r(   r)   Útest_char_arrI  rÔ   z!TestStringScalarArr.test_char_arrN)rK   rL   rM   r   ÚgetpathÚsourcesrÓ   rØ   r(   r(   r(   r)   rÊ   >  s    rÊ   c                   @   ó&   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 )NÚjoeÚbob)r   Úgreet)r%   r(   r(   r)   Útest_gh24008T  s   z$TestStringAssumedLength.test_gh24008N)rK   rL   rM   r   rÙ   rÚ   rà   r(   r(   r(   r)   rÜ   Q  ó    rÜ   c                   @   rÛ   )ÚTestStringOptionalInOutrË   rÌ   rÍ   zgh24662.f90c                 C   sx   | j  ¡  tjddd�}| j  |¡ d| ¡  ¡ v sJ ‚t t¡� d}| j  |¡ W d   ƒ d S 1 s5w   Y  d S )NÚhiÚS32r   zoutput stringÚHi)	r   Ústring_inout_optionalr   r    ÚtobytesÚdecoderV   ÚraisesrÈ   )r%   r   Úaar(   r(   r)   Útest_gh24662Z  s   
"þz$TestStringOptionalInOut.test_gh24662N)rK   rL   rM   r   rÙ   rÚ   rë   r(   r(   r(   r)   râ   W  rá   râ   c                   @   ó8   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   ó   | j  d¡}|dksJ ‚d S ©NÚTr¸   ©r   Úcharint©r%   Úinfor(   r(   r)   Útest_gh25286m  ó   z TestNewCharHandling.test_gh25286N©rK   rL   rM   r   rÙ   rÚ   Úmodule_namer÷   r(   r(   r(   r)   rí   d  ó    þrí   c                   @   rì   )
ÚTestBCCharHandlingrË   rÌ   rÍ   zgh25286_bc.pyfrî   rï   c                 C   rð   rñ   ró   rõ   r(   r(   r)   r÷   z  rø   zTestBCCharHandling.test_gh25286Nrù   r(   r(   r(   r)   rü   q  rû   rü   )rV   rS   Únumpy.testingr   r   r   Únumpyr   Únumpy.f2py.testsr   ÚF2PyTestr   rY   rŸ   rÊ   rÜ   râ   rW   Úslowrí   rü   r(   r(   r(   r)   Ú<module>   s$    ~  , 