updated for version 7.3.659
Problem:    Recent Python changes are not tested.
Solution:   Add tests for Python bindings. (ZyX)
diff --git a/src/testdir/test87.in b/src/testdir/test87.in
index 8e48605..312763c 100644
--- a/src/testdir/test87.in
+++ b/src/testdir/test87.in
@@ -176,28 +176,62 @@
 :else
 :   $put ='[0.0, 0.0]'
 :endif
+:let messages=[]
+:py3 <<EOF
+d=vim.bindeval('{}')
+m=vim.bindeval('messages')
+try:
+    d['abc']
+except Exception as e:
+    m.extend([e.__class__.__name__])
+
+try:
+    d['abc']="\0"
+except Exception as e:
+    m.extend([e.__class__.__name__])
+
+try:
+    d['abc']=vim
+except Exception as e:
+    m.extend([e.__class__.__name__])
+
+try:
+    d['']=1
+except Exception as e:
+    m.extend([e.__class__.__name__])
+
+try:
+    d['a\0b']=1
+except Exception as e:
+    m.extend([e.__class__.__name__])
+
+try:
+    d[b'a\0b']=1
+except Exception as e:
+    m.extend([e.__class__.__name__])
+EOF
+:$put =messages
 :"
 :" py3eval()
 :let l=py3eval('[0, 1, 2]')
 :$put =string(l)
 :let d=py3eval('{"a": "b", "c": 1, "d": ["e"]}')
 :$put =sort(items(d))
-:try
-:   let undef=py3eval('undefined_name')
-:catch
-:   $put =v:exception[:13]
-:endtry
-:try
-:   let vim=py3eval('vim')
-:catch
-:   $put =v:exception[:13]
-:endtry
 :if has('float')
 :   let f=py3eval('0.0')
 :   $put =string(f)
 :else
 :   $put ='0.0'
 :endif
+:" Invalid values:
+:for e in ['"\0"', '{"\0": 1}', 'undefined_name', 'vim']
+:   try
+:      let v=py3eval(e)
+:   catch
+:      let toput=e.":\t".v:exception[:13]
+:      $put =toput
+:   endtry
+:endfor
 :endfun
 :"
 :call Test()