blob: 395ba96c47c3d05050713760686bfc05c666c0b1 [file] [log] [blame]
Bram Moolenaardb913952012-06-29 12:54:53 +02001Tests for various python features. vim: set ft=vim :
2
3STARTTEST
4:so small.vim
5:if !has('python') | e! test.ok | wq! test.out | endif
6:py import vim
7:fun Test()
8:let l = []
9:py l=vim.bindeval('l')
10:py f=vim.bindeval('function("strlen")')
11:" Extending List directly with different types
12:py l.extend([1, "as'd", [1, 2, f, {'a': 1}]])
13:$put =string(l)
14:$put =string(l[-1])
15:try
16: $put =string(l[-4])
17:catch
18: $put =v:exception[:13]
19:endtry
20:" List assignment
21:py l[0]=0
22:$put =string(l)
23:py l[-2]=f
24:$put =string(l)
25:"
26:" Extending Dictionary directly with different types
27:let d = {}
28:py d=vim.bindeval('d')
29:py d['1']='asd'
30:py d['b']=[1, 2, f]
31:py d['-1']={'a': 1}
32:let dkeys = []
33:py dk=vim.bindeval('dkeys')
34:py dkeys=d.keys()
35:py dkeys.sort()
36:py dk.extend(dkeys)
37:$put =string(dkeys)
38:for [key, val] in sort(items(d))
39: $put =string(key) . ' : ' . string(val)
40: unlet key val
41:endfor
42:"
43:" removing items with del
44:py del l[2]
45:$put =string(l)
46:let l = range(8)
47:py l=vim.bindeval('l')
48:try
49: py del l[:3]
50: py del l[1:]
51:catch
52: $put =v:exception
53:endtry
54:$put =string(l)
55:"
56:py del d['-1']
57:$put =string(d)
58:"
59:" removing items out of range: silently skip items that don't exist
60:let l = [0, 1, 2, 3]
61:py l=vim.bindeval('l')
62:" The following two ranges delete nothing as they match empty list:
63:py del l[2:1]
64:$put =string(l)
65:py del l[2:2]
66:$put =string(l)
67:py del l[2:3]
68:$put =string(l)
69:let l = [0, 1, 2, 3]
70:py l=vim.bindeval('l')
71:py del l[2:4]
72:$put =string(l)
73:let l = [0, 1, 2, 3]
74:py l=vim.bindeval('l')
75:py del l[2:5]
76:$put =string(l)
77:let l = [0, 1, 2, 3]
78:py l=vim.bindeval('l')
79:py del l[2:6]
80:$put =string(l)
81:let l = [0, 1, 2, 3]
82:py l=vim.bindeval('l')
83:" The following two ranges delete nothing as they match empty list:
84:py del l[-1:2]
85:$put =string(l)
86:py del l[-2:2]
87:$put =string(l)
88:py del l[-3:2]
89:$put =string(l)
90:let l = [0, 1, 2, 3]
91:py l=vim.bindeval('l')
92:py del l[-4:2]
93:$put =string(l)
94:let l = [0, 1, 2, 3]
95:py l=vim.bindeval('l')
96:py del l[-5:2]
97:$put =string(l)
98:let l = [0, 1, 2, 3]
99:py l=vim.bindeval('l')
100:py del l[-6:2]
101:$put =string(l)
102:"
103:" Slice assignment to a list
104:let l = [0, 1, 2, 3]
105:py l=vim.bindeval('l')
106:py l[0:0]=['a']
107:$put =string(l)
108:let l = [0, 1, 2, 3]
109:py l=vim.bindeval('l')
110:py l[1:2]=['b']
111:$put =string(l)
112:let l = [0, 1, 2, 3]
113:py l=vim.bindeval('l')
114:py l[2:4]=['c']
115:$put =string(l)
116:let l = [0, 1, 2, 3]
117:py l=vim.bindeval('l')
118:py l[4:4]=['d']
119:$put =string(l)
120:let l = [0, 1, 2, 3]
121:py l=vim.bindeval('l')
122:py l[-1:2]=['e']
123:$put =string(l)
124:let l = [0, 1, 2, 3]
125:py l=vim.bindeval('l')
126:py l[-10:2]=['f']
127:$put =string(l)
128:let l = [0, 1, 2, 3]
129:py l=vim.bindeval('l')
130:py l[2:-10]=['g']
131:$put =string(l)
132:let l = []
133:py l=vim.bindeval('l')
134:py l[0:0]=['h']
135:$put =string(l)
136:"
137:" Locked variables
138:let l = [0, 1, 2, 3]
139:py l=vim.bindeval('l')
140:lockvar! l
141:py l[2]='i'
142:$put =string(l)
143:unlockvar! l
144:"
145:" Function calls
146:function New(...)
147:return ['NewStart']+a:000+['NewEnd']
148:endfunction
149:function DictNew(...) dict
150:return ['DictNewStart']+a:000+['DictNewEnd', self]
151:endfunction
152:let l=[function('New'), function('DictNew')]
153:py l=vim.bindeval('l')
154:py l.extend(list(l[0](1, 2, 3)))
155:$put =string(l)
156:py l.extend(list(l[1](1, 2, 3, self={'a': 'b'})))
157:$put =string(l)
158:py l.extend([l[0].name])
159:$put =string(l)
160:try
161: py l[1](1, 2, 3)
162:catch
163: $put =v:exception[:16]
164:endtry
165:delfunction New
166:try
167: py l[0](1, 2, 3)
168:catch
169: $put =v:exception[:16]
170:endtry
171:if has('float')
172: let l=[0.0]
173: py l=vim.bindeval('l')
174: py l.extend([0.0])
175: $put =string(l)
176:else
177: $put ='[0.0, 0.0]'
178:endif
179:"
180:" pyeval()
181:let l=pyeval('range(3)')
182:$put =string(l)
183:let d=pyeval('{"a": "b", "c": 1, "d": ["e"]}')
184:$put =sort(items(d))
185:try
186: let undef=pyeval('undefined_name')
187:catch
188: $put =v:exception[:13]
189:endtry
190:try
191: let vim=pyeval('vim')
192:catch
193: $put =v:exception[:13]
194:endtry
195:if has('float')
196: let f=pyeval('0.0')
197: $put =string(f)
198:else
199: $put ='0.0'
200:endif
201:endfun
202:"
203:call Test()
204:"
205:delfunc Test
206:call garbagecollect(1)
207:"
208:/^start:/,$wq! test.out
209ENDTEST
210
211start: