1*42093c0eSBram Moolenaar" Tests for diff mode
2*42093c0eSBram Moolenaar
3*42093c0eSBram Moolenaarfunc Test_diff_fold_sync()
4*42093c0eSBram Moolenaar  enew!
5*42093c0eSBram Moolenaar  let l = range(50)
6*42093c0eSBram Moolenaar  call setline(1, l)
7*42093c0eSBram Moolenaar  diffthis
8*42093c0eSBram Moolenaar  let winone = win_getid()
9*42093c0eSBram Moolenaar  new
10*42093c0eSBram Moolenaar  let l[25] = 'diff'
11*42093c0eSBram Moolenaar  call setline(1, l)
12*42093c0eSBram Moolenaar  diffthis
13*42093c0eSBram Moolenaar  let wintwo = win_getid()
14*42093c0eSBram Moolenaar  " line 15 is inside the closed fold
15*42093c0eSBram Moolenaar  call assert_equal(19, foldclosedend(10))
16*42093c0eSBram Moolenaar  call win_gotoid(winone)
17*42093c0eSBram Moolenaar  call assert_equal(19, foldclosedend(10))
18*42093c0eSBram Moolenaar  " open the fold
19*42093c0eSBram Moolenaar  normal zv
20*42093c0eSBram Moolenaar  call assert_equal(-1, foldclosedend(10))
21*42093c0eSBram Moolenaar  " fold in other window must have opened too
22*42093c0eSBram Moolenaar  call win_gotoid(wintwo)
23*42093c0eSBram Moolenaar  call assert_equal(-1, foldclosedend(10))
24*42093c0eSBram Moolenaar
25*42093c0eSBram Moolenaar  " cursor position is in sync
26*42093c0eSBram Moolenaar  normal 23G
27*42093c0eSBram Moolenaar  call win_gotoid(winone)
28*42093c0eSBram Moolenaar  call assert_equal(23, getcurpos()[1])
29*42093c0eSBram Moolenaar
30*42093c0eSBram Moolenaar  windo diffoff
31*42093c0eSBram Moolenaar  close!
32*42093c0eSBram Moolenaar  set nomodified
33*42093c0eSBram Moolenaarendfunc
34*42093c0eSBram Moolenaar
35*42093c0eSBram Moolenaarfunc Test_vert_split()
36*42093c0eSBram Moolenaar  " Disable the title to avoid xterm keeping the wrong one.
37*42093c0eSBram Moolenaar  set notitle noicon
38*42093c0eSBram Moolenaar  new
39*42093c0eSBram Moolenaar  let l = ['1 aa', '2 bb', '3 cc', '4 dd', '5 ee']
40*42093c0eSBram Moolenaar  call setline(1, l)
41*42093c0eSBram Moolenaar  w! Xtest
42*42093c0eSBram Moolenaar  normal dd
43*42093c0eSBram Moolenaar  $
44*42093c0eSBram Moolenaar  put
45*42093c0eSBram Moolenaar  normal kkrXoxxx
46*42093c0eSBram Moolenaar  w! Xtest2
47*42093c0eSBram Moolenaar  file Nop
48*42093c0eSBram Moolenaar  normal ggoyyyjjjozzzz
49*42093c0eSBram Moolenaar  set foldmethod=marker foldcolumn=4
50*42093c0eSBram Moolenaar  call assert_equal(0, &diff)
51*42093c0eSBram Moolenaar  call assert_equal('marker', &foldmethod)
52*42093c0eSBram Moolenaar  call assert_equal(4, &foldcolumn)
53*42093c0eSBram Moolenaar  call assert_equal(0, &scrollbind)
54*42093c0eSBram Moolenaar  call assert_equal(0, &cursorbind)
55*42093c0eSBram Moolenaar  call assert_equal(1, &wrap)
56*42093c0eSBram Moolenaar
57*42093c0eSBram Moolenaar  vert diffsplit Xtest
58*42093c0eSBram Moolenaar  vert diffsplit Xtest2
59*42093c0eSBram Moolenaar  call assert_equal(1, &diff)
60*42093c0eSBram Moolenaar  call assert_equal('diff', &foldmethod)
61*42093c0eSBram Moolenaar  call assert_equal(2, &foldcolumn)
62*42093c0eSBram Moolenaar  call assert_equal(1, &scrollbind)
63*42093c0eSBram Moolenaar  call assert_equal(1, &cursorbind)
64*42093c0eSBram Moolenaar  call assert_equal(0, &wrap)
65*42093c0eSBram Moolenaar
66*42093c0eSBram Moolenaar  let diff_fdm = &fdm
67*42093c0eSBram Moolenaar  let diff_fdc = &fdc
68*42093c0eSBram Moolenaar  " repeat entering diff mode here to see if this saves the wrong settings
69*42093c0eSBram Moolenaar  diffthis
70*42093c0eSBram Moolenaar  " jump to second window for a moment to have filler line appear at start of
71*42093c0eSBram Moolenaar  " first window
72*42093c0eSBram Moolenaar  wincmd w
73*42093c0eSBram Moolenaar  normal gg
74*42093c0eSBram Moolenaar  wincmd p
75*42093c0eSBram Moolenaar  normal gg
76*42093c0eSBram Moolenaar  call assert_equal(2, winline())
77*42093c0eSBram Moolenaar  normal j
78*42093c0eSBram Moolenaar  call assert_equal(4, winline())
79*42093c0eSBram Moolenaar  normal j
80*42093c0eSBram Moolenaar  call assert_equal(5, winline())
81*42093c0eSBram Moolenaar  normal j
82*42093c0eSBram Moolenaar  call assert_equal(6, winline())
83*42093c0eSBram Moolenaar  normal j
84*42093c0eSBram Moolenaar  call assert_equal(8, winline())
85*42093c0eSBram Moolenaar  normal j
86*42093c0eSBram Moolenaar  call assert_equal(9, winline())
87*42093c0eSBram Moolenaar
88*42093c0eSBram Moolenaar  wincmd w
89*42093c0eSBram Moolenaar  normal gg
90*42093c0eSBram Moolenaar  call assert_equal(1, winline())
91*42093c0eSBram Moolenaar  normal j
92*42093c0eSBram Moolenaar  call assert_equal(2, winline())
93*42093c0eSBram Moolenaar  normal j
94*42093c0eSBram Moolenaar  call assert_equal(4, winline())
95*42093c0eSBram Moolenaar  normal j
96*42093c0eSBram Moolenaar  call assert_equal(5, winline())
97*42093c0eSBram Moolenaar  normal j
98*42093c0eSBram Moolenaar  call assert_equal(8, winline())
99*42093c0eSBram Moolenaar
100*42093c0eSBram Moolenaar  wincmd w
101*42093c0eSBram Moolenaar  normal gg
102*42093c0eSBram Moolenaar  call assert_equal(2, winline())
103*42093c0eSBram Moolenaar  normal j
104*42093c0eSBram Moolenaar  call assert_equal(3, winline())
105*42093c0eSBram Moolenaar  normal j
106*42093c0eSBram Moolenaar  call assert_equal(4, winline())
107*42093c0eSBram Moolenaar  normal j
108*42093c0eSBram Moolenaar  call assert_equal(5, winline())
109*42093c0eSBram Moolenaar  normal j
110*42093c0eSBram Moolenaar  call assert_equal(6, winline())
111*42093c0eSBram Moolenaar  normal j
112*42093c0eSBram Moolenaar  call assert_equal(7, winline())
113*42093c0eSBram Moolenaar  normal j
114*42093c0eSBram Moolenaar  call assert_equal(8, winline())
115*42093c0eSBram Moolenaar
116*42093c0eSBram Moolenaar  " Test diffoff
117*42093c0eSBram Moolenaar  diffoff!
118*42093c0eSBram Moolenaar  1wincmd 2
119*42093c0eSBram Moolenaar  let &diff = 1
120*42093c0eSBram Moolenaar  let &fdm = diff_fdm
121*42093c0eSBram Moolenaar  let &fdc = diff_fdc
122*42093c0eSBram Moolenaar  4wincmd w
123*42093c0eSBram Moolenaar  diffoff!
124*42093c0eSBram Moolenaar  1wincmd w
125*42093c0eSBram Moolenaar  call assert_equal(0, &diff)
126*42093c0eSBram Moolenaar  call assert_equal('marker', &foldmethod)
127*42093c0eSBram Moolenaar  call assert_equal(4, &foldcolumn)
128*42093c0eSBram Moolenaar  call assert_equal(0, &scrollbind)
129*42093c0eSBram Moolenaar  call assert_equal(0, &cursorbind)
130*42093c0eSBram Moolenaar  call assert_equal(1, &wrap)
131*42093c0eSBram Moolenaar
132*42093c0eSBram Moolenaar  wincmd w
133*42093c0eSBram Moolenaar  call assert_equal(0, &diff)
134*42093c0eSBram Moolenaar  call assert_equal('marker', &foldmethod)
135*42093c0eSBram Moolenaar  call assert_equal(4, &foldcolumn)
136*42093c0eSBram Moolenaar  call assert_equal(0, &scrollbind)
137*42093c0eSBram Moolenaar  call assert_equal(0, &cursorbind)
138*42093c0eSBram Moolenaar  call assert_equal(1, &wrap)
139*42093c0eSBram Moolenaar
140*42093c0eSBram Moolenaar  wincmd w
141*42093c0eSBram Moolenaar  call assert_equal(0, &diff)
142*42093c0eSBram Moolenaar  call assert_equal('marker', &foldmethod)
143*42093c0eSBram Moolenaar  call assert_equal(4, &foldcolumn)
144*42093c0eSBram Moolenaar  call assert_equal(0, &scrollbind)
145*42093c0eSBram Moolenaar  call assert_equal(0, &cursorbind)
146*42093c0eSBram Moolenaar  call assert_equal(1, &wrap)
147*42093c0eSBram Moolenaar
148*42093c0eSBram Moolenaar  windo bw!
149*42093c0eSBram Moolenaarendfunc
150*42093c0eSBram Moolenaar
151*42093c0eSBram Moolenaarfunc Test_filler_lines()
152*42093c0eSBram Moolenaar  " Test that diffing shows correct filler lines
153*42093c0eSBram Moolenaar  enew!
154*42093c0eSBram Moolenaar  put =range(4,10)
155*42093c0eSBram Moolenaar  1d _
156*42093c0eSBram Moolenaar  vnew
157*42093c0eSBram Moolenaar  put =range(1,10)
158*42093c0eSBram Moolenaar  1d _
159*42093c0eSBram Moolenaar  windo diffthis
160*42093c0eSBram Moolenaar  wincmd h
161*42093c0eSBram Moolenaar  call assert_equal(1, line('w0'))
162*42093c0eSBram Moolenaar  unlet! diff_fdm diff_fdc
163*42093c0eSBram Moolenaar
164*42093c0eSBram Moolenaar  windo bw!
165*42093c0eSBram Moolenaarendfunc
166