diff src/testdir/test_textprop.vim @ 29788:d08aa1bfe319 v9.0.0233

patch 9.0.0233: removing multiple text properties takes many calls Commit: https://github.com/vim/vim/commit/a7704226a26b95b15bf87d3a3a5128e23e4aaa06 Author: Ben Jackson <puremourning@gmail.com> Date: Sat Aug 20 20:54:51 2022 +0100 patch 9.0.0233: removing multiple text properties takes many calls Problem: Removing multiple text properties takes many calls. Solution: Pass a list to prop_remove(). (Ben Jackson, closes https://github.com/vim/vim/issues/10945)
author Bram Moolenaar <Bram@vim.org>
date Sat, 20 Aug 2022 22:00:03 +0200
parents 7e2321707fea
children bbe62ea78aac
line wrap: on
line diff
--- a/src/testdir/test_textprop.vim
+++ b/src/testdir/test_textprop.vim
@@ -161,7 +161,7 @@ func Test_prop_find()
     \ ]
 
   " Starting at line 5 col 1 this should find the prop at line 5 col 4.
-  call cursor(5,1)
+  call cursor(5, 1)
   let result = prop_find({'type': 'prop_name'}, 'f')
   call assert_equal(expected[2], result)
 
@@ -182,7 +182,7 @@ func Test_prop_find()
   " with skipstart set to false, if the start position is anywhere between the
   " start and end lines of a text prop (searching forward or backward), the
   " result should be the prop on the first line (the line with 'start' set to 1).
-  call cursor(3,1)
+  call cursor(3, 1)
   let result = prop_find({'type': 'prop_name'}, 'f')
   unlet result.length
   call assert_equal(expected[1], result)
@@ -230,12 +230,12 @@ func Test_prop_find()
   endwhile
 
   " Starting from line 6 col 1 search backwards for prop with id 10.
-  call cursor(6,1)
+  call cursor(6, 1)
   let result = prop_find({'id': 10, 'skipstart': 1}, 'b')
   call assert_equal(expected[0], result)
 
   " Starting from line 1 col 1 search forwards for prop with id 12.
-  call cursor(1,1)
+  call cursor(1, 1)
   let result = prop_find({'id': 12}, 'f')
   call assert_equal(expected[2], result)
 
@@ -426,6 +426,37 @@ func Test_prop_remove()
 
   call DeletePropTypes()
   bwipe!
+
+  new
+  call AddPropTypes()
+  call SetupPropsInFirstLine()
+  let props = Get_expected_props() " [whole, one, two, three]
+  call assert_equal(props, prop_list(1))
+
+  " remove one by types
+  call assert_equal(1, prop_remove({'types': ['one', 'two', 'three']}, 1))
+  unlet props[1] " [whole, two, three]
+  call assert_equal(props, prop_list(1))
+
+  " remove 'all' by types
+  call assert_equal(2, prop_remove({'types': ['three', 'whole'], 'all': 1}, 1))
+  unlet props[0] " [two, three]
+  unlet props[1] " [three]
+  call assert_equal(props, prop_list(1))
+
+  " remove none by types
+  call assert_equal(0, prop_remove({'types': ['three', 'whole'], 'all': 1}, 1))
+  call assert_equal(props, prop_list(1))
+
+  " no types
+  call assert_fails("call prop_remove({'types': []}, 1)", 'E968:')
+  call assert_fails("call prop_remove({'types': ['not_a_real_type']}, 1)", 'E971:')
+
+  " only one of types and type can be supplied
+  call assert_fails("call prop_remove({'type': 'one', 'types': ['three'], 'all': 1}, 1)", 'E1295:')
+
+  call DeletePropTypes()
+  bwipe!
 endfunc
 
 def Test_prop_add_vim9()
@@ -1396,7 +1427,7 @@ endfunc
 func Test_textprop_invalid_highlight()
   call assert_fails("call prop_type_add('dni', {'highlight': 'DoesNotExist'})", 'E970:')
   new
-  call setline(1, ['asdf','asdf'])
+  call setline(1, ['asdf', 'asdf'])
   call prop_add(1, 1, {'length': 4, 'type': 'dni'})
   redraw
   bwipe!
@@ -2207,7 +2238,7 @@ func Test_prop_find_prev_on_same_line()
     call prop_add(1, col, #{type: 'misspell', length: 2})
   endfor
 
-  call cursor(1,18)
+  call cursor(1, 18)
   let expected = [
     \ #{lnum: 1, id: 0, col: 14, end: 1, type: 'misspell', type_bufnr: 0, length: 2, start: 1},
     \ #{lnum: 1, id: 0, col: 24, end: 1, type: 'misspell', type_bufnr: 0, length: 2, start: 1}
@@ -2310,7 +2341,7 @@ func Test_prop_insert_multiline()
   call assert_equal(lines, getline(1, '$'))
   let expected = [
       \ {'lnum': 1, 'id': 0, 'col': 4, 'type_bufnr': 0, 'end': 0, 'type': 'one',
-      \ 'length': 4 ,'start': 1},
+      \ 'length': 4 , 'start': 1},
       \ {'lnum': 2, 'id': 0, 'col': 1, 'type_bufnr': 0, 'end': 0, 'type': 'one',
       \ 'length': 7, 'start': 0},
       \ {'lnum': 3, 'id': 0, 'col': 1, 'type_bufnr': 0, 'end': 0, 'type': 'one',