
    &hrD                         S SK r S SKrS SKrS SKrS SKrS SKJr  S SKr " S S\R                  5      r	\
S:X  a  \R                  " 5         gg)    N)example_pathc                   R   \ rS rSr\S 5       r\S 5       rS rS rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\R:                  " \R>                  RA                  S5      S:H  S5      S 5       r!S r"S r#S r$S  r%S! r&S" r'S# r(S$ r)S% r*S&r+g')(MixerMusicModuleTest   c                 @    [         R                  R                  5         g N)pygamemixerinitclss    U/var/www/auris/envauris/lib/python3.13/site-packages/pygame/tests/mixer_music_test.py
setUpClassMixerMusicModuleTest.setUpClass   s     	    c                 @    [         R                  R                  5         g r   )r	   r
   quitr   s    r   tearDownClass"MixerMusicModuleTest.tearDownClass   s    r   c                     [         R                  R                  5       c  [         R                  R                  5         g g r   )r	   r
   get_initr   r   s    r   setUpMixerMusicModuleTest.setUp   s,     <<  "*LL +r   c                 &    U R                  S5        g)|tags:music|mp3N
music_loadselfs    r   test_load_mp3"MixerMusicModuleTest.test_load_mp3       r   c                 &    U R                  S5        g)r   oggNr   r   s    r   test_load_ogg"MixerMusicModuleTest.test_load_ogg   r#   r   c                 &    U R                  S5        g)r   wavNr   r   s    r   test_load_wav"MixerMusicModuleTest.test_load_wav#   r#   r   c                    [        S5      n[        R                  R                  USU 35      n[        R                  S:X  a  UR                  SS5      n[        U5      nUR                  5       n[        R                  R                  R                  U5        [        R                  R                  R                  U5        g )Ndata	house_lo.\\\)r   ospathjoinsepreplacestrencoder	   r
   musicload)r    format
data_fnamer2   umusfnbmusfns         r   r   MixerMusicModuleTest.music_load'   s    !&)
ww||J)F8(<=66T><<f-DT''r   c                    SS/n[        S5      nU H  n[        R                  R                  USU 35      n[        R                  S:X  a  UR                  SS5      nUR                  5       n[        US5       n[        R                  R                  R                  U5        SSS5        M     g! , (       d  f       M  = f)	z*test loading music from file-like objects.r%   r)   r-   r.   r/   r0   rbN)r   r1   r2   r3   r4   r5   r7   openr	   r
   r8   r9   r    formatsr;   fr2   r=   musfs          r   test_load_object%MixerMusicModuleTest.test_load_object3   s    %.!&)
A77<<
isO<Dvv~||D&1[[]Ffd#t""''- $#  $#s   :*B11
C 	c                 ^   SS/n[        S5      nU GHQ  n[        R                  R                  USU 35      n[        R                  S:X  a  UR                  SS5      nUR                  5       n[        US5       n[        R                  R                  R                  Xc5        SSS5        [        US5       n[        R                  R                  R                  Xc5        SSS5        [        US5       n[        R                  R                  R                  XcS	9  SSS5        [        US5       n[        R                  R                  R                  XcS	9  SSS5        GMT     g! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nr= f! , (       d  f       GM  = f)
zKtest loading & queuing music from file-like objects with namehint argument.r)   r%   r-   r.   r/   r0   r@   Nnamehint)r   r1   r2   r3   r4   r5   r7   rA   r	   r
   r8   r9   queuerB   s          r   test_object_namehint)MixerMusicModuleTest.test_object_namehint@   s8   %.!&)
A77<<
isO<Dvv~||D&1[[]F fd#t""''0 $ fd#t""((1 $ fd#t""'''9 $ fd#t""(((: $#!  $# $# $# $#s0   ;*E)9*E:7(F3(F)
E7	:
F	
F	
F,	c                    SSK n[        S5      n[        R                  R	                  US5      n[        R                  R	                  US5      n [        US5       n SSS5        [        R                  " U5        UR                  XC5         [        R                  R                  R                  U5        [        R                  R                  R                  U5        [        R                  " U5        g! , (       d  f       N= f! [         a    [        R                  " S5      ef = f! [        R                  " U5        f = f)ztest non-ASCII unicode pathr   Nr-   u
   你好.wavhouse_lo.wavwzthe path cannot be opened)shutilr   r1   r2   r3   rA   removeOSErrorunittestSkipTestcopyr	   r
   r8   r9   )r    rQ   ep	temp_fileorg_filerD   s         r   test_load_unicode&MixerMusicModuleTest.test_load_unicodeW   s    &!GGLL\2	77<<N3	Ai% &IIi  	H(	!LL##I.LL##H-IIi  &%  	A##$?@@	A IIi s1   D	 C8D	 AD- 8
DD	 	!D*-Ec                    SS K nSS Kn[        S5      n[        R                  R                  US5      nUR                  S5      u  pV[        R                  " U5        UR                  XF5         [        R                  R                  R                  U5        [        R                  R                  R                  5         [        R                  " U5        g ! [        R                  " U5        f = f)Nr   r-   rO   z.wav)rQ   tempfiler   r1   r2   r3   mkstempcloserV   r	   r
   r8   r9   unloadrR   )r    rQ   r]   rW   rY   tmpfdtmppaths          r   test_unload MixerMusicModuleTest.test_unloadk   s    &!77<<N3!))&1
H&	LL##G,LL%%'IIgBIIgs   /AC C/c                     [        [        R                  R                  SS5      5      n[        R
                  R                  R                  U5        g)z1Ensures queue() accepts mp3 files.

|tags:music|
r-   house_lo.mp3Nr   r1   r2   r3   r	   r
   r8   rK   r    filenames     r   test_queue_mp3#MixerMusicModuleTest.test_queue_mp3z   5    
  V^ DE  *r   c                     [        [        R                  R                  SS5      5      n[        R
                  R                  R                  U5        g)z1Ensures queue() accepts ogg files.

|tags:music|
r-   house_lo.oggNrg   rh   s     r   test_queue_ogg#MixerMusicModuleTest.test_queue_ogg   rl   r   c                     [        [        R                  R                  SS5      5      n[        R
                  R                  R                  U5        g)z1Ensures queue() accepts wav files.

|tags:music|
r-   rO   Nrg   rh   s     r   test_queue_wav#MixerMusicModuleTest.test_queue_wav   rl   r   c                 L   [        [        R                  R                  SS5      5      n[        [        R                  R                  SS5      5      n[        R
                  R                  R                  U5        [        R
                  R                  R                  U5        g)z-Ensures queue() can be called multiple times.r-   rn   rO   Nrg   )r    ogg_filewav_files      r   test_queue__multiple_calls/MixerMusicModuleTest.test_queue__multiple_calls   sd    V^ DEV^ DE  *  *r   c                    [        [        R                  R                  SS5      5      n[        R
                  R                  R                  USS9  [        R
                  R                  R                  USS9  [        R
                  R                  R                  US5        [        R
                  R                  R                  USS5        g)z4Ensures queue() can be called with proper arguments.r-   rO      )loops rI   Nrg   )r    rv   s     r   test_queue__arguments*MixerMusicModuleTest.test_queue__arguments   s    V^ DE   3  B 7  2.  2q1r   c                     U R                  [        5         [        R                  R                  R                  5         SSS5        g! , (       d  f       g= f)z<Ensures queue() correctly handles missing the file argument.N)assertRaises	TypeErrorr	   r
   r8   rK   r   s    r   test_queue__no_file(MixerMusicModuleTest.test_queue__no_file   s2    y)LL$$& *))s   )A
Ac                    [        [        R                  R                  SS5      5      nU R	                  [
        R                  5         [
        R                  R                  R                  U5        SSS5        g! , (       d  f       g= f)z5Ensures queue() correctly handles invalid file types.r-   zcity.pngN)
r   r1   r2   r3   r   r	   errorr
   r8   rK   )r    not_a_sound_files     r   test_queue__invalid_sound_type3MixerMusicModuleTest.test_queue__invalid_sound_type   sS    'VZ(HIv||,LL$$%56 -,,s   	*A<<
B
c                     U R                  [        R                  5         [        R                  R                  R                  S5        SSS5        g! , (       d  f       g= f)z4Ensures queue() correctly handles invalid filenames.r|   N)r   r	   r   r
   r8   rK   r   s    r   test_queue__invalid_filename1MixerMusicModuleTest.test_queue__invalid_filename   s8    v||,LL$$R( -,,s   *A
A!c                    [        [        R                  R                  SS5      5      n[        R
                  R                  R                  U5        [        R
                  R                  R                  5         [        R                  " S5        [        R
                  R                  R                  5         [        R                  " S5        [        R
                  R                  R                  5       n[        R
                  R                  R                  5         [        R
                  R                  R                  5       nU R                  X#5        g)zPEnsure music has the correct position immediately after unpausing

|tags:music|
r-   rf   g?N)r   r1   r2   r3   r	   r
   r8   r9   playtimesleeppauseget_posunpauseassertEqual)r    ri   before_unpauseafter_unpauses       r   test_music_pause__unpause.MixerMusicModuleTest.test_music_pause__unpause   s    
  V^ DE)! 	

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

4++335""$**2247r   c                    [        [        R                  R                  SS5      5      n[        R
                  R                  R                  U5        [        R
                  R                  R                  5         [        R
                  R                  R                  5         U R                  [        R
                  R                  R                  5       S5        g )Nr-   rf   F)r   r1   r2   r3   r	   r
   r8   r9   r   stopr   get_busyrh   s     r   	test_stopMixerMusicModuleTest.test_stop   s      V^ DE)!!++446>r   c                    [        [        R                  R                  SS5      5      n[        R
                  R                  R                  U5        [        R
                  R                  R                  5         [        R                  " S5        [        R
                  R                  R                  5         [        R                  " S5        U R                  [        R
                  R                  R                  5       5        [        R
                  R                  R                  5         [        R
                  R                  R                  5         [        R                  " S5        [        R
                  R                  R                  5         [        R
                  R                  R                  5         U R!                  [        R
                  R                  R                  5       5        [        R                  " S5        [        R
                  R                  R#                  5         [        R                  " S5        U R                  [        R
                  R                  R                  5       5        g )Nr-   rf      g@rz      )r   r1   r2   r3   r	   r
   r8   r9   r   r   r   rewind
assertTruer   r   r   assertFalser   rh   s     r   test_rewind 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                 $    U R                  5         g r   failr   s    r   todo_test_get_pos&MixerMusicModuleTest.todo_test_get_pos   s     			r   SDL_AUDIODRIVERdiskz4disk audio driver "playback" writing to disk is slowc                    [         R                  R                  5         [        [        R
                  R                  SS5      5      n[         R                  R                  R                  U5        SnSn[         R                  R                  5       nUR                  5       n[         R                  R                  R                  SUS9  SnU(       a  [         R                  R                  5         [         R                  R                  R!                  5       (       d3  U(       d,  SnUR                  5       U-
  S-  nU R#                  US	5        SnU(       a  M  g g )
Nr-   rn   g      @Fr   )startTi  r   )r	   displayr   r   r1   r2   r3   r
   r8   r9   r   Clocktickr   eventpumpr   r   )r    ri   start_time_in_secondsmusic_finishedclockstart_time_in_msrunningtime_to_finishs           r   test_play__start_time*MixerMusicModuleTest.test_play__start_time  s    
 	  V^ DE) #!!# ::<)>?LLLL&&//11^!%"'**,1A"Ad!J  3 gr   c                    [        [        R                  R                  SS5      5      n[        R
                  R                  R                  U5        [        R
                  R                  R                  5         U R                  [        R
                  R                  R                  5       5        [        R
                  R                  R                  5         g )Nr-   rf   )r   r1   r2   r3   r	   r
   r8   r9   r   r   r   r   rh   s     r   	test_playMixerMusicModuleTest.test_play  s    "  V^ DE)!**3356!r   c                    [        [        R                  R                  SS5      5      n[        R
                  R                  R                  U5        U R                  [        R
                  R                  R                  5       5        [        R
                  R                  R                  5         U R                  [        R
                  R                  R                  5       5        [        [        R                  R                  SS5      5      n[        R
                  R                  R                  U5        U R                  [        R
                  R                  R                  5       5        g )Nr-   rf   rO   )r   r1   r2   r3   r	   r
   r8   r9   r   r   r   r   rh   s     r   	test_loadMixerMusicModuleTest.test_load7  s      V^ DE)++4467!**3356V^ DE)++4467r   c                    [        [        R                  R                  SS5      5      n[        R
                  R                  R                  U5        [        R
                  R                  R                  5         [        R
                  R                  R                  5       nU R                  US5        U R                  US5        [        R
                  R                  R                  5         g )Nr-   rf   r   r   )r   r1   r2   r3   r	   r
   r8   r9   r   
get_volumeassertGreaterEqualassertLessEqualr   r    ri   vols      r   test_get_volume$MixerMusicModuleTest.test_get_volumeL  s      V^ DE)!ll  ++-Q'S!$!r   c                    U R                  S5        U R                  [        R                  R                  R                  5       5        [        R                  R                  R                  5         U R                  [        R                  R                  R                  5       5        [        R                  R                  R                  5         U R                  [        R                  R                  R                  5       5        g Nr%   	r   r   r	   r
   r8   r   r   r   r   r   s    r   
test_pauseMixerMusicModuleTest.test_pause\  s     	++4467!**3356  "++4467r   c                    U R                  S5        U R                  [        R                  R                  R                  5       5        [        R                  R                  R                  5         U R                  [        R                  R                  R                  5       5        [        R                  R                  R                  5         U R                  [        R                  R                  R                  5       5        g r   r   r   s    r   test_get_busy"MixerMusicModuleTest.test_get_busyi  s     	++4467!**3356  "++4467r   c                 R   [        [        R                  R                  SS5      5      n[        R
                  R                  R                  U5        [        R
                  R                  R                  5         U R                  [        R
                  R                  R                  5       5        [        R                  " S5        [        R
                  R                  R                  5         U R                  [        R
                  R                  R                  5       5        [        R
                  R                  R                  5       n[        R
                  R                  R!                  5         [        R
                  R                  R                  5       nU R                  [        R
                  R                  R                  5       5        U R                  US-
  Us=:*  =(       a    US-   :*  Os  5        [        R
                  R                  R#                  5         g )Nr-   rf   g?r   )r   r1   r2   r3   r	   r
   r8   r9   r   r   r   r   r   r   r   r   r   r   )r    ri   beforeafters       r   test_unpause!MixerMusicModuleTest.test_unpausew  sJ   
  V^ DE)!**3356

3  "++4467##++-""$""**,**3356 	
e99vz9:!r   c                    [        [        R                  R                  SS5      5      n[        R
                  R                  R                  U5        [        R
                  R                  R                  5         [        R
                  R                  R                  S5        [        R
                  R                  R                  5       nU R                  US5        [        R
                  R                  R                  5         g )Nr-   rf   g      ?)r   r1   r2   r3   r	   r
   r8   r9   r   
set_volumer   r   r   r   s      r   test_set_volume$MixerMusicModuleTest.test_set_volume  s      V^ DE)!%%c*ll  ++-c"!r   c                 $    U R                  5         g r   r   r   s    r   todo_test_set_pos&MixerMusicModuleTest.todo_test_set_pos  s     			r   c                 6   SSK nSSKn[        [        R                  R                  SS5      5      n[        R                  R                  UR                  5       S5      n[        S5       H  n[        R                  R                  5          UR                  X45        [        R                  R                  R                  U5        [        R                  R                  5         [        R                  " U5        M     g! [        R                  " U5        f = f)z8issue #955. unload music whenever mixer.quit() is calledr   Nr-   rO   ztempfile.wav
   )r]   rQ   r   r1   r2   r3   
gettempdirranger	   r
   r   copy2r8   r9   r   rR   )r    r]   rQ   testfiletempcopyis         r   	test_initMixerMusicModuleTest.test_init  s    V^ DE77<< 3 3 5~FrALL$X0""''1!!#		(#  		(#s   AD  D N),__name__
__module____qualname____firstlineno__classmethodr   r   r   r!   r&   r*   r   rF   rL   rZ   rc   rj   ro   rr   rw   r}   r   r   r   r   r   r   r   rT   skipIfr1   environgetr   r   r   r   r   r   r   r   r   r   __static_attributes__r   r   r   r   r      s        
(.;.!(++++2'
7)
8(	?78	( __


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