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

Method test_fromkeys

Lib/test/test_dict.py:336–409  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

334 })
335
336 def test_fromkeys(self):
337 self.assertEqual(dict.fromkeys('abc'), {'a':None, 'b':None, 'c':None})
338 d = {}
339 self.assertIsNot(d.fromkeys('abc'), d)
340 self.assertEqual(d.fromkeys('abc'), {'a':None, 'b':None, 'c':None})
341 self.assertEqual(d.fromkeys((4,5),0), {4:0, 5:0})
342 self.assertEqual(d.fromkeys([]), {})
343 def g():
344 yield 1
345 self.assertEqual(d.fromkeys(g()), {1:None})
346 self.assertRaises(TypeError, {}.fromkeys, 3)
347 class dictlike(dict): pass
348 self.assertEqual(dictlike.fromkeys('a'), {'a':None})
349 self.assertEqual(dictlike().fromkeys('a'), {'a':None})
350 self.assertIsInstance(dictlike.fromkeys('a'), dictlike)
351 self.assertIsInstance(dictlike().fromkeys('a'), dictlike)
352 class mydict(dict):
353 def __new__(cls):
354 return collections.UserDict()
355 ud = mydict.fromkeys('ab')
356 self.assertEqual(ud, {'a':None, 'b':None})
357 self.assertIsInstance(ud, collections.UserDict)
358 self.assertRaises(TypeError, dict.fromkeys)
359
360 class Exc(Exception): pass
361
362 class baddict1(dict):
363 def __init__(self):
364 raise Exc()
365
366 self.assertRaises(Exc, baddict1.fromkeys, [1])
367
368 class BadSeq(object):
369 def __iter__(self):
370 return self
371 def __next__(self):
372 raise Exc()
373
374 self.assertRaises(Exc, dict.fromkeys, BadSeq())
375
376 class baddict2(dict):
377 def __setitem__(self, key, value):
378 raise Exc()
379
380 self.assertRaises(Exc, baddict2.fromkeys, [1])
381
382 # test fast path for dictionary inputs
383 res = dict(zip(range(6), [0]*6))
384 d = dict(zip(range(6), range(6)))
385 self.assertEqual(dict.fromkeys(d, 0), res)
386 # test fast path for set inputs
387 d = set(range(6))
388 self.assertEqual(dict.fromkeys(d, 0), res)
389 # test slow path for other iterable inputs
390 d = list(range(6))
391 self.assertEqual(dict.fromkeys(d, 0), res)
392
393 # test fast path when object's constructor returns large non-empty dict

Callers

nothing calls this directly

Calls 12

setFunction · 0.85
listClass · 0.85
assertIsNotMethod · 0.80
assertIsInstanceMethod · 0.80
gFunction · 0.70
dictlikeClass · 0.70
BadSeqClass · 0.70
assertEqualMethod · 0.45
fromkeysMethod · 0.45
assertRaisesMethod · 0.45
copyMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected