MCPcopy Index your code
hub / github.com/python/cpython / test_default_factory

Method test_default_factory

Lib/test/test_dataclasses/__init__.py:1363–1418  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1361 self.assertEqual(c.shadowed, 30)
1362
1363 def test_default_factory(self):
1364 # Test a factory that returns a new list.
1365 @dataclass
1366 class C:
1367 x: int
1368 y: list = field(default_factory=list)
1369
1370 c0 = C(3)
1371 c1 = C(3)
1372 self.assertEqual(c0.x, 3)
1373 self.assertEqual(c0.y, [])
1374 self.assertEqual(c0, c1)
1375 self.assertIsNot(c0.y, c1.y)
1376 self.assertEqual(astuple(C(5, [1])), (5, [1]))
1377
1378 # Test a factory that returns a shared list.
1379 l = []
1380 @dataclass
1381 class C:
1382 x: int
1383 y: list = field(default_factory=lambda: l)
1384
1385 c0 = C(3)
1386 c1 = C(3)
1387 self.assertEqual(c0.x, 3)
1388 self.assertEqual(c0.y, [])
1389 self.assertEqual(c0, c1)
1390 self.assertIs(c0.y, c1.y)
1391 self.assertEqual(astuple(C(5, [1])), (5, [1]))
1392
1393 # Test various other field flags.
1394 # repr
1395 @dataclass
1396 class C:
1397 x: list = field(default_factory=list, repr=False)
1398 self.assertEqual(repr(C()), 'TestCase.test_default_factory.<locals>.C()')
1399 self.assertEqual(C().x, [])
1400
1401 # hash
1402 @dataclass(unsafe_hash=True)
1403 class C:
1404 x: list = field(default_factory=list, hash=False)
1405 self.assertEqual(astuple(C()), ([],))
1406 self.assertEqual(hash(C()), hash(()))
1407
1408 # init (see also test_default_factory_with_no_init)
1409 @dataclass
1410 class C:
1411 x: list = field(default_factory=list, init=False)
1412 self.assertEqual(astuple(C()), ([],))
1413
1414 # compare
1415 @dataclass
1416 class C:
1417 x: list = field(default_factory=list, compare=False)
1418 self.assertEqual(C(), C([1]))
1419
1420 def test_default_factory_with_no_init(self):

Callers

nothing calls this directly

Calls 5

assertEqualMethod · 0.95
assertIsNotMethod · 0.95
assertIsMethod · 0.95
astupleFunction · 0.85
CClass · 0.70

Tested by

no test coverage detected