1" Test commands that are not compiled in a :def function
2
3source check.vim
4source vim9.vim
5
6def Test_edit_wildcards()
7  let filename = 'Xtest'
8  edit `=filename`
9  assert_equal('Xtest', bufname())
10
11  let filenr = 123
12  edit Xtest`=filenr`
13  assert_equal('Xtest123', bufname())
14
15  filenr = 77
16  edit `=filename``=filenr`
17  assert_equal('Xtest77', bufname())
18
19  edit X`=filename`xx`=filenr`yy
20  assert_equal('XXtestxx77yy', bufname())
21enddef
22
23def Test_hardcopy_wildcards()
24  CheckUnix
25  CheckFeature postscript
26
27  let outfile = 'print'
28  hardcopy > X`=outfile`.ps
29  assert_true(filereadable('Xprint.ps'))
30
31  delete('Xprint.ps')
32enddef
33
34def Test_syn_include_wildcards()
35  writefile(['syn keyword Found found'], 'Xthemine.vim')
36  let save_rtp = &rtp
37  &rtp = '.'
38
39  let fname = 'mine'
40  syn include @Group Xthe`=fname`.vim
41  assert_match('Found.* contained found', execute('syn list Found'))
42
43  &rtp = save_rtp
44  delete('Xthemine.vim')
45enddef
46
47def Test_assign_list()
48  let l: list<string> = []
49  l[0] = 'value'
50  assert_equal('value', l[0])
51
52  l[1] = 'asdf'
53  assert_equal('value', l[0])
54  assert_equal('asdf', l[1])
55  assert_equal('asdf', l[-1])
56  assert_equal('value', l[-2])
57
58  let nrl: list<number> = []
59  for i in range(5)
60    nrl[i] = i
61  endfor
62  assert_equal([0, 1, 2, 3, 4], nrl)
63enddef
64
65def Test_assign_dict()
66  let d: dict<string> = {}
67  d['key'] = 'value'
68  assert_equal('value', d['key'])
69
70  d[123] = 'qwerty'
71  assert_equal('qwerty', d[123])
72  assert_equal('qwerty', d['123'])
73
74  let nrd: dict<number> = {}
75  for i in range(3)
76    nrd[i] = i
77  endfor
78  assert_equal({'0': 0, '1': 1, '2': 2}, nrd)
79enddef
80
81def Test_echo_linebreak()
82  let lines =<< trim END
83      vim9script
84      redir @a
85      echo 'one'
86            .. 'two'
87      redir END
88      assert_equal("\nonetwo", @a)
89  END
90  CheckScriptSuccess(lines)
91
92  lines =<< trim END
93      vim9script
94      redir @a
95      echo 11 +
96            77
97            - 22
98      redir END
99      assert_equal("\n66", @a)
100  END
101  CheckScriptSuccess(lines)
102enddef
103
104def Test_if_linebreak()
105  let lines =<< trim END
106      vim9script
107      if 1 &&
108            2
109            || 3
110        g:res = 42
111      endif
112      assert_equal(42, g:res)
113  END
114  CheckScriptSuccess(lines)
115  unlet g:res
116
117  lines =<< trim END
118      vim9script
119      if 1 &&
120            0
121        g:res = 0
122      elseif 0 ||
123              0
124              || 1
125        g:res = 12
126      endif
127      assert_equal(12, g:res)
128  END
129  CheckScriptSuccess(lines)
130  unlet g:res
131enddef
132
133def Test_while_linebreak()
134  let lines =<< trim END
135      vim9script
136      let nr = 0
137      while nr <
138              10 + 3
139            nr = nr
140                  + 4
141      endwhile
142      assert_equal(16, nr)
143  END
144  CheckScriptSuccess(lines)
145
146  lines =<< trim END
147      vim9script
148      let nr = 0
149      while nr
150            <
151              10
152              +
153              3
154            nr = nr
155                  +
156                  4
157      endwhile
158      assert_equal(16, nr)
159  END
160  CheckScriptSuccess(lines)
161enddef
162
163def Test_for_linebreak()
164  let lines =<< trim END
165      vim9script
166      let nr = 0
167      for x
168            in
169              [1, 2, 3, 4]
170          nr = nr + x
171      endfor
172      assert_equal(10, nr)
173  END
174  CheckScriptSuccess(lines)
175
176  lines =<< trim END
177      vim9script
178      let nr = 0
179      for x
180            in
181              [1, 2,
182                  3, 4
183                  ]
184          nr = nr
185                 +
186                  x
187      endfor
188      assert_equal(10, nr)
189  END
190  CheckScriptSuccess(lines)
191enddef
192
193
194" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
195