4
# cython: language_level=3
6
from libcpp.set cimport multiset
7
from libcpp.unordered_set cimport unordered_multiset
9
def test_multiset_insert(vals):
11
>>> test_multiset_insert([1,2,2,3, -1])
14
cdef multiset[int] ms = multiset[int]()
15
cdef multiset[int].iterator it
18
return [ item for item in ms ]
20
def test_multiset_insert_it(vals):
22
>>> test_multiset_insert_it([1,2,2,3, -1])
25
cdef unordered_multiset[int] ums = unordered_multiset[int]()
26
cdef multiset[int] ms = multiset[int]()
29
ms.insert(ums.begin(), ums.end())
30
return [ item for item in ms ]
32
def test_const_multiset_insert_it(vals):
34
>>> test_const_multiset_insert_it([1,2,2,3, -1])
37
cdef unordered_multiset[int] ums = unordered_multiset[int]()
38
cdef multiset[int] ms = multiset[int]()
41
ms.insert(ums.cbegin(), ums.cend())
42
return [ item for item in ms ]
44
def test_multiset_count(vals, to_find):
46
>>> test_multiset_count([1,2,2,3, -1], 1)
48
>>> test_multiset_count([1,2,2,3, -1], 2)
51
cdef multiset[int] ms = multiset[int]()
54
return ms.count(to_find)
56
def test_multiset_erase(vals, int to_remove):
58
>>> test_multiset_erase([1,2,2,3, -1], 1)
60
>>> test_multiset_erase([1,2,2,3, -1], 2) # removes both copies of 2
63
cdef multiset[int] ms = multiset[int]()
67
ret = ms.erase(to_remove)
68
return [ item for item in ms ]
70
def test_multiset_find_erase(vals, to_remove):
72
>>> test_multiset_find_erase([1,2,2,3, -1], 1)
74
>>> test_multiset_find_erase([1,2,2,3, -1], 2) # removes a single copy of 2
77
cdef multiset[int] ms = multiset[int]()
78
cdef multiset[int].iterator it
81
it = ms.find(to_remove)
83
return [ item for item in ms ]
86
def test_unordered_multiset_insert(vals):
88
>>> test_unordered_multiset_insert([1,2,2,3, -1])
91
cdef unordered_multiset[int] ums = unordered_multiset[int]()
92
cdef unordered_multiset[int].iterator it
95
return sorted([ item for item in ums ])
97
def test_unordered_multiset_insert_it(vals):
99
>>> test_unordered_multiset_insert_it([1,2,2,3, -1])
102
cdef multiset[int] ms = multiset[int]()
103
cdef unordered_multiset[int] ums = unordered_multiset[int]()
106
ums.insert(ms.begin(), ms.end())
107
return sorted([ item for item in ums ])
109
def test_const_unordered_multiset_insert_it(vals):
111
>>> test_const_unordered_multiset_insert_it([1,2,2,3, -1])
114
cdef multiset[int] ms = multiset[int]()
115
cdef unordered_multiset[int] ums = unordered_multiset[int]()
118
ums.insert(ms.cbegin(), ms.cend())
119
return sorted([ item for item in ums ])
121
def test_unordered_multiset_count(vals, to_find):
123
>>> test_unordered_multiset_count([1,2,2,3, -1], 1)
125
>>> test_unordered_multiset_count([1,2,2,3, -1], 2)
128
cdef unordered_multiset[int] ums = unordered_multiset[int]()
131
return ums.count(to_find)
133
def test_unordered_multiset_erase(vals, int to_remove):
135
>>> test_unordered_multiset_erase([1,2,2,3, -1], 1)
137
>>> test_unordered_multiset_erase([1,2,2,3, -1], 2) # removes both copies of 2
140
cdef unordered_multiset[int] ums = unordered_multiset[int]()
144
ret = ums.erase(to_remove)
145
return sorted([ item for item in ums ])
147
def test_unordered_multiset_find_erase(vals, to_remove):
149
>>> test_unordered_multiset_find_erase([1,2,2,3, -1], 1)
151
>>> test_unordered_multiset_find_erase([1,2,2,3, -1], 2) # removes a single copy of 2
154
cdef unordered_multiset[int] ums = unordered_multiset[int]()
155
cdef unordered_multiset[int].iterator it
158
it = ums.find(to_remove)
160
return sorted([ item for item in ums ])
163
def test_unordered_multiset_misc():
165
>>> test_unordered_multiset_misc()
167
cdef unordered_multiset[int] ms = unordered_multiset[int]()
169
assert ms.load_factor() > 0