forked from aniani/vim
		
	patch 8.2.2950: sound code not fully tested
Problem: Sound code not fully tested. Solution: Add more sound tests. (Dominique Pellé, closes #8332)
This commit is contained in:
		
				
					committed by
					
						 Bram Moolenaar
						Bram Moolenaar
					
				
			
			
				
	
			
			
			
						parent
						
							3cfa5b16b0
						
					
				
				
					commit
					c64ed2b714
				
			| @@ -1,12 +1,12 @@ | ||||
| " Tests for the sound feature | ||||
|  | ||||
| source check.vim | ||||
| source shared.vim | ||||
|  | ||||
| if !has('sound') | ||||
|   throw 'Skipped: sound feature not available' | ||||
| endif | ||||
| CheckFeature sound | ||||
|  | ||||
| func PlayCallback(id, result) | ||||
|   let g:playcallback_count += 1 | ||||
|   let g:id = a:id | ||||
|   let g:result = a:result | ||||
| endfunc | ||||
| @@ -15,20 +15,24 @@ func Test_play_event() | ||||
|   if has('win32') | ||||
|     throw 'Skipped: Playing event with callback is not supported on Windows' | ||||
|   endif | ||||
|   let g:playcallback_count = 0 | ||||
|   let g:id = 0 | ||||
|   let id = 'bell'->sound_playevent('PlayCallback') | ||||
|   if id == 0 | ||||
|     throw 'Skipped: bell event not available' | ||||
|   endif | ||||
|  | ||||
|   " Stop it quickly, avoid annoying the user. | ||||
|   sleep 20m | ||||
|   eval id->sound_stop() | ||||
|   call WaitForAssert({-> assert_equal(id, g:id)}) | ||||
|   call assert_equal(1, g:result)  " sound was aborted | ||||
|   call assert_equal(1, g:playcallback_count) | ||||
| endfunc | ||||
|  | ||||
| func Test_play_silent() | ||||
|   let fname = fnamemodify('silent.wav', '%p') | ||||
|   let g:playcallback_count = 0 | ||||
|  | ||||
|   " play without callback | ||||
|   let id1 = sound_playfile(fname) | ||||
| @@ -41,6 +45,7 @@ func Test_play_silent() | ||||
|   call assert_true(id2 > 0) | ||||
|   call WaitForAssert({-> assert_equal(id2, g:id)}) | ||||
|   call assert_equal(0, g:result) | ||||
|   call assert_equal(1, g:playcallback_count) | ||||
|  | ||||
|   let id2 = sound_playfile(fname, 'PlayCallback') | ||||
|   call assert_true(id2 > 0) | ||||
| @@ -48,6 +53,13 @@ func Test_play_silent() | ||||
|   call sound_clear() | ||||
|   call WaitForAssert({-> assert_equal(id2, g:id)}) | ||||
|   call assert_equal(1, g:result)  " sound was aborted | ||||
|   call assert_equal(2, g:playcallback_count) | ||||
|  | ||||
|   " Play 2 sounds almost at the same time to exercise | ||||
|   " code with multiple callbacks in the callback list. | ||||
|   call sound_playfile(fname, 'PlayCallback') | ||||
|   call sound_playfile(fname, 'PlayCallback') | ||||
|   call WaitForAssert({-> assert_equal(4, g:playcallback_count)}) | ||||
|  | ||||
|   " recursive use was causing a crash | ||||
|   func PlayAgain(id, fname) | ||||
| @@ -62,4 +74,25 @@ func Test_play_silent() | ||||
|   call WaitForAssert({-> assert_true(g:id > 0)}) | ||||
| endfunc | ||||
|  | ||||
| func Test_play_event_error() | ||||
|   " Do not run test on Windows as: | ||||
|   " - playing event with callback is not supported on Windows. | ||||
|   " - FIXME: even without callback, sound_playevent('') does not return 0 on Windows. Bug? | ||||
|   CheckNotMSWindows | ||||
|  | ||||
|   call assert_equal(0, sound_playevent('')) | ||||
|   call assert_equal(0, sound_playevent(test_null_string())) | ||||
|   call assert_equal(0, sound_playevent('doesnotexist')) | ||||
|   call assert_equal(0, sound_playevent('doesnotexist', 'doesnotexist')) | ||||
|   call assert_equal(0, sound_playevent(test_null_string(), test_null_string())) | ||||
|   call assert_equal(0, sound_playevent(test_null_string(), test_null_function())) | ||||
|  | ||||
|   call assert_equal(0, sound_playfile('')) | ||||
|   call assert_equal(0, sound_playfile(test_null_string())) | ||||
|   call assert_equal(0, sound_playfile('doesnotexist')) | ||||
|   call assert_equal(0, sound_playfile('doesnotexist', 'doesnotexist')) | ||||
|   call assert_equal(0, sound_playfile(test_null_string(), test_null_string())) | ||||
|   call assert_equal(0, sound_playfile(test_null_string(), test_null_function())) | ||||
| endfunc | ||||
|  | ||||
| " vim: shiftwidth=2 sts=2 expandtab | ||||
|   | ||||
| @@ -750,6 +750,8 @@ static char *(features[]) = | ||||
|  | ||||
| static int included_patches[] = | ||||
| {   /* Add new patch number below this line */ | ||||
| /**/ | ||||
|     2950, | ||||
| /**/ | ||||
|     2949, | ||||
| /**/ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user