diff options
Diffstat (limited to 'tests/run/cpp_stl_multimap.pyx')
-rw-r--r-- | tests/run/cpp_stl_multimap.pyx | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/tests/run/cpp_stl_multimap.pyx b/tests/run/cpp_stl_multimap.pyx new file mode 100644 index 000000000..899130613 --- /dev/null +++ b/tests/run/cpp_stl_multimap.pyx @@ -0,0 +1,159 @@ +# mode: run +# tag: cpp, cpp11 + +# cython: language_level=3 + +from libcpp.map cimport multimap +from libcpp.unordered_map cimport unordered_multimap +from libcpp.utility cimport pair + +def test_multimap_insert(vals): + """ + >>> test_multimap_insert([(1,1),(2,2),(2,2),(3,3),(-1,-1)]) + [(-1, -1), (1, 1), (2, 2), (2, 2), (3, 3)] + """ + cdef multimap[int,int] mm = multimap[int, int]() + cdef multimap[int, int].iterator it + for v in vals: + it = mm.insert(v) + return [ (item.first, item.second) for item in mm ] + +def test_multimap_insert_it(vals): + """ + >>> test_multimap_insert_it([(1,1),(2,2),(2,2),(3,3),(-1,-1)]) + [(-1, -1), (1, 1), (2, 2), (2, 2), (3, 3)] + """ + cdef unordered_multimap[int,int] umm = unordered_multimap[int,int]() + cdef multimap[int,int] mm = multimap[int,int]() + for k, v in vals: + umm.insert(pair[int,int](k, v)) + mm.insert(umm.begin(), umm.end()) + return [ (item.first, item.second) for item in mm ] + +def test_const_multimap_insert_it(vals): + """ + >>> test_const_multimap_insert_it([(1,1),(2,2),(2,2),(3,3),(-1,-1)]) + [(-1, -1), (1, 1), (2, 2), (2, 2), (3, 3)] + """ + cdef unordered_multimap[int,int] umm = unordered_multimap[int,int]() + cdef multimap[int,int] mm = multimap[int,int]() + for k, v in vals: + umm.insert(pair[int,int](k, v)) + mm.insert(umm.cbegin(), umm.cend()) + return [ (item.first, item.second) for item in mm ] + +def test_multimap_count(vals, to_find): + """ + >>> test_multimap_count([(1,1),(2,2),(2,2),(3,3),(-1,-1)], 1) + 1 + >>> test_multimap_count([(1,1),(2,2),(2,2),(3,3),(-1,-1)], 2) + 2 + """ + cdef multimap[int,int] mm = multimap[int,int]() + for v in vals: + mm.insert(v) + return mm.count(to_find) + +def test_multimap_erase(vals, int to_remove): + """ + >>> test_multimap_erase([(1,1),(2,2),(2,2),(3,3),(-1,-1)], 1) + [(-1, -1), (2, 2), (2, 2), (3, 3)] + >>> test_multimap_erase([(1,1),(2,2),(2,2),(3,3),(-1,-1)], 2) + [(-1, -1), (1, 1), (3, 3)] + """ + cdef multimap[int,int] mm = multimap[int,int]() + for v in vals: + mm.insert(v) + cdef size_t ret = mm.erase(to_remove) + return [ (item.first, item.second) for item in mm ] + +def test_multimap_find_erase(vals, to_remove): + """ + >>> test_multimap_find_erase([(1,1),(2,2),(2,2),(3,3),(-1,-1)], 1) + [(-1, -1), (2, 2), (2, 2), (3, 3)] + >>> test_multimap_find_erase([(1,1),(2,2),(2,2),(3,3),(-1,-1)], 2) + [(-1, -1), (1, 1), (2, 2), (3, 3)] + """ + cdef multimap[int,int] mm = multimap[int,int]() + cdef multimap[int,int].iterator it + for v in vals: + mm.insert(v) + it = mm.find(to_remove) + it = mm.erase(it) + return [ (item.first, item.second) for item in mm ] + + +def test_unordered_multimap_insert(vals): + """ + >>> test_unordered_multimap_insert([(1,1),(2,2),(2,2),(3,3),(-1,-1)]) + [(-1, -1), (1, 1), (2, 2), (2, 2), (3, 3)] + """ + cdef unordered_multimap[int,int] umm = unordered_multimap[int,int]() + cdef unordered_multimap[int,int].iterator it + for v in vals: + it = umm.insert(v) + return sorted([ (item.first, item.second) for item in umm ]) + +def test_unordered_multimap_insert_it(vals): + """ + >>> test_unordered_multimap_insert_it([(1,1),(2,2),(2,2),(3,3),(-1,-1)]) + [(-1, -1), (1, 1), (2, 2), (2, 2), (3, 3)] + """ + cdef multimap[int,int] mm = multimap[int,int]() + cdef unordered_multimap[int,int] umm = unordered_multimap[int,int]() + for v in vals: + mm.insert(v) + umm.insert(mm.begin(), mm.end()) + return sorted([ (item.first, item.second) for item in umm ]) + +def test_const_unordered_multimap_insert_it(vals): + """ + >>> test_const_unordered_multimap_insert_it([(1,1),(2,2),(2,2),(3,3),(-1,-1)]) + [(-1, -1), (1, 1), (2, 2), (2, 2), (3, 3)] + """ + cdef multimap[int,int] mm = multimap[int,int]() + cdef unordered_multimap[int,int] umm = unordered_multimap[int,int]() + for v in vals: + mm.insert(v) + umm.insert(mm.cbegin(), mm.cend()) + return sorted([ (item.first, item.second) for item in umm ]) + +def test_unordered_multimap_count(vals, to_find): + """ + >>> test_unordered_multimap_count([(1,1),(2,2),(2,2),(3,3),(-1,-1)], 1) + 1 + >>> test_unordered_multimap_count([(1,1),(2,2),(2,2),(3,3),(-1,-1)], 2) + 2 + """ + cdef unordered_multimap[int,int] umm = unordered_multimap[int,int]() + for v in vals: + umm.insert(v) + return umm.count(to_find) + +def test_unordered_multimap_erase(vals, int to_remove): + """ + >>> test_unordered_multimap_erase([(1,1),(2,2),(2,2),(3,3),(-1,-1)], 1) + [(-1, -1), (2, 2), (2, 2), (3, 3)] + >>> test_unordered_multimap_erase([(1,1),(2,2),(2,2),(3,3),(-1,-1)], 2) + [(-1, -1), (1, 1), (3, 3)] + """ + cdef unordered_multimap[int,int] umm = unordered_multimap[int,int]() + for v in vals: + umm.insert(v) + cdef size_t ret = umm.erase(to_remove) + return sorted([ (item.first, item.second) for item in umm ]) + +def test_unordered_multimap_find_erase(vals, to_remove): + """ + >>> test_unordered_multimap_find_erase([(1,1),(2,2),(2,2),(3,3),(-1,-1)], 1) + [(-1, -1), (2, 2), (2, 2), (3, 3)] + >>> test_unordered_multimap_find_erase([(1,1),(2,2),(2,2),(3,3),(-1,-1)], 2) + [(-1, -1), (1, 1), (2, 2), (3, 3)] + """ + cdef unordered_multimap[int,int] umm = unordered_multimap[int,int]() + cdef unordered_multimap[int,int].iterator it + for v in vals: + umm.insert(v) + it = umm.find(to_remove) + it = umm.erase(it) + return sorted([ item for item in umm ]) |