comparison src/testdir/test86.in @ 4627:18ba89e06fab v7.3.1061

updated for version 7.3.1061 Problem: Python: Dictionary is not standard. Solution: Python patch 20: Add standard methods and fields. (ZyX)
author Bram Moolenaar <bram@vim.org>
date Thu, 30 May 2013 13:01:18 +0200
parents 90beab957ba9
children e4e48d4ee040
comparison
equal deleted inserted replaced
4626:329c896801ce 4627:18ba89e06fab
29 :py l[-2]=f 29 :py l[-2]=f
30 :$put =string(l) 30 :$put =string(l)
31 :" 31 :"
32 :" Extending Dictionary directly with different types 32 :" Extending Dictionary directly with different types
33 :let d = {} 33 :let d = {}
34 :py d=vim.bindeval('d') 34 py << EOF
35 :py d['1']='asd' 35 d=vim.bindeval('d')
36 :py d['b']=[1, 2, f] 36 d['1']='asd'
37 :py d['-1']={'a': 1} 37 d.update(b=[1, 2, f])
38 :let dkeys = [] 38 d.update((('-1', {'a': 1}),))
39 :py dk=vim.bindeval('dkeys') 39 d.update({'0': -1})
40 :py dkeys=d.keys() 40 dk = d.keys()
41 :py dkeys.sort() 41 dv = d.values()
42 :py dk.extend(dkeys) 42 di = d.items()
43 :$put =string(dkeys) 43 dk.sort(key=repr)
44 dv.sort(key=repr)
45 di.sort(key=repr)
46 EOF
47 :$put =pyeval('repr(dk)')
48 :$put =substitute(pyeval('repr(dv)'),'0x\x\+','','g')
49 :$put =substitute(pyeval('repr(di)'),'0x\x\+','','g')
44 :for [key, val] in sort(items(d)) 50 :for [key, val] in sort(items(d))
45 : $put =string(key) . ' : ' . string(val) 51 : $put =string(key) . ' : ' . string(val)
46 : unlet key val 52 : unlet key val
47 :endfor 53 :endfor
48 :" 54 :"
58 : $put =v:exception 64 : $put =v:exception
59 :endtry 65 :endtry
60 :$put =string(l) 66 :$put =string(l)
61 :" 67 :"
62 :py del d['-1'] 68 :py del d['-1']
69 :$put =string(pyeval('d.get(''b'', 1)'))
70 :$put =string(pyeval('d.pop(''b'')'))
71 :$put =string(pyeval('d.get(''b'', 1)'))
72 :$put =string(pyeval('d.pop(''1'', 2)'))
73 :$put =string(pyeval('d.pop(''1'', 2)'))
74 :$put =pyeval('repr(d.has_key(''0''))')
75 :$put =pyeval('repr(d.has_key(''1''))')
76 :$put =pyeval('repr(''0'' in d)')
77 :$put =pyeval('repr(''1'' in d)')
78 :$put =pyeval('repr(list(iter(d)))')
63 :$put =string(d) 79 :$put =string(d)
80 :$put =pyeval('repr(d.popitem(''0''))')
81 :$put =pyeval('repr(d.get(''0''))')
82 :$put =pyeval('repr(list(iter(d)))')
64 :" 83 :"
65 :" removing items out of range: silently skip items that don't exist 84 :" removing items out of range: silently skip items that don't exist
66 :let l = [0, 1, 2, 3] 85 :let l = [0, 1, 2, 3]
67 :py l=vim.bindeval('l') 86 :py l=vim.bindeval('l')
68 :" The following two ranges delete nothing as they match empty list: 87 :" The following two ranges delete nothing as they match empty list:
196 em('d["abc"]="\\0"') 215 em('d["abc"]="\\0"')
197 em('d["abc"]=vim') 216 em('d["abc"]=vim')
198 em('d[""]=1') 217 em('d[""]=1')
199 em('d["a\\0b"]=1') 218 em('d["a\\0b"]=1')
200 em('d[u"a\\0b"]=1') 219 em('d[u"a\\0b"]=1')
220
221 em('d.pop("abc")')
222 em('d.popitem("abc")')
201 EOF 223 EOF
202 :$put =messages 224 :$put =messages
203 :unlet messages 225 :unlet messages
204 :" locked and scope attributes 226 :" locked and scope attributes
205 :let d={} | let dl={} | lockvar dl 227 :let d={} | let dl={} | lockvar dl
707 cb.append(name + ':' + ','.join(dir(o))) 729 cb.append(name + ':' + ','.join(dir(o)))
708 del name 730 del name
709 del o 731 del o
710 EOF 732 EOF
711 :" 733 :"
734 :" Test vim.*.__new__
735 :$put =string(pyeval('vim.Dictionary({})'))
736 :$put =string(pyeval('vim.Dictionary(a=1)'))
737 :$put =string(pyeval('vim.Dictionary(((''a'', 1),))'))
712 :" 738 :"
713 :" Test stdout/stderr 739 :" Test stdout/stderr
714 :redir => messages 740 :redir => messages
715 :py sys.stdout.write('abc') ; sys.stdout.write('def') 741 :py sys.stdout.write('abc') ; sys.stdout.write('def')
716 :py sys.stderr.write('abc') ; sys.stderr.write('def') 742 :py sys.stderr.write('abc') ; sys.stderr.write('def')
717 :py sys.stdout.writelines(iter('abc')) 743 :py sys.stdout.writelines(iter('abc'))
718 :py sys.stderr.writelines(iter('abc')) 744 :py sys.stderr.writelines(iter('abc'))
719 :redir END 745 :redir END
720 :$put =string(substitute(messages, '\d\+', '', 'g')) 746 :$put =string(substitute(messages, '\d\+', '', 'g'))
747 :" Test subclassing
748 py << EOF
749 class DupDict(vim.Dictionary):
750 def __setitem__(self, key, value):
751 super(DupDict, self).__setitem__(key, value)
752 super(DupDict, self).__setitem__('dup_' + key, value)
753 dd = DupDict()
754 dd['a'] = 'b'
755 EOF
756 :$put =string(sort(keys(pyeval('dd'))))
721 :" 757 :"
722 :" Test exceptions 758 :" Test exceptions
723 :fun Exe(e) 759 :fun Exe(e)
724 : execute a:e 760 : execute a:e
725 :endfun 761 :endfun