Python std::unordered_map std::unordered_multimap improvements

- Fixes for -builtin
- Fix missing iterator support
This commit is contained in:
William S Fulton 2018-09-23 08:55:01 +01:00
commit 72ccea5080
3 changed files with 60 additions and 16 deletions

View file

@ -6,12 +6,18 @@ def swig_assert_equal(a, b):
for x in [cpp11_hash_tables.MapIntInt({1:7}),
cpp11_hash_tables.MultiMapIntInt({1:7}),
# TODO: fix for -builtin
# cpp11_hash_tables.UnorderedMapIntInt({1:7}),
# cpp11_hash_tables.UnorderedMultiMapIntInt({1:7})
cpp11_hash_tables.UnorderedMapIntInt({1:7}),
cpp11_hash_tables.UnorderedMultiMapIntInt({1:7})
]:
swig_assert_equal([(k, v) for k, v in x.iteritems()], [(1, 7)])
swig_assert_equal(x.keys(), [1])
swig_assert_equal(x.values(), [7])
swig_assert_equal(x.items(), [(1, 7)])
swig_assert_equal([k for k in x], [1])
swig_assert_equal([i for i in x.iterkeys()], [1])
swig_assert_equal([i for i in x.itervalues()], [7])
swig_assert_equal([i for i in x.iteritems()], [(1, 7)])
swig_assert_equal(x[1], 7)
swig_assert_equal(2 in x, False)
@ -27,10 +33,7 @@ for x in [cpp11_hash_tables.MapIntInt({1:7}),
for x in [cpp11_hash_tables.MultiMapIntInt({1:7}),
cpp11_hash_tables.UnorderedMultiMapIntInt({1:7})]:
x[1] = 9
# TODO: fix for -builtin
# swig_assert_equal(sorted([v for k, v in x.iteritems()]), [7, 9])
# Is this broken?...
# swig_assert_equal(sorted([v for v in x[1]]), [7, 9])
swig_assert_equal(sorted([v for k, v in x.iteritems()]), [7, 9])
for x in [cpp11_hash_tables.SetInt([1]),
cpp11_hash_tables.MultiSetInt([1]),

View file

@ -50,3 +50,20 @@ mii[1] = 2
if mii[1] != 2:
raise RuntimeError
if mii.keys() != [1]:
raise RuntimeError("keys")
if mii.values() != [2]:
raise RuntimeError("values")
if mii.items() != [(1, 2)]:
raise RuntimeError("items")
if [k for k in mii] != [1]:
raise RuntimeError("iteration")
if [i for i in mii.iterkeys()] != [1]:
raise RuntimeError("iterkeys")
if [i for i in mii.itervalues()] != [2]:
raise RuntimeError("itervalues")
if [i for i in mii.iteritems()] != [(1, 2)]:
raise RuntimeError("iteritems")