Execute ( SpaceVim api: vim#buffer open ):
  let buffer = SpaceVim#api#import('vim#buffer')
  call buffer.open({'bufname':'foo', 'cmd' : 'setl buftype=nofile bufhidden=wipe'})
  AssertEqual bufname('%'), 'foo'
  AssertEqual &buftype, 'nofile'

Execute ( SpaceVim api: vim#buffer buf_set_lines):
  let buffer = SpaceVim#api#import('vim#buffer')
  let nr = buffer.bufadd('')
  call setbufvar(nr, '&buftype', 'nofile')
  call setbufvar(nr, '&buflisted', 0)
  Log 'The value of g:_spacevim_if_lua is ' . get(g:, '_spacevim_if_lua', 0)
  call buffer.buf_set_lines(nr, 0, 1, 0, ['line 1', 'line 2', 'line 3', 'line 4'])
  AssertEqual getbufline(nr, 1, '$'), ['line 1', 'line 2', 'line 3', 'line 4']
  call buffer.buf_set_lines(nr, 1, 3, 0, ['replace 1', 'replace 2', 'replace 3'])
  AssertEqual getbufline(nr, 1, '$'), ['line 1', 'replace 1', 'replace 2', 'replace 3', 'line 4']
  call buffer.buf_set_lines(nr, -3, -1, 0, ['replace 1', 'replace 2', 'replace 3'])
  AssertEqual getbufline(nr, 1, '$'), ['line 1', 'replace 1', 'replace 2', 'replace 1', 'replace 2', 'replace 3']
  call buffer.buf_set_lines(nr, 2, -2, 0, ['replace 1', 'replace 2', 'replace 3'])
  AssertEqual getbufline(nr, 1, '$'), ['line 1', 'replace 1', 'replace 1', 'replace 2', 'replace 3', 'replace 3']
  call buffer.buf_set_lines(nr, 0, -1, 0, ['xx 1'])
  AssertEqual getbufline(nr, 1, '$'), ['xx 1']
  exe 'bd!' nr
  unlet nr
  unlet buffer

Execute ( SpaceVim api: vim#buffer buf_get_lines):
  let buffer = SpaceVim#api#import('vim#buffer')
  let nr = buffer.bufadd('')
  call setbufvar(nr, '&buftype', 'nofile')
  call setbufvar(nr, '&buflisted', 0)
  call buffer.buf_set_lines(nr, 0, 1, 0, ['line 1', 'line 2', 'line 3', 'line 4'])
  if has('patch-8.1.1610')
    AssertEqual buffer.buf_get_lines(nr, 1, 2, 0), ['line 2']
  endif