o
    OZh                     @   sf   d dl Z d dlmZmZmZmZmZmZmZ	 d dl
Z
d dlZ
G dd de jZedkr1e   dS dS )    N)int8int16uint8uint16float32arrayallc                   @   s\   e Zd Zeeeee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S )SndarrayTest)          c                 C   s   | j | }| |j| d S N)array_dtypesassertEqualdtype)selfarrsizer    r   I/var/www/auris/lib/python3.10/site-packages/pygame/tests/sndarray_test.py_assert_compatible   s   
zSndarrayTest._assert_compatiblec                    s    fdd}|ddg d |ddddgd	d
gddgddgg |ddg d |ddddgddgddgddgg |ddg d |ddddgddgddgddgg |ddg d |ddddgddgddgddgg d S ) Nc                    s   zt jjd| |dd W n t jy   Y d S w zEt j \}}}|| krVt| j|  }t j|}t j|} 	||   
t||kd| ||f  W t j  d S W t j  d S t j  w N"V  r   Zallowedchangessize: %i
%s
%s)pygamemixeriniterrorget_initr   r   sndarray
make_soundr   
assertTruealltruequitr   channels	test_data__szZsrcarrsndr   r   r   r   check_array   s&   

z,SndarrayTest.test_array.<locals>.check_arrayr
      r               r      -   A   d      r3   @   r   r   r3        r=   r<       r   r      r8   rA   %   r   r     rF   rI   rH   r   )r   r.   r   r-   r   
test_array   s   $$(zSndarrayTest.test_arrayc                 C   s"   t j }| |dd|  d S Nnumpyzunknown array type )r   r"   get_arraytyper   )r   Z
array_typer   r   r   test_get_arraytype0   s   
zSndarrayTest.test_get_arraytypec                 C   s8   t j }| d| |D ]}| |dd|  qd S rK   )r   r"   Zget_arraytypesZassertInr   )r   Z
arraytypesatyper   r   r   test_get_arraytypes5   s
   
z SndarrayTest.test_get_arraytypesc                    s   fdd}|ddg d |ddddgd	d
gddgddgg |ddg d |ddddgddgddgddgg |ddg d |ddddgddgddgddgg |ddg d |ddddgddgd dgdd gg |d!dd"d#gd#dgd$dgdd$gg d S )%Nc                    s   zt jjd| |dd W n t jy   Y d S w z?t j \}}}|| krPt| j|  }t j|}t j	|} 
t||kd| ||f  W t j  d S W t j  d S t j  w r   )r   r   r   r    r!   r   r   r"   r#   samplesr$   r%   r&   r'   r-   r   r   check_sound=   s$   
	z1SndarrayTest.test_make_sound.<locals>.check_soundr
   r/   r0   r4   r   r5   r6   r7   r8   r9   }   r:   r   r;   r=   r3   r<   r>   r?   r   r@   rA   rC   rD   rE   rF   r   rG   rI   rH   r                       ?r   )r   rR   r   r-   r   test_make_sound<   s   $$$(zSndarrayTest.test_make_soundc                    s
  d  fdd}|ddg d |dddd	gd
dgddgddgg |ddg d |ddddgddgddgddgg |ddg d |ddddgddgddgddgg |ddg d |ddddgddgd dgdd gg |d!dd"d#gd#dgd$dgdd$gg d S )%N    c           	         s   zt jjd| |dd W n t jy   Y d S w zVt j \}}}|| krg t| d t| |  }t jj|d}t j	|}
||  ||d< t j|}t||kd| ||f  W t j  d S W t j  d S t j  w )Nr   r   r   r
   )buffer.r   )r   r   r   r    r!   abslenSoundr"   rQ   r   r   r$   r%   r&   )	r   r(   r)   r*   r+   Zzeroedr,   rQ   r   	null_byter   r   r   check_sample_   s*   
z/SndarrayTest.test_samples.<locals>.check_sampler
   r/   r0   r4   r   r5   r6   r7   r8   r9   r3   r:   r   r;   r=   r<   r>   r?   r   r@   rA   rC   rD   rE   rF   r   rG   rI   rH   r   rT   rU   rV   r   )r   r_   r   r]   r   test_samples\   s   $$$(zSndarrayTest.test_samplesc                 C   s8   dd }t jd | t j d | t|d d S )Nc                 S   s   t j|  d S r   )r   r"   use_arraytype)rO   r   r   r   do_use_arraytype   s   z9SndarrayTest.test_use_arraytype.<locals>.do_use_arraytyperL   znot an option)r   r"   ra   r   rM   assertRaises
ValueError)r   rb   r   r   r   test_use_arraytype   s   zSndarrayTest.test_use_arraytypec                 C   sv   zt jjddddd W n t jy   | d Y nw tddgddgd	dgdd	ggt}t jj|d
}t j  dS )z5sized arrays work with Sounds and 32bit float arrays.r   r   r4   r   r   zunsupported mixer configurationrT   rU   rV   )r   N)	r   r   r   r    ZskipTestr   r   r\   r&   )r   r   Znewsoundr   r   r   test_float32   s   "zSndarrayTest.test_float32N)__name__
__module____qualname__r   r   r   r   r   r   r   rJ   rN   rP   rW   r`   re   rf   r   r   r   r   r	   	   s      '	r	   __main__)ZunittestrL   r   r   r   r   r   r   r   r%   r   Zpygame.sndarrayZTestCaser	   rg   mainr   r   r   r   <module>   s    $ 