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

Method test_defaults

Lib/test/test_collections.py:350–398  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

348 self.assertRaises(TypeError, Point._make, [11, 22, 33]) # catch too many args
349
350 def test_defaults(self):
351 Point = namedtuple('Point', 'x y', defaults=(10, 20)) # 2 defaults
352 self.assertEqual(Point._field_defaults, {'x': 10, 'y': 20})
353 self.assertEqual(Point(1, 2), (1, 2))
354 self.assertEqual(Point(1), (1, 20))
355 self.assertEqual(Point(), (10, 20))
356
357 Point = namedtuple('Point', 'x y', defaults=(20,)) # 1 default
358 self.assertEqual(Point._field_defaults, {'y': 20})
359 self.assertEqual(Point(1, 2), (1, 2))
360 self.assertEqual(Point(1), (1, 20))
361
362 Point = namedtuple('Point', 'x y', defaults=()) # 0 defaults
363 self.assertEqual(Point._field_defaults, {})
364 self.assertEqual(Point(1, 2), (1, 2))
365 with self.assertRaises(TypeError):
366 Point(1)
367
368 with self.assertRaises(TypeError): # catch too few args
369 Point()
370 with self.assertRaises(TypeError): # catch too many args
371 Point(1, 2, 3)
372 with self.assertRaises(TypeError): # too many defaults
373 Point = namedtuple('Point', 'x y', defaults=(10, 20, 30))
374 with self.assertRaises(TypeError): # non-iterable defaults
375 Point = namedtuple('Point', 'x y', defaults=10)
376 with self.assertRaises(TypeError): # another non-iterable default
377 Point = namedtuple('Point', 'x y', defaults=False)
378
379 Point = namedtuple('Point', 'x y', defaults=None) # default is None
380 self.assertEqual(Point._field_defaults, {})
381 self.assertIsNone(Point.__new__.__defaults__, None)
382 self.assertEqual(Point(10, 20), (10, 20))
383 with self.assertRaises(TypeError): # catch too few args
384 Point(10)
385
386 Point = namedtuple('Point', 'x y', defaults=[10, 20]) # allow non-tuple iterable
387 self.assertEqual(Point._field_defaults, {'x': 10, 'y': 20})
388 self.assertEqual(Point.__new__.__defaults__, (10, 20))
389 self.assertEqual(Point(1, 2), (1, 2))
390 self.assertEqual(Point(1), (1, 20))
391 self.assertEqual(Point(), (10, 20))
392
393 Point = namedtuple('Point', 'x y', defaults=iter([10, 20])) # allow plain iterator
394 self.assertEqual(Point._field_defaults, {'x': 10, 'y': 20})
395 self.assertEqual(Point.__new__.__defaults__, (10, 20))
396 self.assertEqual(Point(1, 2), (1, 2))
397 self.assertEqual(Point(1), (1, 20))
398 self.assertEqual(Point(), (10, 20))
399
400 def test_readonly(self):
401 Point = namedtuple('Point', 'x y')

Callers

nothing calls this directly

Calls 5

namedtupleFunction · 0.90
assertIsNoneMethod · 0.80
PointClass · 0.70
assertEqualMethod · 0.45
assertRaisesMethod · 0.45

Tested by

no test coverage detected