1" Test the :source! command
2
3func Test_source_utf8()
4  " check that sourcing a script with 0x80 as second byte works
5  new
6  call setline(1, [':%s/àx/--à1234--/g', ':%s/Àx/--À1234--/g'])
7  write! Xscript
8  bwipe!
9  new
10  call setline(1, [' àx ', ' Àx '])
11  source! Xscript | echo
12  call assert_equal(' --à1234-- ', getline(1))
13  call assert_equal(' --À1234-- ', getline(2))
14  bwipe!
15  call delete('Xscript')
16endfunc
17
18func Test_source_latin()
19  " check that sourcing a latin1 script with a 0xc0 byte works
20  new
21  call setline(1, ["call feedkeys('r')", "call feedkeys('\xc0', 'xt')"])
22  write! Xscript
23  bwipe!
24  new
25  call setline(1, ['xxx'])
26  source Xscript
27  call assert_equal("\u00c0xx", getline(1))
28  bwipe!
29  call delete('Xscript')
30endfunc
31
32" Test for sourcing a file with CTRL-V's at the end of the line
33func Test_source_ctrl_v()
34    call writefile(['map __1 afirst',
35		\ 'map __2 asecond',
36		\ 'map __3 athird',
37		\ 'map __4 afourth',
38		\ 'map __5 afifth',
39		\ "map __1 asd\<C-V>",
40		\ "map __2 asd\<C-V>\<C-V>",
41		\ "map __3 asd\<C-V>\<C-V>",
42		\ "map __4 asd\<C-V>\<C-V>\<C-V>",
43		\ "map __5 asd\<C-V>\<C-V>\<C-V>",
44		\ ], 'Xtestfile')
45  source Xtestfile
46  enew!
47  exe "normal __1\<Esc>\<Esc>__2\<Esc>__3\<Esc>\<Esc>__4\<Esc>__5\<Esc>"
48  exe "%s/\<C-J>/0/g"
49  call assert_equal(['sd',
50	      \ "map __2 asd\<Esc>secondsd\<Esc>sd0map __5 asd0fifth"],
51	      \ getline(1, 2))
52
53  enew!
54  call delete('Xtestfile')
55  unmap __1
56  unmap __2
57  unmap __3
58  unmap __4
59  unmap __5
60endfunc
61