1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
" Tests for 'fixeol', 'eof' and 'eol'
func Test_fixeol()
" first write two test files – with and without trailing EOL
" use Unix fileformat for consistency
set ff=unix
enew!
call setline('.', 'with eol or eof')
w! XXEol
enew!
set noeof noeol nofixeol
call setline('.', 'without eol or eof')
w! XXNoEol
set eol eof fixeol
bwipe XXEol XXNoEol
" try editing files with 'fixeol' disabled
e! XXEol
normal ostays eol
set nofixeol
w! XXTestEol
e! XXNoEol
normal ostays without
set nofixeol
w! XXTestNoEol
bwipe! XXEol XXNoEol XXTestEol XXTestNoEol
set fixeol
" Append "END" to each file so that we can see what the last written char
" was.
normal ggdGaEND
w >>XXEol
w >>XXNoEol
w >>XXTestEol
w >>XXTestNoEol
call assert_equal(['with eol or eof', 'END'], readfile('XXEol'))
call assert_equal(['without eol or eofEND'], readfile('XXNoEol'))
call assert_equal(['with eol or eof', 'stays eol', 'END'], readfile('XXTestEol'))
call assert_equal(['without eol or eof', 'stays withoutEND'],
\ readfile('XXTestNoEol'))
call delete('XXEol')
call delete('XXNoEol')
call delete('XXTestEol')
call delete('XXTestNoEol')
set ff& fixeol& eof& eol&
enew!
endfunc
func Test_eof()
let data = 0z68656c6c6f.0d0a.776f726c64 " "hello\r\nworld"
" 1. Eol, Eof
" read
call writefile(data + 0z0d0a.1a, 'XXEolEof')
e! XXEolEof
call assert_equal(['hello', 'world'], getline(1, 2))
call assert_equal([1, 1], [&eol, &eof])
" write
set fixeol
w!
call assert_equal(data + 0z0d0a, readblob('XXEolEof'))
set nofixeol
w!
call assert_equal(data + 0z0d0a.1a, readblob('XXEolEof'))
" 2. NoEol, Eof
" read
call writefile(data + 0z1a, 'XXNoEolEof')
e! XXNoEolEof
call assert_equal(['hello', 'world'], getline(1, 2))
call assert_equal([0, 1], [&eol, &eof])
" write
set fixeol
w!
call assert_equal(data + 0z0d0a, readblob('XXNoEolEof'))
set nofixeol
w!
call assert_equal(data + 0z1a, readblob('XXNoEolEof'))
" 3. Eol, NoEof
" read
call writefile(data + 0z0d0a, 'XXEolNoEof')
e! XXEolNoEof
call assert_equal(['hello', 'world'], getline(1, 2))
call assert_equal([1, 0], [&eol, &eof])
" write
set fixeol
w!
call assert_equal(data + 0z0d0a, readblob('XXEolNoEof'))
set nofixeol
w!
call assert_equal(data + 0z0d0a, readblob('XXEolNoEof'))
" 4. NoEol, NoEof
" read
call writefile(data, 'XXNoEolNoEof')
e! XXNoEolNoEof
call assert_equal(['hello', 'world'], getline(1, 2))
call assert_equal([0, 0], [&eol, &eof])
" write
set fixeol
w!
call assert_equal(data + 0z0d0a, readblob('XXNoEolNoEof'))
set nofixeol
w!
call assert_equal(data, readblob('XXNoEolNoEof'))
call delete('XXEolEof')
call delete('XXNoEolEof')
call delete('XXEolNoEof')
call delete('XXNoEolNoEof')
set ff& fixeol& eof& eol&
enew!
endfunc
" vim: shiftwidth=2 sts=2 expandtab
|