o
    tVg                     @   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   N/home/ubuntu/.local/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   allowedchangessize: %i
%s
%s)pygamemixeriniterrorget_initr   r   sndarray
make_soundr   
assertTruealltruequitr   channels	test_data__szsrcarrsndr   r   r   r   check_array   s&   

z,SndarrayTest.test_array.<locals>.check_arrayr
      r               r      -   A   d      r5   @   r   r   r5        r?   r>       r   r      r:   rC   %   r   r     rH   rK   rJ   r   )r   r0   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   
array_typer   r   r   test_get_arraytype0   s   
zSndarrayTest.test_get_arraytypec                 C   s8   t j }| d| |D ]}| |dd|  qd S rM   )r   r#   get_arraytypesassertInr   )r   
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
   r1   r2   r6   r   r7   r8   r9   r:   r;   }   r<   r   r=   r?   r5   r>   r@   rA   r   rB   rC   rE   rF   rG   rH   r   rI   rK   rJ   r                       ?r   )r   rX   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#   rW   r   r   r%   r&   r'   )	r   r)   r*   r+   r,   zeroedr.   rW   r   	null_byter   r   r   check_sample_   s*   
z/SndarrayTest.test_samples.<locals>.check_sampler
   r1   r2   r6   r   r7   r8   r9   r:   r;   r5   r<   r   r=   r?   r>   r@   rA   r   rB   rC   rE   rF   rG   rH   r   rI   rK   rJ   r   rZ   r[   r\   r   )r   rf   r   rd   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)rU   r   r   r   do_use_arraytype   s   z9SndarrayTest.test_use_arraytype.<locals>.do_use_arraytyperN   znot an option)r   r#   rh   r   rO   assertRaises
ValueError)r   ri   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   r6   r   r   zunsupported mixer configurationrZ   r[   r\   )r   N)	r   r   r    r!   skipTestr   r   rb   r'   )r   r   newsoundr   r   r   test_float32   s   "zSndarrayTest.test_float32N)__name__
__module____qualname__r   r   r   r   r   r   r   rL   rQ   rV   r]   rg   rl   ro   r   r   r   r   r	   	   s      '	r	   __main__)unittestrN   r   r   r   r   r   r   r   r&   r   pygame.sndarrayTestCaser	   rp   mainr   r   r   r   <module>   s    $ 