MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_defaults

Method test_defaults

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

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 6

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

Tested by

no test coverage detected