(self)
| 194 | self.assertRaises(TypeError, collections.UserDict.update) |
| 195 | |
| 196 | def test_missing(self): |
| 197 | # Make sure UserDict doesn't have a __missing__ method |
| 198 | self.assertNotHasAttr(collections.UserDict, "__missing__") |
| 199 | # Test several cases: |
| 200 | # (D) subclass defines __missing__ method returning a value |
| 201 | # (E) subclass defines __missing__ method raising RuntimeError |
| 202 | # (F) subclass sets __missing__ instance variable (no effect) |
| 203 | # (G) subclass doesn't define __missing__ at all |
| 204 | class D(collections.UserDict): |
| 205 | def __missing__(self, key): |
| 206 | return 42 |
| 207 | d = D({1: 2, 3: 4}) |
| 208 | self.assertEqual(d[1], 2) |
| 209 | self.assertEqual(d[3], 4) |
| 210 | self.assertNotIn(2, d) |
| 211 | self.assertNotIn(2, d.keys()) |
| 212 | self.assertEqual(d[2], 42) |
| 213 | class E(collections.UserDict): |
| 214 | def __missing__(self, key): |
| 215 | raise RuntimeError(key) |
| 216 | e = E() |
| 217 | try: |
| 218 | e[42] |
| 219 | except RuntimeError as err: |
| 220 | self.assertEqual(err.args, (42,)) |
| 221 | else: |
| 222 | self.fail("e[42] didn't raise RuntimeError") |
| 223 | class F(collections.UserDict): |
| 224 | def __init__(self): |
| 225 | # An instance variable __missing__ should have no effect |
| 226 | self.__missing__ = lambda key: None |
| 227 | collections.UserDict.__init__(self) |
| 228 | f = F() |
| 229 | try: |
| 230 | f[42] |
| 231 | except KeyError as err: |
| 232 | self.assertEqual(err.args, (42,)) |
| 233 | else: |
| 234 | self.fail("f[42] didn't raise KeyError") |
| 235 | class G(collections.UserDict): |
| 236 | pass |
| 237 | g = G() |
| 238 | try: |
| 239 | g[42] |
| 240 | except KeyError as err: |
| 241 | self.assertEqual(err.args, (42,)) |
| 242 | else: |
| 243 | self.fail("g[42] didn't raise KeyError") |
| 244 | |
| 245 | test_repr_deep = mapping_tests.TestHashMappingProtocol.test_repr_deep |
| 246 |
nothing calls this directly
no test coverage detected