view src/testdir/test_smartindent.vim @ 19783:546bdeef35f1 v8.2.0448

patch 8.2.0448: various functions not properly tested Commit: https://github.com/vim/vim/commit/0e05de46226eb4e5ea580beefa71831f92d613d3 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Mar 25 22:23:46 2020 +0100 patch 8.2.0448: various functions not properly tested Problem: Various functions not properly tested. Solution: Add more tests, especially for failures. (Yegappan Lakshmanan, closes #5843)
author Bram Moolenaar <Bram@vim.org>
date Wed, 25 Mar 2020 22:30:04 +0100
parents 6d3c683466f4
children 12518b40c161
line wrap: on
line source

" Tests for smartindent

" Tests for not doing smart indenting when it isn't set.
func Test_nosmartindent()
  new
  call append(0, ["		some test text",
	\ "		test text",
	\ "test text",
	\ "		test text"])
  set nocindent nosmartindent autoindent
  exe "normal! gg/some\<CR>"
  exe "normal! 2cc#test\<Esc>"
  call assert_equal("		#test", getline(1))
  enew! | close
endfunc

func MyIndent()
endfunc

" When 'indentexpr' is set, setting 'si' has no effect.
func Test_smartindent_has_no_effect()
  new
  exe "normal! i\<Tab>one\<Esc>"
  set noautoindent
  set smartindent
  set indentexpr=
  exe "normal! Gotwo\<Esc>"
  call assert_equal("\ttwo", getline("$"))

  set indentexpr=MyIndent
  exe "normal! Gothree\<Esc>"
  call assert_equal("three", getline("$"))

  delfunction! MyIndent
  set autoindent&
  set smartindent&
  set indentexpr&
  bwipe!
endfunc

" Test for inserting '{' and '} with smartindent
func Test_smartindent_braces()
  new
  set smartindent shiftwidth=4
  call setline(1, ['    if (a)', "\tif (b)", "\t    return 1"])
  normal 2ggO{
  normal 3ggA {
  normal 4ggo}
  normal o}
  normal 4ggO#define FOO 1
  call assert_equal([
        \ '    if (a)',
        \ '    {',
        \ "\tif (b) {",
        \ '#define FOO 1',
        \ "\t    return 1",
        \ "\t}",
        \ '    }'
        \ ], getline(1, '$'))
  set si& sw& ai&
  close!
endfunc

" vim: shiftwidth=2 sts=2 expandtab