| 209 | |
| 210 | |
| 211 | def test_noncopyable_containers(): |
| 212 | # std::vector |
| 213 | vnc = m.get_vnc(5) |
| 214 | for i in range(5): |
| 215 | assert vnc[i].value == i + 1 |
| 216 | |
| 217 | for i, j in enumerate(vnc, start=1): |
| 218 | assert j.value == i |
| 219 | |
| 220 | # std::deque |
| 221 | dnc = m.get_dnc(5) |
| 222 | for i in range(5): |
| 223 | assert dnc[i].value == i + 1 |
| 224 | |
| 225 | i = 1 |
| 226 | for j in dnc: |
| 227 | assert j.value == i |
| 228 | i += 1 |
| 229 | |
| 230 | # std::map |
| 231 | mnc = m.get_mnc(5) |
| 232 | for i in range(1, 6): |
| 233 | assert mnc[i].value == 10 * i |
| 234 | |
| 235 | vsum = 0 |
| 236 | for k, v in mnc.items(): |
| 237 | assert v.value == 10 * k |
| 238 | vsum += v.value |
| 239 | |
| 240 | assert vsum == 150 |
| 241 | |
| 242 | # std::unordered_map |
| 243 | mnc = m.get_umnc(5) |
| 244 | for i in range(1, 6): |
| 245 | assert mnc[i].value == 10 * i |
| 246 | |
| 247 | vsum = 0 |
| 248 | for k, v in mnc.items(): |
| 249 | assert v.value == 10 * k |
| 250 | vsum += v.value |
| 251 | |
| 252 | assert vsum == 150 |
| 253 | |
| 254 | # nested std::map<std::vector> |
| 255 | nvnc = m.get_nvnc(5) |
| 256 | for i in range(1, 6): |
| 257 | for j in range(5): |
| 258 | assert nvnc[i][j].value == j + 1 |
| 259 | |
| 260 | # Note: maps do not have .values() |
| 261 | for v in nvnc.values(): |
| 262 | for i, j in enumerate(v, start=1): |
| 263 | assert j.value == i |
| 264 | |
| 265 | # nested std::map<std::map> |
| 266 | nmnc = m.get_nmnc(5) |
| 267 | for i in range(1, 6): |
| 268 | for j in range(10, 60, 10): |