Mercurial > vim
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 |