| 209 | |
| 210 | |
| 211 | def test_map_iterator(): |
| 212 | sm = m.StringMap({"hi": "bye", "black": "white"}) |
| 213 | assert sm["hi"] == "bye" |
| 214 | assert len(sm) == 2 |
| 215 | assert sm["black"] == "white" |
| 216 | |
| 217 | with pytest.raises(KeyError): |
| 218 | assert sm["orange"] |
| 219 | sm["orange"] = "banana" |
| 220 | assert sm["orange"] == "banana" |
| 221 | |
| 222 | expected = {"hi": "bye", "black": "white", "orange": "banana"} |
| 223 | for k in sm: |
| 224 | assert sm[k] == expected[k] |
| 225 | for k, v in sm.items(): |
| 226 | assert v == expected[k] |
| 227 | assert list(sm.values()) == [expected[k] for k in sm] |
| 228 | |
| 229 | it = iter(m.StringMap({})) |
| 230 | for _ in range(3): # __next__ must continue to raise StopIteration |
| 231 | with pytest.raises(StopIteration): |
| 232 | next(it) |
| 233 | |
| 234 | |
| 235 | def test_python_iterator_in_cpp(): |