From c126762e36c96a8ec7d1764c0ceb94127f829445 Mon Sep 17 00:00:00 2001 From: Craig Macdonald Date: Sun, 10 Sep 2023 12:50:47 +0100 Subject: [PATCH] introduce protocol_map for Map$Entry (#659) --- jnius/reflect.py | 11 +++++++++++ tests/test_collections.py | 3 +++ 2 files changed, 14 insertions(+) diff --git a/jnius/reflect.py b/jnius/reflect.py index 6b517a8..fa7e83b 100644 --- a/jnius/reflect.py +++ b/jnius/reflect.py @@ -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, diff --git a/tests/test_collections.py b/tests/test_collections.py index 47363bc..75b3836 100644 --- a/tests/test_collections.py +++ b/tests/test_collections.py @@ -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__