Mercurial > vim
view src/testdir/test_sound.vim @ 34596:5a8340e044f4 v9.1.0190
patch 9.1.0190: complete_info() returns wrong order of items
Commit: https://github.com/vim/vim/commit/8950bf7f8b85c1287d4e696965d88091fcc60594
Author: Girish Palya <girishji@gmail.com>
Date: Wed Mar 20 20:07:29 2024 +0100
patch 9.1.0190: complete_info() returns wrong order of items
Problem: complete_info() returns wrong order of items
(after v9.0.2018)
Solution: Revert Patch v9.0.2018
(Girish Palya)
bug fix: complete_info() gives wrong results
1) complete_info() reverses list of items during <c-p>
2) 'selected' item index is wrong during <c-p>
3) number of items returnd can be wrong
Solution:
- Decouple 'cp_number' from 'selected' index since they need not be
correlated
- Do not iterate the list backwards
- Add targeted tests
Regression introduced by https://github.com/vim/vim/commit/69fb5afb3bc9da24c2fb0eafb0027ba9c6502fc2
Following are unnecessary commits to patch problems from above:
https://github.com/vim/vim/commit/fef66301665027f1801a18d796f74584666f41ef
https://github.com/vim/vim/commit/daef8c74375141974d61b85199b383017644978c
All the tests from above commits are retained though.
fixes: #14204
closes: #14241
Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 20 Mar 2024 20:15:03 +0100 |
parents | 835fc06c4547 |
children | 9ecae383d568 |
line wrap: on
line source
" Tests for the sound feature source check.vim source shared.vim CheckFeature sound func PlayCallback(id, result) let g:playcallback_count += 1 let g:id = a:id let g:result = a:result endfunc 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 event_name = 'bell' if has('osx') let event_name = 'Tink' endif let id = event_name->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) if id1 == 0 throw 'Skipped: playing a sound is not working' endif " play until the end let id2 = fname->sound_playfile('PlayCallback') 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) sleep 20m 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) let g:id = a:id let g:id_again = sound_playfile(a:fname) endfunc let id3 = sound_playfile(fname, {id, res -> PlayAgain(id, fname)}) call assert_true(id3 > 0) sleep 50m call sound_clear() call WaitForAssert({-> assert_true(g:id > 0)}) endfunc func Test_play_event_error() " FIXME: sound_playevent() doesn't return 0 in case of error on Windows. if !has('win32') 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())) endif 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