1f29c1c6aSBram Moolenaar" Tests for expand()
2f29c1c6aSBram Moolenaar
390944302SBram Moolenaarsource shared.vim
490944302SBram Moolenaar
5f29c1c6aSBram Moolenaarlet s:sfile = expand('<sfile>')
6f29c1c6aSBram Moolenaarlet s:slnum = str2nr(expand('<slnum>'))
7f29c1c6aSBram Moolenaarlet s:sflnum = str2nr(expand('<sflnum>'))
8f29c1c6aSBram Moolenaar
9f29c1c6aSBram Moolenaarfunc s:expand_sfile()
10f29c1c6aSBram Moolenaar  return expand('<sfile>')
11f29c1c6aSBram Moolenaarendfunc
12f29c1c6aSBram Moolenaar
13f29c1c6aSBram Moolenaarfunc s:expand_slnum()
14f29c1c6aSBram Moolenaar  return str2nr(expand('<slnum>'))
15f29c1c6aSBram Moolenaarendfunc
16f29c1c6aSBram Moolenaar
17f29c1c6aSBram Moolenaarfunc s:expand_sflnum()
18f29c1c6aSBram Moolenaar  return str2nr(expand('<sflnum>'))
19f29c1c6aSBram Moolenaarendfunc
20f29c1c6aSBram Moolenaar
21a5d0423fSBram Moolenaar" This test depends on the location in the test file, put it first.
22a5d0423fSBram Moolenaarfunc Test_expand_sflnum()
2390944302SBram Moolenaar  call assert_equal(7, s:sflnum)
2490944302SBram Moolenaar  call assert_equal(24, str2nr(expand('<sflnum>')))
25a5d0423fSBram Moolenaar
26a5d0423fSBram Moolenaar  " Line-continuation
27a5d0423fSBram Moolenaar  call assert_equal(
2890944302SBram Moolenaar        \ 27,
29a5d0423fSBram Moolenaar        \ str2nr(expand('<sflnum>')))
30f29c1c6aSBram Moolenaar
31f29c1c6aSBram Moolenaar  " Call in script-local function
3290944302SBram Moolenaar  call assert_equal(18, s:expand_sflnum())
33a5d0423fSBram Moolenaar
34a5d0423fSBram Moolenaar  " Call in command
35a5d0423fSBram Moolenaar  command Flnum echo expand('<sflnum>')
3690944302SBram Moolenaar  call assert_equal(36, str2nr(trim(execute('Flnum'))))
37a5d0423fSBram Moolenaar  delcommand Flnum
38a5d0423fSBram Moolenaarendfunc
39a5d0423fSBram Moolenaar
40a5d0423fSBram Moolenaarfunc Test_expand_sfile_and_stack()
41a5d0423fSBram Moolenaar  call assert_match('test_expand_func\.vim$', s:sfile)
424f25b1abSBram Moolenaar  let expected = 'script .*testdir/runtest.vim\[\d\+\]\.\.function RunTheTest\[\d\+\]\.\.Test_expand_sfile_and_stack'
434f25b1abSBram Moolenaar  call assert_match(expected .. '$', expand('<sfile>'))
444f25b1abSBram Moolenaar  call assert_match(expected .. '\[4\]' , expand('<stack>'))
45a5d0423fSBram Moolenaar
46a5d0423fSBram Moolenaar  " Call in script-local function
47a5d0423fSBram Moolenaar  call assert_match('script .*testdir/runtest.vim\[\d\+\]\.\.function RunTheTest\[\d\+\]\.\.Test_expand_sfile_and_stack\[7\]\.\.<SNR>\d\+_expand_sfile$', s:expand_sfile())
48f29c1c6aSBram Moolenaar
49f29c1c6aSBram Moolenaar  " Call in command
50f29c1c6aSBram Moolenaar  command Sfile echo expand('<sfile>')
51a5d0423fSBram Moolenaar  call assert_match('script .*testdir/runtest.vim\[\d\+\]\.\.function RunTheTest\[\d\+\]\.\.Test_expand_sfile_and_stack$', trim(execute('Sfile')))
52f29c1c6aSBram Moolenaar  delcommand Sfile
53a5d0423fSBram Moolenaar
54a5d0423fSBram Moolenaar  " Use <stack> from sourced script.
55a5d0423fSBram Moolenaar  let lines =<< trim END
564f25b1abSBram Moolenaar    " comment here
57a5d0423fSBram Moolenaar    let g:stack_value = expand('<stack>')
58a5d0423fSBram Moolenaar  END
59a5d0423fSBram Moolenaar  call writefile(lines, 'Xstack')
60a5d0423fSBram Moolenaar  source Xstack
61*a810db3fSBram Moolenaar  call assert_match('\<Xstack\[2\]$', g:stack_value)
62a5d0423fSBram Moolenaar  call delete('Xstack')
63f29c1c6aSBram Moolenaarendfunc
64f29c1c6aSBram Moolenaar
65f29c1c6aSBram Moolenaarfunc Test_expand_slnum()
6690944302SBram Moolenaar  call assert_equal(6, s:slnum)
67f29c1c6aSBram Moolenaar  call assert_equal(2, str2nr(expand('<slnum>')))
68f29c1c6aSBram Moolenaar
69f29c1c6aSBram Moolenaar  " Line-continuation
70f29c1c6aSBram Moolenaar  call assert_equal(
71f29c1c6aSBram Moolenaar        \ 5,
72f29c1c6aSBram Moolenaar        \ str2nr(expand('<slnum>')))
73f29c1c6aSBram Moolenaar
74f29c1c6aSBram Moolenaar  " Call in script-local function
75f29c1c6aSBram Moolenaar  call assert_equal(1, s:expand_slnum())
76f29c1c6aSBram Moolenaar
77f29c1c6aSBram Moolenaar  " Call in command
78f29c1c6aSBram Moolenaar  command Slnum echo expand('<slnum>')
79f29c1c6aSBram Moolenaar  call assert_equal(14, str2nr(trim(execute('Slnum'))))
80f29c1c6aSBram Moolenaar  delcommand Slnum
81f29c1c6aSBram Moolenaarendfunc
82f29c1c6aSBram Moolenaar
8317aca707SBram Moolenaarfunc Test_expand()
8417aca707SBram Moolenaar  new
8517aca707SBram Moolenaar  call assert_equal("",  expand('%:S'))
86a4208966SBram Moolenaar  call assert_equal('3', '<slnum>'->expand())
8717aca707SBram Moolenaar  call assert_equal(['4'], expand('<slnum>', v:false, v:true))
8817aca707SBram Moolenaar  " Don't add any line above this, otherwise <slnum> will change.
8917aca707SBram Moolenaar  quit
9017aca707SBram Moolenaarendfunc
91bd7206e0SBram Moolenaar
9290944302SBram Moolenaarfunc s:sid_test()
9390944302SBram Moolenaar  return 'works'
9490944302SBram Moolenaarendfunc
9590944302SBram Moolenaar
9690944302SBram Moolenaarfunc Test_expand_SID()
9790944302SBram Moolenaar  let sid = expand('<SID>')
9890944302SBram Moolenaar  execute 'let g:sid_result = ' .. sid .. 'sid_test()'
9990944302SBram Moolenaar  call assert_equal('works', g:sid_result)
10090944302SBram Moolenaarendfunc
10190944302SBram Moolenaar
10290944302SBram Moolenaar
103bd7206e0SBram Moolenaar" Test for 'wildignore' with expand()
104bd7206e0SBram Moolenaarfunc Test_expand_wildignore()
105bd7206e0SBram Moolenaar  set wildignore=*.vim
106bd7206e0SBram Moolenaar  call assert_equal('', expand('test_expand_func.vim'))
107bd7206e0SBram Moolenaar  call assert_equal('', expand('test_expand_func.vim', 0))
108bd7206e0SBram Moolenaar  call assert_equal([], expand('test_expand_func.vim', 0, 1))
109bd7206e0SBram Moolenaar  call assert_equal('test_expand_func.vim', expand('test_expand_func.vim', 1))
110bd7206e0SBram Moolenaar  call assert_equal(['test_expand_func.vim'],
111bd7206e0SBram Moolenaar        \ expand('test_expand_func.vim', 1, 1))
1120e05de46SBram Moolenaar  call assert_fails("call expand('*', [])", 'E745:')
113bd7206e0SBram Moolenaar  set wildignore&
114bd7206e0SBram Moolenaarendfunc
115bd7206e0SBram Moolenaar
116bd7206e0SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
117