
    irD                         d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZ G d dej                        Z	e
dk(  r ej                          yy)    N)example_pathc                   J   e Zd Zed        Zed        Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z ej8                  ej<                  j?                  d      dk(  d      d        Z d Z!d Z"d Z#d Z$d  Z%d! Z&d" Z'd# Z(d$ Z)y%)&MixerMusicModuleTestc                 @    t         j                  j                          y N)pygamemixerinitclss    g/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/pygame/tests/mixer_music_test.py
setUpClasszMixerMusicModuleTest.setUpClass   s     	    c                 @    t         j                  j                          y r   )r   r	   quitr   s    r   tearDownClassz"MixerMusicModuleTest.tearDownClass   s    r   c                 ~    t         j                  j                         t         j                  j                          y y r   )r   r	   get_initr
   r   s    r   setUpzMixerMusicModuleTest.setUp   s,     <<  "*LL +r   c                 &    | j                  d       y)|tags:music|mp3N
music_loadselfs    r   test_load_mp3z"MixerMusicModuleTest.test_load_mp3       r   c                 &    | j                  d       y)r   oggNr   r   s    r   test_load_oggz"MixerMusicModuleTest.test_load_ogg   r   r   c                 &    | j                  d       y)r   wavNr   r   s    r   test_load_wavz"MixerMusicModuleTest.test_load_wav#   r   r   c                    t        d      }t        j                  j                  |d|       }t        j                  dk(  r|j                  dd      }t        |      }|j                         }t        j                  j                  j                  |       t        j                  j                  j                  |       y )Ndata	house_lo.\\\)r   ospathjoinsepreplacestrencoder   r	   musicload)r   format
data_fnamer+   umusfnbmusfns         r   r   zMixerMusicModuleTest.music_load'   s    !&)
ww||J)F8(<=66T><<f-DT''r   c                 t   ddg}t        d      }|D ]  }t        j                  j                  |d|       }t        j                  dk(  r|j                  dd      }|j                         }t        |d      5 }t        j                  j                  j                  |       ddd        y# 1 sw Y   xY w)	z*test loading music from file-like objects.r    r#   r&   r'   r(   r)   rbN)r   r*   r+   r,   r-   r.   r0   openr   r	   r1   r2   r   formatsr4   fr+   r6   musfs          r   test_load_objectz%MixerMusicModuleTest.test_load_object3   s    %.!&)
 	.A77<<
isO<Dvv~||D&1[[]Ffd# .t""''-. .	.. .s   9*B..B7	c                 B   ddg}t        d      }|D ]Y  }t        j                  j                  |d|       }t        j                  dk(  r|j                  dd      }|j                         }t        |d      5 }t        j                  j                  j                  ||       ddd       t        |d      5 }t        j                  j                  j                  ||       ddd       t        |d      5 }t        j                  j                  j                  ||	       ddd       t        |d      5 }t        j                  j                  j                  ||	       ddd       \ y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   exY w# 1 sw Y   xY w)
zKtest loading & queuing music from file-like objects with namehint argument.r#   r    r&   r'   r(   r)   r8   Nnamehint)r   r*   r+   r,   r-   r.   r0   r9   r   r	   r1   r2   queuer:   s          r   test_object_namehintz)MixerMusicModuleTest.test_object_namehint@   sc   %.!&)
 	;A77<<
isO<Dvv~||D&1[[]F fd# 1t""''a01 fd# 2t""((q12 fd# :t""''q'9: fd# ;t""(((:; ;!	;1 12 2: :; ;s0   :+E09+E<8,F8,F0E9	<F	F	F	c                 ~   ddl }t        d      }t        j                  j	                  |d      }t        j                  j	                  |d      }	 t        |d      5 }	 ddd       t        j                  |       |j                  ||       	 t        j                  j                  j                  |       t        j                  j                  j                  |       t        j                  |       y# 1 sw Y   xY w# t        $ r t        j                  d      w xY w# t        j                  |       w xY w)ztest non-ASCII unicode pathr   Nr&   u
   你好.wavhouse_lo.wavwzthe path cannot be opened)shutilr   r*   r+   r,   r9   removeOSErrorunittestSkipTestcopyr   r	   r1   r2   )r   rG   ep	temp_fileorg_filer<   s         r   test_load_unicodez&MixerMusicModuleTest.test_load_unicodeW   s    &!GGLL\2	77<<N3	Ai% IIi  	Hi(	!LL##I.LL##H-IIi    	A##$?@@	A IIi s1   D C7D AD% 7D <D D"%D<c                    dd l }dd l}t        d      }t        j                  j                  |d      }|j                  d      \  }}t        j                  |       |j                  ||       	 t        j                  j                  j                  |       t        j                  j                  j                          t        j                  |       y # t        j                  |       w xY w)Nr   r&   rE   z.wav)rG   tempfiler   r*   r+   r,   mkstempcloserL   r   r	   r1   r2   unloadrH   )r   rG   rR   rM   rO   tmpfdtmppaths          r   test_unloadz MixerMusicModuleTest.test_unloadk   s    &!77<<N3!))&1w
Hg&	LL##G,LL%%'IIgBIIgs   0AC C.c                     t        t        j                  j                  dd            }t        j
                  j                  j                  |       y)zAEnsures queue() accepts mp3 files.

        |tags:music|
        r&   house_lo.mp3Nr   r*   r+   r,   r   r	   r1   rB   r   filenames     r   test_queue_mp3z#MixerMusicModuleTest.test_queue_mp3z   5    
  V^ DE  *r   c                     t        t        j                  j                  dd            }t        j
                  j                  j                  |       y)zAEnsures queue() accepts ogg files.

        |tags:music|
        r&   house_lo.oggNr[   r\   s     r   test_queue_oggz#MixerMusicModuleTest.test_queue_ogg   r_   r   c                     t        t        j                  j                  dd            }t        j
                  j                  j                  |       y)zAEnsures queue() accepts wav files.

        |tags:music|
        r&   rE   Nr[   r\   s     r   test_queue_wavz#MixerMusicModuleTest.test_queue_wav   r_   r   c                 L   t        t        j                  j                  dd            }t        t        j                  j                  dd            }t        j
                  j                  j                  |       t        j
                  j                  j                  |       y)z-Ensures queue() can be called multiple times.r&   ra   rE   Nr[   )r   ogg_filewav_files      r   test_queue__multiple_callsz/MixerMusicModuleTest.test_queue__multiple_calls   sd    V^ DEV^ DE  *  *r   c                    t        t        j                  j                  dd            }t        j
                  j                  j                  |d       t        j
                  j                  j                  |d       t        j
                  j                  j                  |d       t        j
                  j                  j                  |dd       y)z4Ensures queue() can be called with proper arguments.r&   rE      )loops r@   Nr[   )r   rg   s     r   test_queue__argumentsz*MixerMusicModuleTest.test_queue__arguments   s    V^ DE   3  B 7  2.  2q1r   c                     | j                  t              5  t        j                  j                  j                          ddd       y# 1 sw Y   yxY w)z<Ensures queue() correctly handles missing the file argument.N)assertRaises	TypeErrorr   r	   r1   rB   r   s    r   test_queue__no_filez(MixerMusicModuleTest.test_queue__no_file   s;    y) 	'LL$$&	' 	' 	's   )AAc                    t        t        j                  j                  dd            }| j	                  t
        j                        5  t
        j                  j                  j                  |       ddd       y# 1 sw Y   yxY w)z5Ensures queue() correctly handles invalid file types.r&   zcity.pngN)
r   r*   r+   r,   ro   r   errorr	   r1   rB   )r   not_a_sound_files     r   test_queue__invalid_sound_typez3MixerMusicModuleTest.test_queue__invalid_sound_type   s\    'VZ(HIv||, 	7LL$$%56	7 	7 	7s   	*A<<Bc                     | j                  t        j                        5  t        j                  j                  j                  d       ddd       y# 1 sw Y   yxY w)z4Ensures queue() correctly handles invalid filenames.rl   N)ro   r   rs   r	   r1   rB   r   s    r   test_queue__invalid_filenamez1MixerMusicModuleTest.test_queue__invalid_filename   sA    v||, 	)LL$$R(	) 	) 	)s   *AAc                    t        t        j                  j                  dd            }t        j
                  j                  j                  |       t        j
                  j                  j                          t        j                  d       t        j
                  j                  j                          t        j                  d       t        j
                  j                  j                         }t        j
                  j                  j                          t        j
                  j                  j                         }| j                  ||       y)z`Ensure music has the correct position immediately after unpausing

        |tags:music|
        r&   rZ   g?N)r   r*   r+   r,   r   r	   r1   r2   playtimesleeppauseget_posunpauseassertEqual)r   r]   before_unpauseafter_unpauses       r   test_music_pause__unpausez.MixerMusicModuleTest.test_music_pause__unpause   s    
  V^ DE)! 	

4  "

4++335""$**2247r   c                    t        t        j                  j                  dd            }t        j
                  j                  j                  |       t        j
                  j                  j                          t        j
                  j                  j                          | j                  t        j
                  j                  j                         d       y )Nr&   rZ   F)r   r*   r+   r,   r   r	   r1   r2   ry   stopr   get_busyr\   s     r   	test_stopzMixerMusicModuleTest.test_stop   s      V^ DE)!!++446>r   c                    t        t        j                  j                  dd            }t        j
                  j                  j                  |       t        j
                  j                  j                          t        j                  d       t        j
                  j                  j                          t        j                  d       | j                  t        j
                  j                  j                                t        j
                  j                  j                          t        j
                  j                  j                          t        j                  d       t        j
                  j                  j                          t        j
                  j                  j                          | j!                  t        j
                  j                  j                                t        j                  d       t        j
                  j                  j#                          t        j                  d       | j                  t        j
                  j                  j                                y )Nr&   rZ      g@rj      )r   r*   r+   r,   r   r	   r1   r2   ry   rz   r{   rewind
assertTruer   r   r|   assertFalser~   r\   s     r   test_rewindz MixerMusicModuleTest.test_rewind   si     V^ DE)! 	

1!!#

3**3356! 	!

1  "!!#++4467

1""$

3**3356r   c                 $    | j                          y r   failr   s    r   todo_test_get_posz&MixerMusicModuleTest.todo_test_get_pos   s     			r   SDL_AUDIODRIVERdiskz4disk audio driver "playback" writing to disk is slowc                    t         j                  j                          t        t        j
                  j                  dd            }t         j                  j                  j                  |       d}d}t         j                  j                         }|j                         }t         j                  j                  j                  d|       d}|rxt         j                  j                          t         j                  j                  j!                         s.|s,d}|j                         |z
  dz  }| j#                  |d	       d}|rwy y )
Nr&   ra   g      @Fr   )startTi  r   )r   displayr
   r   r*   r+   r,   r	   r1   r2   rz   Clocktickry   eventpumpr   r   )r   r]   start_time_in_secondsmusic_finishedclockstart_time_in_msrunningtime_to_finishs           r   test_play__start_timez*MixerMusicModuleTest.test_play__start_time  s    
 	  V^ DE) #!!# ::<)>?LLLL&&//1^!%"'**,1A"Ad!J  3 r   c                    t        t        j                  j                  dd            }t        j
                  j                  j                  |       t        j
                  j                  j                          | j                  t        j
                  j                  j                                t        j
                  j                  j                          y )Nr&   rZ   )r   r*   r+   r,   r   r	   r1   r2   ry   r   r   r   r\   s     r   	test_playzMixerMusicModuleTest.test_play  s    "  V^ DE)!**3356!r   c                    t        t        j                  j                  dd            }t        j
                  j                  j                  |       | j                  t        j
                  j                  j                                t        j
                  j                  j                          | j                  t        j
                  j                  j                                t        t        j                  j                  dd            }t        j
                  j                  j                  |       | j                  t        j
                  j                  j                                y )Nr&   rZ   rE   )r   r*   r+   r,   r   r	   r1   r2   r   r   ry   r   r\   s     r   	test_loadzMixerMusicModuleTest.test_load7  s      V^ DE)++4467!**3356V^ DE)++4467r   c                    t        t        j                  j                  dd            }t        j
                  j                  j                  |       t        j
                  j                  j                          t        j
                  j                  j                         }| j                  |d       | j                  |d       t        j
                  j                  j                          y )Nr&   rZ   r   r   )r   r*   r+   r,   r   r	   r1   r2   ry   
get_volumeassertGreaterEqualassertLessEqualr   r   r]   vols      r   test_get_volumez$MixerMusicModuleTest.test_get_volumeL  s      V^ DE)!ll  ++-Q'S!$!r   c                    | j                  d       | j                  t        j                  j                  j                                t        j                  j                  j                          | j                  t        j                  j                  j                                t        j                  j                  j                          | j                  t        j                  j                  j                                y Nr    	r   r   r   r	   r1   r   ry   r   r|   r   s    r   
test_pausezMixerMusicModuleTest.test_pause\  s     	++4467!**3356  "++4467r   c                    | j                  d       | j                  t        j                  j                  j                                t        j                  j                  j                          | j                  t        j                  j                  j                                t        j                  j                  j                          | j                  t        j                  j                  j                                y r   r   r   s    r   test_get_busyz"MixerMusicModuleTest.test_get_busyi  s     	++4467!**3356  "++4467r   c                 F   t        t        j                  j                  dd            }t        j
                  j                  j                  |       t        j
                  j                  j                          | j                  t        j
                  j                  j                                t        j                  d       t        j
                  j                  j                          | j                  t        j
                  j                  j                                t        j
                  j                  j                         }t        j
                  j                  j!                          t        j
                  j                  j                         }| j                  t        j
                  j                  j                                | j                  |dz
  |cxk  xr |dz   k  nc        t        j
                  j                  j#                          y )Nr&   rZ   g?r   )r   r*   r+   r,   r   r	   r1   r2   ry   r   r   rz   r{   r|   r   r}   r~   r   )r   r]   beforeafters       r   test_unpausez!MixerMusicModuleTest.test_unpausew  sG   
  V^ DE)!**3356

3  "++4467##++-""$""**,**3356 	
e9vz9:!r   c                    t        t        j                  j                  dd            }t        j
                  j                  j                  |       t        j
                  j                  j                          t        j
                  j                  j                  d       t        j
                  j                  j                         }| j                  |d       t        j
                  j                  j                          y )Nr&   rZ   g      ?)r   r*   r+   r,   r   r	   r1   r2   ry   
set_volumer   r   r   r   s      r   test_set_volumez$MixerMusicModuleTest.test_set_volume  s      V^ DE)!%%c*ll  ++-c"!r   c                 $    | j                          y r   r   r   s    r   todo_test_set_posz&MixerMusicModuleTest.todo_test_set_pos  s     			r   c                 0   ddl }ddl}t        t        j                  j                  dd            }t        j                  j                  |j                         d      }t        d      D ]  }t        j                  j                          	 |j                  ||       t        j                  j                  j                  |       t        j                  j                          t        j                  |        y# t        j                  |       w xY w)z8issue #955. unload music whenever mixer.quit() is calledr   Nr&   rE   ztempfile.wav
   )rR   rG   r   r*   r+   r,   
gettempdirranger   r	   r
   copy2r1   r2   r   rH   )r   rR   rG   testfiletempcopyis         r   	test_initzMixerMusicModuleTest.test_init  s    V^ DE77<< 3 3 5~Fr 	$ALL$Xx0""''1!!#		(#	$ 		(#s   AC>>DN)*__name__
__module____qualname__classmethodr   r   r   r   r!   r$   r   r>   rC   rP   rX   r^   rb   rd   rh   rm   rq   ru   rw   r   r   r   r   rJ   skipIfr*   environgetr   r   r   r   r   r   r   r   r   r    r   r   r   r      s        
(.;.!(++++2'
7)
8(	?78	( X__


()V3> 	 ."28*" 88"," 
$r   r   __main__)r*   sysplatformrJ   rz   pygame.tests.test_utilsr   r   TestCaser   r   mainr   r   r   <module>r      sI    	 
    0 m$8,, m$B zHMMO r   