introduce protocol_map for Map$Entry (#659)

This commit is contained in:
Craig Macdonald 2023-09-10 12:50:47 +01:00 committed by GitHub
parent 7da449434e
commit c126762e36
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 0 deletions

View File

@ -377,6 +377,12 @@ def _map_getitem(self, k):
raise KeyError()
return rtr
def _map_entry_getitem(self, i):
if i == 0:
return self.getKey()
if i == 1:
return self.getValue()
raise IndexError()
def _iterator_next(self):
''' dunder method for java.util.Iterator'''
@ -404,6 +410,11 @@ protocol_map = {
'__contains__' : lambda self, item: self.containsKey(item),
'__iter__' : lambda self: self.keySet().iterator()
},
'java.util.Map$Entry' : {
'__getitem__' : _map_entry_getitem,
'__iter__' : lambda self: iter([self.getKey(), self.getValue()]),
'__len__' : lambda self: 2
},
'java.util.Iterator' : {
'__iter__' : lambda self: self,
'__next__' : _iterator_next,

View File

@ -41,6 +41,9 @@ class TestCollections(unittest.TestCase):
# __iter__
for k in hmap:
self.assertTrue(k in data)
# __map_entry__
for k,v in hmap.entrySet():
self.assertEqual(data[k], v)
# __contains__
self.assertFalse(0 in hmap)
# __delitem__